1

できるだけ具体的にしようと思います。

私はFFMPEGに適した.netラッパーを見つけるためにたくさん検索しましたが、最高のものはVBFFmpegラッパーでし

私はVB.netの使用が非常に苦手で、問題はこのライブラリをC#プロジェクトで使用したいのですが、見つけたサンプルプログラムをVB.netからC#に正しく変換できなかったことです。

それで、C#アプリケーションを編集したので、入力ビデオファイルのパスを一時的な.txtファイルに書き込みます。次に「コンバーター」(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ファイルは、どのメディアプレーヤーでも、スマートフォンやテレビでも機能しません。

..。

だから問題は何ですか ?!どうすればそれを解決できますか?ラッパーライブラリソースのいくつかの関数を変更するために多くのことを試みましたが、前に述べたように...私はただの初心者です@ VB.net:\

4

1 に答える 1

1

FFMpeg の進行状況を取得する最も簡単な方法は、コンソール出力を解析することです。そのための進行状況イベントを持つ、無料で使いやすい FFMpeg ラッパーVideo Converter .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");
于 2013-11-20T10:03:42.970 に答える