Вывод ffmpeg для flac и wav отличается, почему?

Мне нужно разобрать вывод метаданных ffmpegs, но по какой-то причине он отличается между wav и flac файлом.

Флэк:

(int) 14 => '  Duration: 00:03:18.93, bitrate: 1045 kb/s',
(int) 15 => '    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16',

Wav:

(int) 13 => '  Duration: 00:00:15.00, bitrate: 1411 kb/s',
(int) 14 => '    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s',

Думаю, я тоже мог бы получить битрейт из строки длительности, но почему он отличается? И будут ли еще отличия в будущих релизах? Это действительно отстой, что нет лучшего способа получить информацию от ffmpeg, чем проанализировать его вывод. Есть идеи получше?

Вот весь мой вывод ffmpeg и результат анализа:

http://pastebin.com/4qJfzZNL


person floriank    schedule 08.06.2012    source источник


Ответы (2)


Наконец, я решил это, используя ffprobe, который поставляется с ffmpeg.

ffprobe -v quiet -show_streams -show_format -show_error -print_format <format> <file>

см. раздел для авторов документации о поддерживаемых форматах, я использовал json, но xml, csv и ini также поддерживаются.

person floriank    schedule 09.06.2012

Строка потока предоставляет разную информацию, поскольку каждый кодек имеет разные параметры. Вам нужно будет разобрать строку и, в зависимости от типа аудио, вам нужно будет понять те параметры, которые идут после нее.

Вы можете просто использовать битрейт в строке длительности, но это может ввести в заблуждение, если не знать, какой кодек используется.

person Rory Alsop    schedule 08.06.2012
comment
Итак, теоретически каждый формат может иметь другую структуру для потоковых данных? Я нашел ffprobe, он позволяет мне получить вывод в гораздо более удобном для анализа виде, но, пожалуйста, взгляните на строку 24 раздела потока pastebin.com/tSACMJ5N - person floriank; 08.06.2012
comment
Я могу попытаться посмотреть позже сегодня вечером, но я не могу получить доступ к pastebin с работы, извините. - person Rory Alsop; 08.06.2012
comment
Эй, спасибо за ваши усилия, но я, наконец, собираюсь использовать ffprobe, проверьте мой ответ, это может помочь или улучшить вашу работу. Это действительно упрощает анализ данных. - person floriank; 10.06.2012