Безошибочный способ определения кодека медиа-файла - PullRequest
2 голосов
/ 10 января 2010

Я ищу верный способ определения кодека, используемого в аудио- или видеофайле. В настоящее время я использую две вещи: расширение файла (очевидно) и тип mime, который определяется с помощью команды file -ib для файла.

Похоже, это меня не охватывает: множество форматов - это форматы-обертки, которые скрывают точный кодек, используемый внутри - например, файлы .ogg могут внутренне использовать Vorbis, Speex или FLAC кодеки. Их MIME-тип также обычно скрыт под «application / ogg» или аналогичным.

Программа `file ', по-видимому, может сказать мне, какой кодек используется, но возвращает это как понятную человеку прозу:

kb.ogg: Ogg data, Vorbis audio, stereo, 44100 Hz, ~0 bps

и как таковое изворотливо использовать программно.

По сути, я спрашиваю: существует ли сценарий (любой язык), который может пройти через эти форматы обертки и сказать мне, из чего состоит содержимое файла?

Ответы [ 2 ]

2 голосов
/ 10 января 2010

ffmpeg включает в себя библиотеку libavformat, которая может открывать и демультиплексировать практически любой медиаформат. Очевидно, что это больше, чем нужно на самом деле, но я не думаю, что вы можете найти что-то еще, столь же полное. Я использовал это сам с большим успехом. Взгляните на эту статью для ознакомления. Также есть привязки для этих библиотек для некоторых распространенных языков сценариев, таких как python .

(Если вы не хотите создавать что-либо с использованием библиотеки, вы, вероятно, можете использовать обычный двоичный файл ffmpeg.)

0 голосов
/ 10 января 2010

Вы всегда можете использовать свой собственный файл magic, скопированный и измененный из предварительно установленного файла magic, и изменить строку возврата так, чтобы она могла быть легко проанализирована вашей программой.

См:

...