は保存されません。CMDバッチ変数は、私がWEBMへのMP4動画のフォルダを変換しますCMDのバッチスクリプトを持ってFFprobe出力
次のものが必要です。
- FFmpeg/FFprobeがインストールされ、CMDから実行のための環境変数に設定してください。
- mp4 for FFprobeが解析されるフォルダ。
それを容易にする、これはVideo Bitrate
変数を示す、スクリプトの最初の部分だけです。
完全なスクリプトですが、パスを置き換えてください。スクリプトのしくみ
https://pastebin.com/raw/3ng77Exz
:
- ループのすべての動画を通じてフォルダ
- にFFprobeは、ビデオのビットレートを解析し、
%V
と%vBitrate%
に保存します持っています。 - FFmpegは
%V
です。-b:v %V
などは、解析された値-b:v 9401k
になります。 - 私は変数に保存するFFprobeの出力を得ることができない問題
解析されたビットレートを使用してWEBMにMP4から各ビデオを変換します。私は回避策を考え出しました。最初にビットレートの値をtemp file
に保存してから、それを%vBitrate%
変数にインポートします。
例:(%V > tmp_vBitrate) & SET /p vBitrate= < tmp_vBitrate
。
作品
cd "C:\Users\Matt\Videos\" && for %f in (*.mp4) do ffprobe -i "C:\Users\Matt\Desktop\Test\%~f" -select_streams v:0 -show_entries stream=bit_rate -v quiet -of csv="p=0" & for /f "tokens=*" %V in ("ffprobe -i "%~f" -select_streams v:0 -show_entries stream=bit_rate -v quiet -of csv=p=0") do (echo) & (%V > tmp_vBitrate) & SET /p vBitrate= < tmp_vBitrate & del tmp_vBitrate & for /F %V in ('echo %vBitrate%') do (echo %V)
が機能しない一時ファイルの変数 メモリ変数
cd "C:\Users\Matt\Videos\" && for %f in (*.mp4) do ffprobe -i "C:\Users\Matt\Desktop\Test\%~f" -select_streams v:0 -show_entries stream=bit_rate -v quiet -of csv="p=0" & for /f "tokens=*" %V in ("ffprobe -i "%~f" -select_streams v:0 -show_entries stream=bit_rate -v quiet -of csv=p=0") do (echo) & SET vBitrate=%V & for /F %V in ('echo %vBitrate%') do (echo %V)
テストそれ
最初のコマンドを実行します。完了したら、CMDにecho %vBitrate%
と入力し、Enterキーを押します。最後に解析されたmp4ファイルのビットレートが表示されます。
2番目のコマンドでも同じ操作を行い、動作しないことがわかります。
ソリューション
私はTemp File Variable
を取り除くと、2番目のコマンドが動作するためにゲットしたいと思います。
(%V > tmp_vBitrate) & SET /p vBitrate= < tmp_vBitrate
からSET vBitrate=%V
までです。
多分、この全体を簡略化することはできますか?私は間違った変数を使用していますか?
[遅れ拡張](http://ss64.com/nt/delayedexpansion.html)を見てみましょう...そして、何 '%のV> tmp_vBitrate'を行うことになっていますか? '%'は反復されたファイルであると理解しています... 'for'ループ変数の場合、バッチファイル(' %% V 'のような)の '%' -signsを二倍にする必要があることに注意してください... – aschipfl
a [mcve]は腎臓の部位を参照しないでください。コマンドの出力を解析するには 'for/f'を使います。http://ss64.com/nt/for_cmd.htmlを見てください。[Frequent ffmpeg Q&A](https://stackoverflow.com/questions/tagged/ffmpeg? – LotPings
私は 'ffprobe'に慣れていませんが、' ffmpeg'がファイル解析をstderrにダンプすることがわかりました。あなたの 'probe'コマンドに' 2 ^> ^&1'を追加してみてください。 – rojo