ffmpeg:如何创建隔行扫描的 h.264 视频?

Tho*_* R. 6 h.264 ffmpeg x264 video-encoding

我想将高质量非隔行输入视频转换为质量较低但可分发范围更广的 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
Run Code Online (Sandbox Code Playgroud)

我的 ffmpeg 是ffmpeg version 3.4.2-2.

但是,我不确定命令行是否正确。

  • libx264本身不检测隔行输入。我必须插入-x264opts interlaced=1.
  • 其他常见问题解答讲述了一些关于-flags +ilme+ildct...

你能确认一下我的参数吗?非常感谢。

Gya*_*yan 5

x264 via ffmpeg 可以通过两种方式设置隔行扫描模式:

1) 通过私有参数 ie -x264opts(或-x264-params)interlaced=1

2) 或通过 libavcodec 通用标志,-flags +ildct


Tho*_* R. 5

最后我得到了优异的成绩

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}"
Run Code Online (Sandbox Code Playgroud)