当我执行以下代码时:

AVFrame tmp = frames_video1[k]; //AVFrame frames_video1[]
AVFrame *avf1 = &tmp;
AVFrameSideData* avfsd1=NULL;
if(avf1->side_data != NULL)
    printf("avf1->side_data is not NULL!!...........\n");
avfsd1 = av_frame_get_side_data(avf1, AV_FRAME_DATA_MOTION_VECTORS);

我在av_frame_get_side_data(avf1,av_frame_data_MOTION_VECTORS)处遇到分段错误:
avf1->side_data is not NULL!!...........
Segmentation fault (core dumped)

为什么?

最佳答案

以下是gdb的输出:

(gdb) print avf1->side_data->type
Cannot access memory at address 0x0

(gdb) print frames_video1[1]->side_data->type
Cannot access memory at address 0x0

令人惊讶的是,avf1指向一个side_data->type为空的损坏帧,这是异常的。问题的原因在别的地方。

09-25 17:42