0

我正在编写一个 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

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

更新:该错误仅在我提供pInputFormatavformat_open_input. 如果我提供 NULL 我不会收到错误。但是对于我的应用程序,我必须提供此参数,因为 ffmpeg 无法仅从提要中确定视频格式。

4

2 回答 2

0

尝试:

AVFormatContext* pFormatCtx = avformat_alloc_context();

然后

avformat_free_context(pFormatCtx);

于 2013-08-22T15:35:47.267 回答
0

我通过添加--enable-memalign-hack到 ffmpeg 的配置标志来解决这个问题。我将问题缩小到:libavutil/mem.c其中包括为各种内存处理程序定义的一些预处理器定义,这导致我使用了该配置标志。

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

于 2013-08-22T22:10:34.897 回答