(C#/VB FFMPEG包装器)如何解析视频到音频转换的进度

本文关键字:音频 视频 转换 何解析 VB FFMPEG 包装 | 更新日期: 2023-09-27 17:57:41

我会尽可能地变得具体。

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

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

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

我的"转换器"代码:

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],上面的代码成功地做到了,但问题是当使用时:

MediaConverter.Video_Codec = MediaConverter.Vcodec_NONE

进度条不起作用,它的值仍然为0!&当我使用任何视频编解码器时,它都能完美地工作[进度条],但创建的MP3文件永远不会与任何媒体播放器一起工作,或者在Smartphone&电视。。等

那么,出了什么问题?!我该如何解决?我尝试了很多更改包装器库源代码中的一些函数,但正如我之前提到的。。。我只是一个新手@VB.net:''

(C#/VB FFMPEG包装器)如何解析视频到音频转换的进度

获取FFMpeg进度的最简单方法是解析其控制台输出。我写了一个免费且易于使用的FFMpeg包装视频转换器.NET,它有一个进度事件:

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");