所以我有一个yuv420p格式的原始视频- input.yuv
,我知道其帧大小。我执行2个命令:
ffmpeg -pix_fmt yuv420p -s 352x288 -i input.yuv -pix_fmt yuv422p input_yuv422p.yuv
进而
ffmpeg -pix_fmt yuv422p -s 352x288 -i input_yuv422p.yuv -pix_fmt yuv420p input_decoded.yuv
问题在于文件input.yuv
和input_decoded.yuv
不同。我的理解是,当我们yuv422p
从转换为yuv420p
-时,我们应该从本质上复制现有组件U
和V
组件以产生更多样本以进行填充;然后,当转换回来时-我们应该简单地删除这些样本,并接收回原始文件,但这不是我所看到的。我在这里做错什么了,可以yuv420p
拿回原件吗?
ffmpeg似乎在从420到422向上采样时执行一些插值,而从422到420向下采样时则执行抗锯齿-至少这是类似Matlab库的默认行为:mathworks.com/help/vision/ref/chromaresampling.html。看起来该库实际上具有实现简单复制/删除色度值的行为的选项,以防在原始yuv420p和“转换回”之间产生任何差异,以防万一有人需要它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句