Ffmpegを使用して、ビデオをH.264(High 4:4:4プロファイル)からH.264(メインプロファイル)に変換するにはどうすればよいですか?
このコマンドではできません:ffmpeg -i 1/25359.mp4 -profile:v main out.mp4
。
それはエラーを返します:
...
That'd return an error:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1/25359.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.40.101
Duration: 00:00:06.08, start: 0.000000, bitrate: 1059 kb/s
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 351x297, 1057 kb/s, 12.50 fps, 12.50 tbr, 12800 tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
x264 [error]: main profile doesn't support 4:4:4
[libx264 @ 0x8fa9640] Error setting profile main.
[libx264 @ 0x8fa9640] Possible profiles: baseline main high high10 high422 high444
Output #0, mp4, to '1/24545.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.40.101
Stream #0:0(und): Video: h264, none, q=2-31, 128 kb/s, 12.50 fps (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc56.60.100 libx264
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
ソースビデオにはフルサイズのクロマプレーンがあり(YUV444Pの後半2つの4で示されています)、メインプロファイルはそのフォーマットをサポートしていないため、YUV 4:2:0のようなピクセルフォーマットを選択する必要があります
ffmpeg -i 1/25359.mp4 -vf "scale=2*trunc(iw/2):-2,setsar=1" -profile:v main -pix_fmt yuv420p out.mp4
前者の答えは正しかったが、次の答えはまさに質問者が望んだものだったと思う。
ffmpeg -i 1/25359.mp4 -profile:v main -pix_fmt yuv420p out.mp4
-profile:v
:ビデオをエンコードするモードを意味します。いくつかのオプションがあります ここ-pix_fmt
:yuv420pは古い動画では問題ありませんでした。