フォルダーには複数のビデオがあります。
~/Downloads/movie1.mkv
~/Downloads/movie2.mkv
~/Downloads/movie3.mkv
各ファイルのビットレートを抽出し、データを単一のテキストファイルに出力するか、コピーしてテキストファイルに貼り付けることができる出力リストにしたいと思います。
Ffmpegをインストールしました。
したがって、たとえば、fffmpeg -i movie1.mkvの出力は次のとおりです。
Metadata:
encoder : libebml v1.2.0 + libmatroska v1.1.0
creation_time : 2011-04-09T18:18:05.000000Z
Duration: 00:04:27.71, start: 0.000000, bitrate: 10698 kb/s
Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x1038, SAR 1:1 DAR 320:173, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Metadata:
title : movie1
Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
Metadata:
title : DTS-ES 5.1 @ 1509 Kbps
Stream #0:2(eng): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
Metadata:
title : Commentary
Stream #0:3(eng): Subtitle: subrip
Stream #0:4(eng): Subtitle: subrip
「ビットレート:10698 kb/s」は、私がここで重要な部分です。
3つの映画すべてが同じビットレートを持っているふりをしましょう。
3つのビデオすべてからビットレート情報を抽出し、出力するようにします。
movie1.mkv 10698
movie2.mkv 10698
movie3.mkv 10698
この情報をまとめて抽出して出力するにはどうすればよいですか?
私は、ファイル名、ffmpeg、そして|で検索を組み合わせてみました。 grepに。例; find . -name "*.mkv" -exec ffmpeg -i "${1%.mkv}" | grep "bitrate:"
現在の試み;
1。コマンド; ffmpeg -i movie1.mkv 2>&1 | grepビットレート| sed 's/bitrate:(。*)、kb/\ 1/g'
返却値;
Duration: 00:04:27.71, start: 0.000000, bitrate: 10698 kb/s
2。コマンド;find . -name "*.mkv" -exec ffprobe -v error -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1 "${~/Downloads/1%.mkv}" ';
'
返却値
~/Downloads/1%.mkv: No such file or directory
~/Downloads/1%.mkv: No such file or directory
~/Downloads/1%.mkv: No such file or directory
私はここに近づいているように感じます。また、findの検索とffprobeへのfindの出力に何か問題があると感じています。
画面へ:
find . -name "*.mkv" -print0 | xargs -0 -i{} sh -c " echo -n '{} ' && ffmpeg -i '{}' 2>&1 | sed -n -e 's/^.*bitrate: //p' "
result.txtのファイルへ:
find . -name "*.mkv" -print0 | xargs -0 -i{} sh -c " echo -n '{} ' && ffmpeg -i '{}' 2>&1 | sed -n -e 's/^.*bitrate: //p' " > result.txt
ファイルresult.txtに表示されます。
somefile1.mkv 1788 kb/s
somefile2.mkv 1681 kb/s
...
フォーマットされた出力例:
find . -name "*.mkv" -print0 | xargs -0 -i{} sh -c " echo -n 'Filename: {}, Bitrate is: ' && ffmpeg -i '{}' 2>&1 | sed -n -e 's/^.*bitrate: //p' " > result.txt
ファイルresult.txtに表示されます。
Filename: somefile1.mkv, Bitrate is: 1788 kb/s
Filename: somefile2.mkv, Bitrate is: 1681 kb/s
...