我想将高质量的非隔行输入视频转换为质量较低但更广泛可分发的 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
...的事情
你能确认我的参数吗?非常感谢。
答案1
x264通过ffmpeg可以通过两种方式设置隔行模式:
1)通过私有参数 ie -x264opts
(或-x264-params
)interlaced=1
2)或者通过 libavcodec 通用标志,-flags +ildct
答案2
最后我得到了优异的成绩
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}"