我正在编写一个导出我已捕获的视频的应用程序(PAL SDI)。原始色彩空间是uyvy(4:2:2)。当我将带有swscale的帧转换为4:2:0并使用avcodec进行编码时,我会在字段之间出现颜色。我怀疑这是来自swscale没有意识到框架是隔行扫描的。以下是我导出的视频中bob-deinterlaced框架的一部分示例,其中显示了以下字段之一:
如您所见,颜色从另一个字段流出。我如何防止这种情况发生?我看过这个图书馆,并试图在swscale中找到任何告诉它尊重字段的东西,但我没有找到任何东西。
我将每个字段存储在单独的缓冲区中,因此我可以预先单独处理这些字段,如果这有用的话。
感谢您提供任何帮助!
此致 卡尔
编辑:基本上,我想要的是输出PAL DV。我怀疑swscale能够以某种方式产生这种类型的隔行扫描420,因为ffmpeg(应用程序)可以处理这个(我认为)。
答案 0 :(得分:3)
答案是做两个swscale操作,每个字段一个。您可以通过使用两倍步幅指定高度的一半来欺骗swscale以使用相同的缓冲区,然后将第二个操作偏移一行。
我终于从libav-user列表中得到了答案。示例代码可以在MPlayer / libmpcodecs / vf_scale.c和libavfilter / vf_scale.c中找到。