maneira infalível de determinar o codec de um arquivo de mídia
Pergunta
Eu estou procurando uma maneira infalível de determinar o codec utilizado em um arquivo de áudio ou vídeo. As duas coisas que eu estou usando atualmente são a extensão do arquivo (óbvio), e o tipo de mime determinado executando `-ib arquivo' no arquivo.
Isto não me parece todos obter o caminho até lá: cargas de formatos são `invólucro 'formatos que escondem o codec exato usado dentro - por exemplo,' arquivos .ogg' pode usar internamente o Vorbis, Speex, ou codecs FLAC. Seu tipo de MIME também é geralmente escondido sob 'application / ogg' ou similar.
O programa `file' é aparentemente capaz de me dizer qual codec é usado, mas ele retorna isso como prosa legível:
kb.ogg: Ogg data, Vorbis audio, stereo, 44100 Hz, ~0 bps
e, como tal, é desonesto usar programaticamente.
O que eu estou essencialmente perguntando é: está lá um script lá fora (qualquer língua) que podem percorrer estes formatos de mensagens publicitárias e me diga o que a carne do arquivo é feita de ? p>
Solução
ffmpeg inclui uma biblioteca chamada libavformat que pode abrir e demux praticamente qualquer formato de mídia. Obviamente que é mais do que você realmente precisa, mas eu não acho que você pode encontrar qualquer outra coisa que é tão completa. Eu usei-me com grande sucesso. Dê uma olhada na este artigo para uma introdução. Há também ligações para estas bibliotecas para algumas linguagens de script comuns, como python .
(Se você não quiser construir algo usando a biblioteca, você provavelmente pode usar o binário ffmpeg regular.)
Outras dicas
Você sempre pode usar seu próprio arquivo magic
, copiado e modificado a partir do arquivo magic
pré-instalado, e alterar a seqüência de retorno para que ele possa ser facilmente analisado pelo seu programa.
Veja: