
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, .aac
se 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 m4a
pelo á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 mp4
arquivos flv
contêm aac
áudio, Webm
os arquivos contêm ogg
e avi
os arquivos contêm mp3
áudio. Para ter certeza de qual áudio está contido no vídeo, use mediainfo
:mediainfo-GUI, ou apenas instale mediainfo
e 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"