此代码有什么问题?它在av_find_stream_info中破解(访问冲突)。在调试时,ctx-> filename是“3”而不是“1.MP3”:前4个字符被省略,也检查其他文件,结果相同。
av_register_all();
AVFormatContext *ctx=0;
ctx=avformat_alloc_context();
avformat_open_input(&ctx,"1.MP3",0,0);
av_find_stream_info(ctx);
int istream;
for(int i=0;i<ctx->nb_streams;i++){
if(ctx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO){
istream=i;
break;
}
答案 0 :(得分:4)
avformat_open_input
失败了。
使用av_strerror
找出avformat_open_input
失败的原因。 avformat_open_input
返回的负值表示错误情况。
答案 1 :(得分:1)
您的代码包含错误 - 即使av_find_stream_info
失败,它也会调用avformat_open_input
。
-2
可能是-ENOENT
- 没有这样的文件或目录。也许你在错误的目录中。文件名可能是1.mp3
,而不是1.MP3
,文件系统区分大小写。
但是你无法调试不检查错误的代码。