高品質のノンインターレース入力ビデオを、品質は低くても配信可能なH.264/MP4形式に変換したいと思います。出力にはいくつかの制約が必要です-特に:インターレース!
次のコマンドを試しました。ここで、mandelbrot
は高品質の入力の同義語です。
ffmpeg -hide_banner \
-t 10 -y \
-f lavfi \
-i anullsrc=r=48k:cl=stereo \
-f lavfi \
-i mandelbrot=r=50:size=1920x1080 \
-vf 'interlace=scan=tff:lowpass=complex,format=yuv420p' \
-codec:a aac \
-b:a 128k \
-aac_coder twoloop \
-codec:v libx264 \
-preset veryfast \
-tune animation \
-profile:v high \
-crf 35 \
-level 5.2 \
-x264opts interlaced=1 \
-shortest \
mandelbrot.mp4
私のffmpegはffmpeg version 3.4.2-2
です。
ただし、コマンドラインが正しいかどうかはわかりません。
libx264
は、それ自体ではインターレース入力を検出しません。 -x264opts interlaced=1
を挿入する必要があります。-flags +ilme+ildct
..について何かを教えてくれます.パラメータを確認できますか?どうもありがとうございました。
ついに私は素晴らしい結果を得ました
ffmpeg \
-y \
-hide_banner \
-i "${INPUT_FILE}" \
\
[... audio ...]\
\
-vf tinterlace=interleave_top,fieldorder=tff \
-crf 28 \
-preset placebo \
[... more video ...]\
-codec:v libx264 \
\
-f mp4 \
-flags +ildct+ilme \
[... more muxing ...]\
\
"${OUTPUT_FILE}"
ffmpeg経由のx264は、2つの方法でインターレースモードを設定できます。
1)プライベートパラメータ経由、つまり-x264opts
(または-x264-params
)interlaced=1
2)またはlibavcodec汎用フラグを介して-flags +ildct