c ++ ffmpeg访问冲突

时间:2012-03-29 09:47:30

标签: c++ ffmpeg

此代码有什么问题?它在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;
}

2 个答案:

答案 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,文件系统区分大小写。

但是你无法调试不检查错误的代码。