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!
Nenhum comentário foi encontrado.