私はVP9でiPhone 6を使って4kのビデオショットをエンコードしようとしています。参考FFmpeg - VP9エンコーディングに適切なビットレートを選択する
、Iは、エンコードしたいビデオのストリームデータ、ffprobe
介し:
Duration: 00:00:10.48, start: 0.000000, bitrate: 46047 kb/s
Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p(tv, bt709), 3840x2160, 45959 kb/s, 29.98 fps, 29.97 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2017-03-13T21:12:56.000000Z
handler_name : Core Media Data Handler
encoder : H.264
Stream #0:1(und): Audio: aac (LC) (mp4a/0x6134706D), 44100 Hz, mono, fltp, 79 kb/s (default)
Metadata:
creation_time : 2017-03-13T21:12:56.000000Z
handler_name : Core Media Data Handler
Iはthese instructionsに基づいて、次のFFmpegのコマンドを使用しています(Best Quality (Slowest) Recommended Settings
セクションを参照)。
ffmpeg -i INPUT.mov -c:v libvpx-vp9 -pass 1 -b:v 46000K -threads 4 -speed 4 -g 9999 -an -f webm -y /dev/null
ffmpeg -I INPUT.mov -c:v libvpx-vp9 -pass 2 -b:v 46000K -threads 4 -speed 0 -g 9999 -an -f webm OUTPUT.webm
た映像は、元から視覚的に区別がつかないように最適-b:v
値を選択するのベストプラクティスはありますか?私は36000Kから46000Kまでの範囲の値を試しましたが、これらの結果、大量のファイルが生成され、全体のビットレートが目標のビットレートを超えます。
ありがとうございます!
これは、CRF(一定品質)モードの目的です。 '-crf 20 -b:v 0'を使用します。2つのパスをスキップします。入力上の短いセグメントに異なるCRF値(0〜63)でテストします。十分に小さい出力と十分な出力を生成する値をヒットしたら、その値を使用します。 – Mulvya
@ Mulvyaのコメントの上にボーナスポイントがあります。他のエンコーダでは、1パスと2パスのCRFで同じ結果が得られるはずですが、これは残念なことにlibvpxの場合ではありません。 CRFをやっている... –