我正在尝试弄清楚如何使用yadif
/yadif-2x
和 ffmpeg 将 50i 源材料转换为 50p 输出,以保留每秒所有五十个场的运动。现在,我正在使用以下命令,它创建一个帧加倍版本,基本上与 25p 输出相同。
ffmpeg -i input.m2t -f:v yadif=1 -c:v prores output.mov
使用 可yadif=0
制作一个去隔行 25p 文件。使用 可yadif=1
制作一个去隔行 50p 文件,其中 25p 帧数增加一倍。我需要制作一个每秒有 50 个独特帧的去隔行文件,我非常确定这是可能的。yadif(2x) 应该这样做吗?
答案1
事实证明,我尝试双重去隔行的视频实际上是 25p,被编码成 50i 视频文件以符合较旧的 AVCHD 标准。显然,这是 2000 年代中后期无带摄像机的常见做法。所以当然,当我尝试去隔行时,我最终最多只能得到每秒 25 帧的原始源,因为场之间没有运动。
f:v yadif=1 的作用正如描述的那样 - 它使用运动加权 bob 算法将真正的隔行 50i 素材转换为惊人的高质量 50p 输出,就像 VLC 中的“yadif 2x”实时过滤器一样。输出的有效垂直分辨率几乎是帧丢弃去隔行的两倍。它现在是我最喜欢的视频过滤器之一,因为几乎没有其他东西可以提供此功能。
答案2
我使用了这个命令:
ffmpeg -i source_50i.MTS -aspect 1920:1080 -vf yadif=1,scale=1920:1080 -c:v libx264 -preset fast -profile:v high -crf 23 -ac 2 -strict experimental -c:a aac -b:a 96k -movflags +faststart -y result_50p.mp4
而且效果很好!
我没有检查 yadif 方法的质量好坏,但确实从摄像机源文件创建了 50i MTS 到 50p mp4。源文件为 19 MB,结果为 21MB。
答案3
我想很多人不明白 29.97 仅指阴极射线管返回扫描同一“像素”的频率。它仅在 1/60 秒之前位于相邻(上方或下方)“像素”处。
每次光栅扫描曝光时间为 1/60 秒。下一次扫描为下一个 1/60 秒。它们没有被保留;它们以每秒 60 次的速度发送,半分辨率光栅垂直拉伸以填满屏幕。通过交替进行奇数行和偶数行扫描,仅用一半的“带宽”即可实现全分辨率。
它总是每秒 60 个不同的光栅,而不是 30 个。
答案4
请理解——50i 表示 50 个场 = 25 个帧,每个帧包含 50 个交错场。您无法获得唯一的 50 帧。如果可能的话,这些帧会在视频帧中缺少交替行。因此 25p 是 50i 顶部 + 50i 底部的组合。这才是应该的,希望永远如此。否则结果可能是重复的帧(糟糕透顶),就像您得到的一样。