Функция avformat_open_input из библиотеки ffmpeg не может открыть файл

#visual-c #ffmpeg

#visual-c #ffmpeg

Вопрос:

Я пытался открыть файл из своего кода с помощью библиотеки ffmpeg. И avformat_open_input всегда получают сообщение об ошибке «Такого файла или каталога нет». Я пробовал разные файлы и каталоги, но результаты те же.

Я использую VS 2010 на Win7 и скомпилировал библиотеку lib и dll из http://ffmpeg.zeranoe.com/builds /

Немного моего кода.

 int decode_sound(const char * infile, const char * outfile) 
{
    AVFormatContext *pFormatCtx = 0;
    if((err = avformat_open_input(amp;pFormatCtx, infile, NULL, 0)) != 0)
       return 1;
}


int _tmain(int argc, _TCHAR* argv[])
{
    avcodec_register_all();

    cout << decode_sound("D:\DELTA.MPG", "D:\wav.wav") << endl;

    char errbuf[128];
    const char *errbuf_ptr = errbuf;
    if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
          strerror_s(errbuf, AVUNERROR(err));
    cout << err << endl << errbuf_ptr << endl;

    system("pause");
    return 0;
}
  

Ответ №1:

Я понимаю, что это своего рода старый вопрос, но это

 int _tmain(int argc, _TCHAR* argv[])
  

это ваша проблема. Windows передает расширенную строку символов, а вы преобразуете ее в строку символов, поэтому ffmpeg видит только первый байт из нее. Меняем это на

 int main(int argc, char* argv[])
  

Исправит это