Como transferir o canal de áudio de um arquivo de vídeo MP4 para um arquivo de áudio separado?

Como transferir o canal de áudio de um arquivo de vídeo MP4 para um arquivo de áudio separado?

Tendo um videoclipe MPEG4 (contêiner MP4, vídeo H264 AVC, áudio AAC) baixado do YouTube, como separar seu canal de áudio em um arquivo de áudio independente (sem descompactar o áudio de preferência) com ferramentas gratuitas do Linux?

Responder1

Considerando os vídeos do Youtube, a extração do áudio do vídeo pode não ser necessária, pois ofaixas de áudio podem ser baixadas separadamentecomo tal, usando o Firefox com o complemento Flashgot mais recente ou usandomps-youtube(é uma ferramenta destinada a reproduzir e baixar faixas de áudio do youtube: maisaqui).


Considerando arquivos de vídeo mp4:

Conforme respondidoaqui, pode-se usar um comando mais genérico sem a necessidade dos nomes específicos dos arquivos, e adicioná-lo ao menu personalizado do Gerenciador de Arquivos, como:

ffmpeg -i "$0" -map 0:1 -c:a copy "${0%%.*}".m4a

(Usar .m4aé preferível, pois é mais amplamente suportado como um contêiner para .aac, mas você pode usar o bruto, .aacse desejar.)

Além disso, este comando executado em um terminal extrairá faixas de áudio de todos os arquivos mp4 na pasta atual:

for i in *.mp4; do ffmpeg -i "${i}" -map 0:1 -c:a copy "${i%.mp4}.m4a"; done

(aquia postagem de origem)


Veja comentários e informações relacionadas nas respostas vinculadas e perguntas sobre como usar tais comandos nos menus de contexto dos gerenciadores de arquivos.


Os comandos acima e outros semelhantes também podem ser usados ​​para extrair áudio de outros tipos de arquivos de vídeo, substituindo adequadamente as extensões de entrada e saída.

O primeiro comando também funciona como tal flv; mas para outros vídeos, basta substituir m4apelo áudio contido no videoclipe. O segundo comando precisa substituir as extensões de vídeo e áudio se aplicado a diferentes tipos de arquivos de vídeo.

Normalmente, os mp4arquivos flvcontêm aacáudio, Webmos arquivos contêm ogge avios arquivos contêm mp3áudio. Para ter certeza de qual áudio está contido no vídeo, use mediainfo:mediainfo-GUI, ou apenas instale mediainfoe no Terminal: mediainfo <file>.

Responder2

Se você sabe que existe apenas 1 fluxo de áudio e que existe aac, você só precisa disto:

ffmpeg -acodec copy -i "movie.mp4" -y "audio.aac"

Se você deseja criar um script do primeiro ID do fluxo de áudio e do tipo de codec/extensão de arquivo, você pode usar isto:

eval $(ffmpeg -i "movie.mp4" 2>&1 |awk '/Stream.*Audio/{print "stream=" $2 ";codec=" $4}' |head -n1)
stream=${stream:1}; stream=${stream/:/}
extn=${codec/,/}; [[ $extn == "aac" ]] || 
    { echo "You need to manually set the fiie extension. Codec type is: $codec"; exit 1; } 

ffmpeg -map $stream -acodec copy -i "movie.mp4" "audio.$extn"

informação relacionada