Como demux audio e saber que tipo é?

1

Como decodificar o áudio e saber de que tipo é?

Quando colocar um áudio em um vídeo, ffmpeg, mencoder, etc, precisa saber qual é a codificação do áudio. O codificador geralmente usa a extensão do nome do arquivo como o "parâmetro". por exemplo. .aac

No entanto, quando o áudio a ser alterado está sendo desmembrado de outro vídeo, como posso determinar o tipo de codificação em um script?
O mais próximo que eu cheguei para encontrar essa informação mágica é pegar a string 4CC do codec (código de quatro caracteres), mas isso não é adequado. * (ATUALIZAÇÃO: Parece que este não é o código 4CC, e é na verdade a designação de mplayer de "família de codecs" .. listada via: mplayer -afm help

/usr/share/mplayer/midentify.sh $audio |sed -nr 's/^ID_AUDIO_CODEC=(.*)//p')"

Meu vídeo de saída usa um contêiner MP4, portanto, preciso saber qual formato é o áudio de entrada e transcodificar se necessário ... e, em qualquer caso, ele exige o codificador de áudio tipo , não o código gerado pelo comando acima.

Até mesmo o demuxing parece exigir conhecimento antecipado ou o tipo de codec!

Eu tentei um despejo genérico, usando mplayer -dumpaudio $audio , mas a saída não é reproduzida mesmo se eu adicionar manualmente o sufixo apropriado.

    
por Peter.O 23.12.2011 / 06:25

1 resposta

3

A melhor ferramenta de identificação de tipo de mídia de linha de comando que conheço é MediaInfo . Sua página de projeto mostra isso como um programa GUI do Windows, mas existem versões de linha de comando para as três principais plataformas. A saída da linha de comando é legível, mas é razoavelmente fácil de analisar a partir de uma linguagem como Perl.

A segunda melhor ferramenta desse tipo que eu conheço é ffprobe , parte do pacote ffmpeg . Sua saída é mais difícil de ler do que a do MediaInfo sem ser mais fácil de analisar. (Ambos exigem um analisador sensível ao contexto, por exemplo, porque fazem coisas como imprimir várias linhas de "codec", cada uma para os vários fluxos no mux.) O MediaInfo também publica informações mais detalhadas sobre os fluxos. / p>

Você pode preferir ffprobe de qualquer maneira, se já estiver usando ffmpeg , pois você o obterá gratuitamente quando instalar ffmpeg . Além disso, como eles são baseados no mesmo código, você pode ter certeza de que, se ffprobe puder fornecer informações úteis sobre o arquivo, ffmpeg poderá processá-lo.

    
por 23.12.2011 / 07:40