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

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

[ Hits: 4.748 ]

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

Definindo os keybindings de volume no Xfce + PulseAudio

Instalação do emulador mednafen no Slackware 14.2

Instalação do Spotify no openSUSE Leap 15

Desativando "saudação de três dedos" (Ctrl+ Alt+Del) em distribuições que usam Upstart

Usando pendrive como SWAP temporária em seu GNU/Linux

Leitura recomendada

eject - Comando para abrir/fechar drive de disco

Lançado BRLix 1.2 - CD

Ctrl+Alt+F1 no VirtualBox

Tema DeLorean-Dark no Fedora 20 GNOME

Opção de procura de arquivos com o botão direito do mouse no KDE

  

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