关于ffmpeg接口调用崩溃的问题

bomengwutao 2013-10-18 10:12:21
各位大家好

今天看了一个ffmpeg的例子,然后再网上下了一个libav的库。据说现在libav和ffmpeg基本相同。看代码也差不多。用MinGW-MSYS工具在windows下面编一个libav库(这个是在libav官网上下载的最新的)

具体代码:
const char* input = "D:\\MYWorkspace\\libavTots\\tsconverter\\Release\\test1.264";

AVInputFormat* ifmt = NULL;
AVOutputFormat* ofmt = NULL;
AVFormatContext* ic = NULL;
AVFormatContext* oc = NULL;

av_register_all();
avcodec_register_all();

char szError[256] = {0};
int nRet = avformat_open_input(&ic, input, ifmt, NULL);
if (nRet != 0)
{
av_strerror(nRet, szError, 256);
printf(szError);
printf("\n");
printf("Call avformat_open_input function failed!\n");
return 0;
}

if (avformat_find_stream_info(ic,NULL) < 0)
{
printf("Call av_find_stream_info function failed!\n");
return 0;
}
第一个函数avformat_open_input调用返回值0 成功,到第二个就崩溃了。不知是我版本的问题还是什么原因
求知道的给解释一下 谢谢
...全文
2322 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
thinking037 2014-12-23
  • 打赏
  • 举报
回复
库支持的格式,与要播放的格式不相符。
bomengwutao 2013-10-24
  • 打赏
  • 举报
回复
引用 12 楼 u010806377 的回复:
我这里有编译成功的。做了播放器,有需要可以交流Q:1049568282
哈哈公司不让上QQ啊 你的是怎么编译的?版本号能说下不啊 还有就是具体步骤。谢谢啊
bomengwutao 2013-10-23
  • 打赏
  • 举报
回复
引用 7 楼 dajjnan 的回复:
你看看编译出来的exe能不能运行,再写代码
感谢你的回答啊。 这个双击编译好的avconv.exe和avprobe.exe文件闪一下就没了。将一个264文件拖到avprobe.exe上的时就崩溃了 你是怎么运行的呢?
bomengwutao 2013-10-23
  • 打赏
  • 举报
回复
引用 8 楼 rightorwrong 的回复:
建议换个版本 我之前使用时,某个版本也有这个问题
感谢哥们的回答!这久了终于有人来了。我的编译方法很简单啊 就是下载安装了MinGW-MSYS,安装一下然后将yasm下载一下拷贝到C:\MinGW\bin里面了。 之后就是编译。命令是。 ./configure --enable-shared --disable-static --enable-memalign-hack 之后就能编译成功了。其他接口好像都能运行,就是这个不能。你编译的方式是啥呢,还有就是具体的版本号给我说下哈,感谢了
rightorwrong 2013-10-23
  • 打赏
  • 举报
回复
引用 9 楼 bomengwutao 的回复:
[quote=引用 8 楼 rightorwrong 的回复:] 建议换个版本 我之前使用时,某个版本也有这个问题
感谢哥们的回答!这久了终于有人来了。我的编译方法很简单啊 就是下载安装了MinGW-MSYS,安装一下然后将yasm下载一下拷贝到C:\MinGW\bin里面了。 之后就是编译。命令是。 ./configure --enable-shared --disable-static --enable-memalign-hack 之后就能编译成功了。其他接口好像都能运行,就是这个不能。你编译的方式是啥呢,还有就是具体的版本号给我说下哈,感谢了[/quote] 我是好久前才编译的,记得只用了h264,mpeg4,aac这几个。 重新遍其它版本试试
rightorwrong 2013-10-22
  • 打赏
  • 举报
回复
建议换个版本 我之前使用时,某个版本也有这个问题
freelancer_ex 2013-10-22
  • 打赏
  • 举报
回复
你看看编译出来的exe能不能运行,再写代码
bomengwutao 2013-10-22
  • 打赏
  • 举报
回复
在官网上下载了一个编译好的库可以运行!难道是我半一有问题?
bomengwutao 2013-10-21
  • 打赏
  • 举报
回复
经过几天的分析,发现是在avformat_find_stream_info的函数中调用了try_decode_frame函数,try_decode_frame函数调用了avcodec_decode_video2函数。在这个地方崩溃的 最终的地方是调用DSPContext的clear_block函数和clear_blocks函数崩溃的 哪位知道的给我解决下哦 。不胜感激啊。
bomengwutao 2013-10-18
  • 打赏
  • 举报
回复
引用 3 楼 max_min_ 的回复:
avformat_open_input函数只是读文件头,并不会填充流信息, avformat_find_stream_info才是获取文件中的流信息, 所以按照你说的Linux下可以,windows下不可以,是不是packet有问题呢? 这个packet才是后面解码需要的!
感谢你的回答啊,这个还没到packet是在avformat_find_stream_info函数里面崩溃的。网上也有提到新版的这个接口会有问题。一个是参数要初始化,我的这个也设置味NULL。还有一种是说没有注册demuxer,后来我编译的时候加上了--enable-demuxers。这样对不了?感觉第二种的可能性大一点 就是不知道我编译的对不
max_min_ 2013-10-18
  • 打赏
  • 举报
回复
avformat_open_input函数只是读文件头,并不会填充流信息, avformat_find_stream_info才是获取文件中的流信息, 所以按照你说的Linux下可以,windows下不可以,是不是packet有问题呢? 这个packet才是后面解码需要的!
bomengwutao 2013-10-18
  • 打赏
  • 举报
回复
感觉可能是我编译的有问题 ,在linux下编译运行都没问题。在windows下面我是用MinGW-MSYS ./configure --enable-shared --disable-static --enable-memalign-hack编译的动态库。那个ffmpeg-1.0.1版本的运行可以 但是其他的都不行如ffmpeg-2.0.2和libav 求指导啊
bomengwutao 2013-10-18
  • 打赏
  • 举报
回复
哎 是不是研究这个的很少啊

2,541

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧