FFmpegでYouTube向けにエンコードしたい場合は
$ ffmpeg -i input.avi -c:v libx264 -preset slow -crf 18 -c:a copy -pix_fmt yuv420p output.mkv
のようなコマンドでエンコードできます。
ポイントは-pix_fmt yuv420p
の部分だと思います。-pix_fmt yuv420p
のオプションを消してエンコードするとChroma subsamplingが4:4:4
になるみたいです。ローカルPCでは正常に再生できますが、アップロードすると映像が乱れる場合があるようです。(YouTube以外でも動画アップロードに対応しているWebサービスでは-pix_fmt yuv420p
のオプションを付けておいた方が良いみたいです。)
オプションについての簡単な説明
-c:v libx264
は動画をx264でエンコードするという設定です。出力するファイルをoutput.mkv
の代わりにoutput.mp4
にする場合は、デフォルトでx264でエンコードの設定になるので省略できます。
-preset slow
はエンコード速度に関する設定です。エンコードに時間を掛けてでも圧縮率を上げてファイルサイズを減らしたい場合はslow
/slower
/veryslow
を使います。逆に少しでも短時間でエンコードを終わらせたい場合はmedium
/fast
/faster
/veryfast
を使います。
-crf 18
の部分は動画のクオリティに関する部分になっています。画質を落としてでもファイルサイズを減らしたい場合は18
より大きな値を設定します。逆に、ファイルサイズを増やして画質を上げたい場合は18
より小さな値を設定します。
-c:a copy
はオーディオについては再エンコードしないという設定です。AACで再エンコードしたい場合は-c:a aac -b:a 192k
のような感じで設定します。(192k
はオーディオのビットレートです。)
リンク
Encode/YouTube – FFmpeg
https://trac.ffmpeg.org/wiki/Encode/YouTube