为什么av_write_trailer会失败?

时间:2013-05-13 03:09:25

标签: ffmpeg video-processing

我正在处理视频文件。 我使用ffmpeg来读取每个数据包。

如果是音频数据包,我会使用av_interleaved_write_frame将数据包写入输出视频文件。

如果是视频数据包,我会解码数据包,获取视频帧的数据,处理图像,然后压缩回数据包。然后,我使用av_interleaved_write_frame将处理后的视频帧数据包写入输出视频文件。

通过调试,它可以正确读取音频数据包和视频数据包。 但是,当它转到“av_write_trailer”时,它会退出。但输出视频文件存在。

错误信息是:

*** glibc detected *** /OpenCV_videoFlatten_20130507/Debug/OpenCV_videoFlatten_20130507: corrupted double-linked list: 0x000000000348dfa0 ***

使用Movie Player(在Ubuntu中),输出视频文件可以正确播放音频,但没有视频信号。 使用VLC播放器,它可以显示第一个视频帧(保持相同的视频图像),并正确播放音频。

我尝试调试到“av_write_trailer”,但由于它在ffmpeg库中,我无法获得详细信息有什么不对。

另一条信息:该项目的先前版本仅处理视频帧,而不添加音频流;它运作良好。

任何提示或线索?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。我没有使用rescale来设置基于流的time_base的pts。实际上相关代码在示例muxing.c中。