1

cmd ウィンドウで実行された FFmpeg プロセスの最後の行を読み取ることができます。このソースでは、スクリプト ホスト モデル オブジェクト参照を使用します。

Private Sub Command1_Click()
    Dim oExec       As WshExec
    Dim sRow        As String

    With New WshShell
        Set oExec = .Exec("ffmpeg.exe")
    End With
    Do While oExec.Status = WshRunning
        sRow = oExec.StdOut.ReadLine
    Loop
End Sub

ラインはこんな感じ。これは、コマンド ウィンドウ (一番下) の最後の行です。

frame= 2816 fps=667 q=11.0 Lsize= 13036kB time=187.66 bitrate= 569.1kbits/s

私のvb 6.0アプリでプログレスバーを作成するために時間の一部をカットしました。しかし、cmd プロセスでは、値 13 が存在し、この値は Total duration と呼ばれます。しかし、私はこの行を読むことができません.ffmpegのcmdウィンドウの最後の行から13行上にあるこの行を読むためのコードまたはアイデアを誰かが持っています...

4

1 に答える 1

0

私はJavaでこれを自分で行いました。time=問題は、ステータス更新行 (上記の部分文字列で引用したように) が LF (ライン フィード) ではなく CR (キャリッジ リターン) で終了していることだと思います。私の直感によると、ReadLine は完全な CRLF を探しています。したがって、これを行うには、次のことを行う必要があります。

  • CR、LF、CRLF の違いと、それぞれの ASCII コードを理解する
  • 出力ストリームを文字単位で読み取り、CR で終了する行を作成してから、トークンtime=Durration=トークンを解析します。

コード内にデバッグ用の print ステートメントがあり、その出力を表示してくれると、あなたと私たちの両方に役立ちます。

于 2010-01-21T08:30:08.650 に答える