ffmpegでファイルサイズを制限する方法


10

60秒の長さのビデオを、ターゲットサイズまたは最大サイズ10 MBにエンコードしたいと考えています。

私が知っている2つのアプローチがあります。1つはFFMPEG-Wikiで説明され、もう1つはドキュメントで見つかりました。残念ながら、どの方法をいつ使用するかについての説明はありません。

これらの方法のいずれかが推奨されますか?そうでない場合、各メソッドの利点/欠点は何ですか?

1)ffmpeg-wikiで説明されているように、ビデオの長さに合わせてビットレートを計算および設定します

(10 MB * 8192 [MBをキロビットに変換])/ 60秒=〜1365 kbits / s総ビットレート1365k-128k(必要なオーディオビットレート)= 1237kビデオビットレート

ffmpeg -y -i input -c:v copy -preset medium -b:v 1237k -pass 1 -c:a copy -b:a 128k -f mp4 /dev/null && \
ffmpeg -i input -c:v libx264 -preset medium -b:v 1237k -pass 2 -c:a libfdk_aac -b:a 128k output.mp4

2)-fs パラメーターを使用して、ffmpegにそれを理解させます

ffmpeg -i input -c:v copy -c:a copy -preset medium -crf 23 -fs 10485760 output.mp4

1
あなたの第1の例では、最初のステップはまた、使用する必要がありますlibx264ようにc:v。このfs例では、-c:v copyが使用されているため、ビデオをトランスコードしていません。だから、presetcrfも何の効果もありません。
Gyan、2015

これは私にとって役に立ちました:stackoverflow.com/a/34547102/470749
Ryan

回答:


11

fsそれは、その値をヒット一度パラメータは、エンコードを停止します。したがって、10MB15秒をエンコードしているときに出力がマークに達した場合、それが出力ファイルの期間になります。

ファイル全体がエンコードされていることを確認したいが、設定されたターゲットサイズを超えない場合は、ビットレートメソッドを使用してください。多重化オーバーヘッドやその他のデータをターゲットサイズ内に収めるために、ビデオのビットレートをわずか1〜2%低く設定します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.