video
  • command-line
  • cmd
  • ffmpeg
  • 2016-10-18 8 views 1 likes 
    1

    "enable = 'between(t、0,0)"フィールドでビデオのデュレーションを使用して、ビデオの1/3にオーバーレイするようにしました。継続時間。FFMPEG - 変数としてFFPROBEの期間出力を保存

    が自分のサイト上のFFMPEGの情報によると、私はそれが値を返さないが、私は、使用可能な変数に設定することができるように見えることはできません。この

    ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4 
    

    を使用する必要がある、私はすでにでてみました

    set duration=ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4 
    

    そして、%duration%で参照していますが運がありません。

    これを行う方法はありますか?間違っていますか?

    ありがとうございました。

    +0

    ['FOR/F'ループコマンド:別のコマンドの結果に対して]試してください。](http://ss64.com/nt/for_cmd.html) – JosefZ

    答えて

    3

    コンソールアプリケーションの出力処理用に設計されたコマンドは、FORです。

    ffprobeの出力をキャプチャして環境変数に割り当てるには、以下のようなバッチコードを使用できます。

    @echo off 
    setlocal 
    if not exist input.mp4 goto :EOF 
    for /F "delims=" %%I in ('ffprobe.exe -v error -show_entries format^=duration -of default^=noprint_wrappers^=1:nokey^=1 input.mp4 2^>^&1') do set "duration=%%I" 
    echo Duration is: %duration% 
    endlocal 
    

    オプション/Fとのコマンドは、その出力STDOUTに書き込まれた行ずつ処理されるべき実行するコマンドとして'で囲まれた文字列を解釈します。

    /Fの後に二重引用符で囲まれたオプションdelims=は、キャプチャされた行をスペースと水平タブを文字列セパレータとして使用して複数のトークン(文字列)に分割することを無効にします。 "delims="は、コマンドラインにffprobeの出力には必要ない可能性が高いです。しかし、ffprobeがインストールされておらず、出力された質問には投稿されませんでした。

    2>&1 FOR によって処理されるSTDOUTを処理するためにSTDERRに書き込まれた出力をリダイレクトします。オペレータ>&^からエスケープして実行時にこのリダイレクションを適用するには、fxproffprobe のコマンドラインですでにリダイレクションを解釈していないと解釈する必要があります。マイクロソフトの記事Using command redirection operatorsを参照してください。またSTDOUTSTDERRのこのリダイレクトはffprobe への正しい使用法の出力要求された情報STDOUTとして、ここで必要に応じて最も可能性が高いではありません。

    ffprobeの引数リストの各等号は、プロセスを指揮するために、正しい渡される^でエスケープしなければならないコマンドを実行するための FOR によって隠され始めました。

    使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。

    • echo /?
    • endlocal /?
    • for /?
    • goto /?
    • if /?
    • set /?
    • setlocal /?
    関連する問題