Недавно я попытался обновить библиотеки ffmpeg, которые я использую в своем приложении Mac OS X, загрузив и скомпилировав ffmpeg из исходного кода.
Мой код правильно работает с предварительно скомпилированные библиотеки той же версии для Windows. В Mac OS X кажется, что библиотека работает (она может открыть файл и найти используемые потоки и кодеки), но когда доходит до avcodec_find_decoder, эта функция всегда возвращает null.
Код работал со старой версией библиотека (скомпилирована год назад в Mac OS X 10.5)
Я настроил fmpeg, используя
./configure --extra-cflags="-arch i386" --extra-ldflags='-arch i386' --arch=x86_32 --target-os=darwin --enable-cross-compile --disable-indev=jack --enable-shared --disable-static
Я проверил config.mak, и, похоже, в нем включены декодеры для типов файлов, которые я пробовал (ogg, vorbis, avi, мкв, ...) Я также проверил, используются ли правильные файлы заголовков и используется ли недавно скомпилированная библиотека.
Я нашел только несколько более старых сообщений, касающихся этой проблемы, но без какого-либо решения:
http: //lists.mplayerhq .hu / pipermail / ffmpeg-devel / 2007-январь / 021399.html
http://libav-users.943685.n4.nabble.com/avcodec-find-decoder-problem-td944800.html
Править : проверяя дальше, оказывается, что av_codec_next (NULL) также возвращает null, что означает, что нет ни одного доступного кодека, или что first_avcodec в utils.c не установлен (я вообще не нашел, где эта переменная установлена , Я бы предположил av_register_all, но я не могу найти его там)