c ++ нарушение ffmpeg доступа - PullRequest
1 голос
/ 29 марта 2012

Что не так в этом коде? Это ломается (нарушение доступа) на 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 ]

4 голосов
/ 29 марта 2012

avformat_open_input не удается.

Используйте av_strerror, чтобы узнать, почему avformat_open_input не работает.Отрицательное значение, возвращаемое avformat_open_input, указывает на состояние ошибки.

1 голос
/ 29 марта 2012

Ваш код содержит ошибку - он вызывает av_find_stream_info, даже если avformat_open_input не удается.

-2, вероятно, -ENOENT - такого файла или каталога нет. Возможно, вы не в том каталоге. Возможно, имя файла 1.mp3, а не 1.MP3, а ваша файловая система чувствительна к регистру.

Но вы не можете отлаживать код, который не проверяет ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...