打开视频流时,Malloc Check失败

时间:2013-08-22 15:24:56

标签: c ffmpeg blackberry-10 x264 qnx

我正在编写一个BlackBerry 10应用程序,它使用ffmpeg和libx264解码H264视频流(来自Parrot AR Drone)。这些库都是为BlackBerry QNX编译的。

这是我的代码:

av_register_all();
avcodec_register_all();
avformat_network_init();

printf("AV setup complete\n");

const char* drone_addr = "http://192.168.1.1:5555";
AVFormatContext* pFormatCtx = NULL;
AVInputFormat* pInputFormat = av_find_input_format("H264");

printf("Opening video feed from drone\n");

//THIS LINE FAILS 
int result = avformat_open_input(&pFormatCtx, drone_addr, pInputFormat, NULL); 

最后一行失败并显示错误:

Malloc Check Failed: :../../dlist.c:1168

如何修复此错误或进一步调试?

更新:仅当我向pInputFormat提供avformat_open_input时才会出现错误。如果我提供NULL,我不会收到错误。但对于我的应用程序,我必须提供此参数,因为ffmpeg无法仅从Feed中确定视频格式。

2 个答案:

答案 0 :(得分:0)

尝试:

AVFormatContext * pFormatCtx = avformat_alloc_context();

然后

avformat_free_context(pFormatCtx);

答案 1 :(得分:0)

我通过将--enable-memalign-hack添加到ffmpeg的configure标志来修复此问题。我将问题缩小到:libavutil/mem.c,其中包括一些针对各种内存处理程序的预处理程序定义,这使我进入了配置标志。

不确定这是否是正确的解决方案,或者我是否为以后的问题做好准备。看起来其他人在这里遇到过类似的问题:http://ffmpeg.org/pipermail/ffmpeg-devel/2013-February/138634.html