Video ffmpeg中的去隔行

Video ffmpeg中的去隔行,video,ffmpeg,video-processing,Video,Ffmpeg,Video Processing,我按照教程将视频文件加载到C程序中。但是帧并没有被逐行排列 从我所看到的,ffmpeg可执行文件支持去隔行切换。如何在代码中执行此操作?我应该阅读哪些库/函数?您必须手动调用avpicture\u deinterlace来解交错每个解码帧。可以找到函数定义。它基本上是这样的(使用本教程第一页中的变量): 请记住,您必须通过创建自己的缓冲区并调用avcodec\u alloc\u frame和avpicture\u fill来初始化pDiFrame,与本教程中初始化pFrameRGB的方式类似,只

我按照教程将视频文件加载到C程序中。但是帧并没有被逐行排列


从我所看到的,ffmpeg可执行文件支持去隔行切换。如何在代码中执行此操作?我应该阅读哪些库/函数?

您必须手动调用
avpicture\u deinterlace
来解交错每个解码帧。可以找到函数定义。它基本上是这样的(使用本教程第一页中的变量):

请记住,您必须通过创建自己的缓冲区并调用
avcodec\u alloc\u frame
avpicture\u fill
来初始化
pDiFrame
,与本教程中初始化
pFrameRGB
的方式类似,只有这一次像素格式将是解码帧的格式(
pCodecCtx->pix\u fmt
),不是24位RGB

解交错后,可以执行从解交错帧到RGB的转换,如教程中所示

avcodec_decode_video(pCodecCtx, pFrame, &frameFinished,
                     packet.data, packet.size);

if(frameFinished) {
    avpicture_deinterlace((AVPicture*)pDiFrame, 
                          (const AVPicture*)pFrame, 
                          pCodecCtx->pix_fmt, 
                          width, 
                          height);
     . 
     . 
     .
 }