Находясь на сервере Ubuntu 10.04, я установил пакеты ffmpeg с помощью apt. После этого ffmpeg работает и работает как надо. Почти.
Для тестирования я загрузил несколько аудиофайлов. Один из них, файл aif, неправильно интерпретируется. На моей рабочей лошадке (Mac SnowLeopard) ffmpeg сообщает формат как
Stream #0.0: Audio: pcm_s24be, 44100 Hz, 2 channels, s32, 2116 kb/s
мой сервер Ubuntu говорит, что это:
Stream #0.0: Audio: pcm_s24be, 44100 Hz, stereo, s16, 2116 kb/s
что неверная битовая глубина. Затем Ubuntu не может преобразовать файл с сообщением об ошибке.
[pcm_s24be @ 0xcd4b580]invalid PCM packet
Error while decoding stream #0.0
что, конечно, не так. Файл совершенно правильный.
Есть ли какие-нибудь известные проблемы для ffmpeg при интерпретации формата aif? Как я могу узнать, какая версия aif-кодека ffmpeg использует? Есть идеи, как подойти к этому вопросу?
Вывод ffprobe:
FFprobe version SVN-r20090707, Copyright (c) 2007-2009 Stefano Sabatini
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
built on Jan 20 2010 00:13:01, gcc: 4.4.3 20100116 (prerelease)
Input #0, aiff, from 'testfile.aif':
Duration: 00:00:04.00, start: 0.000000, bitrate: 2117 kb/s
Stream #0.0: Audio: pcm_s24be, 44100 Hz, stereo, s16, 2116 kb/s
обновление 2: принудительное преобразование с помощью -sample_fmt s32 ничего не меняет.
Странная вещь: даже без использования -sample_fmt s32 я просто понял, что преобразование работает и создает допустимые аудиофайлы. Просто есть сообщение об ошибке сверху.
Да, это так. Согласно информации из группы пользователей ffmpeg, между разработчиками ffmpeg и libav продолжается «война». И кто-то из команды разработчиков Ubuntu, похоже, встал на сторону libav, предоставив намеренно сломанные пакеты для ffmpeg.
Не знаю, правда ли это, но, по крайней мере, я знаю, что установка ffmpeg с использованием apt не работает, в то время как сборка из исходников работает.
Краткое содержание темы можно найти здесь:
http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html
все, хотя это просто сторона истории ffmpeg.