首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >( C# / video )如何解析视频转音频的进度?

( C# / video )如何解析视频转音频的进度?
EN

Stack Overflow用户
提问于 2013-02-06 01:26:00
回答 1查看 4.7K关注 0票数 1

我会尽我所能做到具体。

为了找到一个好的.net包装器,我搜索了很多,最好的是VB FFmpeg Wrapper

我非常不擅长使用VB.net,问题是我想在C#项目中使用这个库,但是我无法正确地将我找到的示例程序从VB.net转换为C#。

因此,我已经编辑了我的C#应用程序,以便它将输入视频文件路径写入一个临时.txt文件。然后运行"Converter“(它是用VB编写的)!

我的"Converter“代码:

代码语言:javascript
复制
Imports System
Imports System.IO

Public Class Form1
    Public WithEvents MediaConverter As New FFLib.Encoder

    Private Sub ConOut(ByVal prog As String, ByVal tl As String) Handles MediaConverter.Progress
        OperationPrgrss.Value = prog
        Application.DoEvents()
    End Sub

    Private Sub stat(ByVal status) Handles MediaConverter.Status
        StatusLbl.Text = status
        Application.DoEvents()
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            Using PathFinder As New StreamReader("_temp.txt")
                Dim SrcPath As String
                SrcPath = PathFinder.ReadLine()
                PathTxtBox.Text = SrcPath
            End Using
        Catch ex As Exception
            MessageBox.Show("The file couldn't be read : " & Environment.NewLine & ex.Message)
        End Try
    End Sub


    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        MediaGenerator.RunWorkerAsync()
    End Sub

    Private Sub MediaGenerator_DoWork(sender As Object, e As ComponentModel.DoWorkEventArgs) Handles MediaGenerator.DoWork
        MediaConverter.OverWrite = False
        MediaConverter.SourceFile = PathTxtBox.Text
        MediaConverter.Format = MediaConverter.Format_MP3
        MediaConverter.AudioCodec = MediaConverter.AudioCodec_mp3
        MediaConverter.Video_Codec = MediaConverter.Vcodec_NONE

        MediaConverter.Threads = 0
        MediaConverter.OverWrite = True

        Dim OutputFldr As String = AppDomain.CurrentDomain.BaseDirectory & "MP3Files\\"
        MediaConverter.OutputPath = OutputFldr
        MediaConverter.AnalyzeFile()

        MediaConverter.Encode()
    End Sub
End Class

我正在尝试做的是转换视频文件,有时它是WEBM,FLV,MP4或3GP,上面的代码成功地完成了转换,但问题是当使用:

代码语言:javascript
复制
MediaConverter.Video_Codec = MediaConverter.Vcodec_NONE

进度条不起作用,它的值仍然是0!&当我使用任何视频编解码器时,它都能完美地起到进度条的作用,但创建的MP3文件在任何媒体播放器或智能手机和电视中都不起作用。等;

..。

那么,有什么问题呢?!我怎么才能解决它呢?我尝试了很多更改包装库源代码中的一些函数,但正如我之前提到的那样……我只是个新手@ VB.net :\

EN

回答 1

Stack Overflow用户

发布于 2013-11-20 18:03:43

获取FFMpeg进度的最简单方法是解析其控制台输出。我已经编写了免费且易于使用的FFMpeg包装器Video Converter .NET,它具有相应的进度事件:

代码语言:javascript
复制
var conv = new NReco.VideoConverter.FFMpegConverter();
conv.ConvertProgress += (o, args) => {
    Console.WriteLine( String.Format("Progress: {0} / {1}\r\n", args.Processed, args.TotalDuration );
};
conv.ConvertMedia(inputFile1, outFile, "flv");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14713323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档