FFmpeg: criando dois ou mais arquivos de saída simultaneamente

Publicado por Luís Fernando C. Cavalheiro em 17/06/2016

[ Hits: 4.659 ]

Blog: https://github.com/lcavalheiro/

 


FFmpeg: criando dois ou mais arquivos de saída simultaneamente



Pessoas e meninos do computador do Viva o Linux, aqui começa mais uma Dica do Dino® trazendo para todos vocês informações fresquinhas sobre as novidades da semana passada. Na esteira de minha dica sobre como fazer screencast usando o FFmpeg, eu trago um novo truque maneiro: como usar as mesmas entradas de mídia para gerar dois ou mais arquivos simultaneamente. Imagine, por exemplo, que você tem um vídeo em formato .mkv e quer ao mesmo tempo convertê-lo para o formato .mp4 e gravar apenas o áudio dele no formato .mp3. Com o FFmpeg você pode fazer isso tudo com um único comando! Gostou? Então vamos aprender como fazer?

Imagine, por exemplo, que eu quero fazer o screencast do meu desktop, como ensinado na Dica do Dino® anterior, mas ao mesmo tempo eu quero gerar um arquivo .mp4, um arquivo .mkv e um arquivo .mp3. Vamos a um exemplo:

ffmpeg \
-f x11grab -video_size 1366x768 -framerate 60 -i :0.0 \
-f pulse -ac 1 -i alsa_output.pci-0000_00_14.2.analog-stereo.monitor \
-f pulse -ac 1 -i alsa_input.pci-0000_00_14.2.analog-stereo.echo-cancel \
-filter_complex " \
[1:a][2:a]amix=inputs=2:duration=shortest[a]" -map 0 -map "[a]" \
-vcodec libx264 -tune film -acodec aac -strict experimental -b:v 320k -b:a 192k -pix_fmt yuv420p -shortest -vf scale=640:360 arquivo.mp4 \
-vcodec libx264 -tune film -acodec aac -strict experimental -b:v 0 -b:a 0 -pix_fmt yuv420p -shortest -vf scale=1366:768 arquivo.mkv \
-acodec libmp3lame -qscale:a 0 -vn arquivo.mp3


Todos os parâmetros com exceção do -qscale:a e do -vn não são novidades aqui. O codec de áudio libmp3lame é o codec externo ao FFmpeg para criar arquivos .mp3 (lembrem-se que o FFmpeg não tem nenhum codec interno para lidar com .mp3), o -qscale:a determina a qualidade da codificação (para entender como usar o qscale com um arquivo .mp3, leia a documentação pertinente do FFmpeg, e o -vn diz para não incluir vídeo no arquivo final.

Como vocês podem ver, para criar mais de um arquivo de saída simultaneamente basta incluir os codecs que esse arquivo irá usar e dar um nome para ele. O FFmpeg vai criar os arquivos simultaneamente, com o efeito colateral de realizar todas as codificações na velocidade do codec mais lento dentre todos os indicados.

Mas Dino®, eu quero gerar mais de um arquivo mas usando para todos a mesma codificação!

Oras, meu amigo, tem como fazer! Observe agora o exemplo:

ffmpeg \
-f x11grab -video_size 1366x768 -framerate 60 -i :0.0 \
-f pulse -ac 1 -i alsa_output.pci-0000_00_14.2.analog-stereo.monitor \
-f pulse -ac 1 -i alsa_input.pci-0000_00_14.2.analog-stereo.echo-cancel \
-filter_complex " \
[1:a][2:a]amix=inputs=2:duration=shortest[a]" -map 0 -map "[a]" \
-vcodec libx264 -tune film -acodec aac -strict experimental -b:v 320k -b:a 192k -pix_fmt yuv420p -shortest -vf scale=640:360 \
-f tee -map 0:v -map 0:a "arquivo.mp4|[f=mpegts]arquivo.mkv"


Ou seja, eu uso o dispositivo tee para permitir ao dispositivo mpegts lidar com duas saídas simultâneas via pipe. E voilá, trabalho feito!

E com essa, termina mais uma Dica do Dino®, desejando para todos vocês noites e mais noites de compilação longa e próspera!

Outras dicas deste autor

Desativando o "freeze" no Linux Educacional

Descompactando arquivos ZIP divididos em partes

Copiando CD de músicas no Slackware pelo shell

Ativando a verificação em duas etapas no login sob LightDM ou GDM

Instalando e configurando controle PS-like no Debian Stretch

Leitura recomendada

Limpando a memória cache no Linux

Adicionar rádios no Rhythmbox

VirtualBox 4.0 traz novos recursos úteis

Modem 3G - UDEV: renomeando a interface ppp0 to ppp0-eth0 [RESOLVIDO]

Duas certificações pelo preço de uma!

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts