[tutorial] convertendo e editando com ffmpeg

Postagem de conteúdo sobre edição de audio e video. entre outros assuntos relacionados a multimedia
Post Reply
User avatar
Kodo no Kami
Admin
Admin
Posts: 641
Joined: Fri Jan 02, 2015 1:56 pm
Contact:

[tutorial] convertendo e editando com ffmpeg

Post by Kodo no Kami » Sun Aug 13, 2017 8:22 pm

e ae galera o ffmpeg é um conversor de audio e video não grafico que é muito usado no sistema linux muito robusto e extremamente flexivel (embora ele exista para diversas outras plataformas tambem como windows e mac). pelo ffmpeg podemos converter um arquivo em um formato para outro com diversos tipos de codecs diferentes, podemos converter ou ate armazenar stream via rede ou enviar via stream por ele, podemos aplicar filtros especificos por ele ou seja ele tambem pode ser usado para edição de video via comando, podemos capturar tanto o audio quanto o video do computador, podemos manipular tanto o audio quanto o video dos arquivos separadamente. o ffmpeg vem instalado em boa distros linux, caso não venha instalado basta baixar ele direto pelo repositorio da sua distro (no caso das distros baseadas em debian podemos utilizar o apt-get)

Code: Select all

apt-get install ffmpeg
para a gente listar todos os formatos de arquivo que podem ser manipulados pelo ffmpeg usamos o argumento -formats

Code: Select all

ffmpeg -formats
Image

para exibir os codecs usamos o parametro -codecs

Code: Select all

ffmpeg -codecs
com o argumento -protocols exibimos os protocolos aceito tanto para entrada quanto para saida

Code: Select all

ffmpeg -protocols
tambem podemos exibir os filtros aceitos com o argumento -filters

Code: Select all

ffmpeg -filters
podemos exibir os dispositivos que podem ser manipulados pelo ffmpeg, para isso usamos o argumento -devices

Code: Select all

ffmpeg -devices
para a gente converter um video de um formato para outro usamos o argumento -i indicando o arquivo de entrada que seria o video que vamos converter, seguido do arquivo de saida com a extensão do formato para qual vamos converter aquele video, exemplo um video em rmvb para mp4

Code: Select all

ffmpeg -i zero_no_tsukaima.rmvb zero.mp4
Image

podemos usar o argumento -f para especificar o formato

Code: Select all

ffmpeg -i zero_no_tsukaima.rmvb -f mp4 zero.mp4
é possivel converter para varios formatos ao mesmo tempo bastando especificar eles um a um

Code: Select all

ffmpeg -i zero_no_tsukaima.rmvb zero.mp4 zero.mkv
lembrando que o mesmo pode ser feito com audio, não necessariamente precisa ser um video

Code: Select all

ffmpeg -i "steinsgate op.mp3" s.wmv
podemos converter um arquivo via stream tambem (nesse caso precisaria da url direto do arquivo)

Code: Select all

ffmpeg -i "http://192.168.1.2/kodo/repositorio/anime/Spice%20and%20wolf/Spice-and-Wolf-01.mp4" spice.mkv
Image

é possivel converter o stream do video da webcam no sistema linux bastando ler o arquivo /dev/videoX (o X é equivalente ao numero da webcam)

Code: Select all

ffmpeg -i /dev/video0 nudes.mp4
no linux podemos gravar o desktop usando o formato x11grab e na entrada passamos o display da nossa janela atual

Code: Select all

ffmpeg -s 1280x1024 -f x11grab -r 20 -i :0.0 desktop.mp4
podemos converter de um formato de video para formato de audio para extrair apenas o audio daquele video

Code: Select all

ffmpeg -i another01.rmvb another01.mp3
é possivel desativar o video usando o argumento -vn, com isso vai gerar o formato de video apenas com audio dele

Code: Select all

ffmpeg -i another01.rmvb -vn another01.mp4
tambem podemos desativar o audio com o argumento -an

Code: Select all

ffmpeg -i another01.rmvb -an another01.mp4
com o argumento -ss a gente inicia apartir daquele ponto, no proximo exemplo ele vai gerar o video mp4 apartir do 5:00

Code: Select all

ffmpeg -i another01.rmvb -ss 5:00 another01.mp4
temos que nos atentar a uma coisa dependendo da onde voce coloca o -ss ou qualquer outro argumento voce vai esta manipulando o arquivo de entrada ou o arquivo de saida, se voce colocar o -ss antes do -i no exemplo anterior vai iniciar apartir daquele ponto quase instantaneamente porem se colocar o -ss depois do -i como no exemplo anterior o ffmpeg vai ler todo o video ate aquele determinado momento e apartir dele que vai começar a converter

Code: Select all

ffmpeg -ss 5:00 -i another01.rmvb another01.mp4
para especificar o tempo que ele vai parar usamos o argumento --to, no proximo exemplo ele vai gerar o video ate o 1:00 do video de entrada

Code: Select all

ffmpeg -i another01.rmvb -to 1:00 another01.mp4
outro exemplo agora recortando a opening do anime another que começa em 1:31 e termina em 3:01

Code: Select all

ffmpeg -i another01.rmvb -ss 1:31 -to 3:01 anotherop.mp4
Image

tambem existe o parametro -t que seria a duração para parar, como eu sei que a opening do anime another tem 1:30 e começa em 1:31, posso recortar ela especificando 1:30 no -t e 1:31 no -ss, com isso vai comçear em 1:31 e ter como duração 1:30 de video/audio

Code: Select all

ffmpeg -i another01.rmvb -ss 1:31 -t 1:30 anothermusica.mp3
outra forma de parar o video é por frames convertido, a cada segundo de video existe uma quantidade de frames (os famosos fps), para a gente parar o video em uma quantidade de frames especifica, usamos o argumentos -frames seguido da quantidade frames maxima que ffmpeg ira converter

Code: Select all

ffmpeg -i another01.rmvb -frames 3000 another.mp4
podemos inserir uma legenda em um video usando o -i tambem

Code: Select all

ffmpeg -i yosuga.mp4 -i kodo.srt kodo.mp4
Image

pelo ffmpeg tambem podemos converter legendas srt para ass

Code: Select all

ffmpeg -i kodo.srt kodo.ass
para inserir legendas ass temos que fazer via filtro de video usando o argumento -vf ass (a vantagem das legendas ass que podemos customizar fonte, tamanho, cor, posição e ate efeito)

Code: Select all

ffmpeg -i yosuga.mp4 -vf ass=kodo.ass yosuga.mp4
podemos especificar a dimensão da tela com o argumento -s seguido da dimesão da tela para qual vamos converter, o bom que isso diminui o tamanho final do arquivo o problema que isso vai diminuir tambem a qualidade do video ja que a quantidade de pixeis para ser manipulado sera menor (outro problema que não é possivel fazer o oposto aumentando a tela para melhorar a qualidade ja que é impossivel recuperar os dados originais perdido tendo como resultado final um video mais pixelado)

Code: Select all

ffmpeg -i toaru.mp4 -s 300x200 toaru300x200.mp4
combinando a dimensão da tela junto com o frame e com o tempo inicial, podemos pegar uma imagem do video que pode ser usado para criar aqueles thumbnail (podemos tambem colocar outro numero no frames para pegar varias imagens em sequencia de video)

Code: Select all

ffmpeg -ss 07:21 -i toaru.mp4 -s 400x300 -frames 1 mini.png
Image

podemos juntar um arquivo de video com um arquivo de audio usado o argumento -i nos dois, para que funcione corretamente temos que especificar a saida com o video e o audio usando o argumento -map, sendo que no argumento map a gente passa a ordem que entramos com os arquivos pelo -i, seguido de dois pontos e a letra "a" para indicar que a saida sera o audio daquele arquivo ou "v" caso seja o video daquele arquivo

Code: Select all

ffmpeg -i video.mp4 -i "Trip-Innocent Of D.mp3" -map 0:v -map 1:a amv.mp4
se no exemplo anterior a ordem do arquivo fosse a musica antes do video a ordem no map seria invertida sendo o 0 para o audio e o 1 para o video

Code: Select all

ffmpeg -i "Trip-Innocent Of D.mp3" -i video.mp4 -map 1:v -map 0:a amv.mp4
tambem podemos junta um video com o audio de outro video

Code: Select all

ffmpeg -i video1.mp4 -i video2.mp4 -map 0:v -map 1:a saida.mp4
podemos aplicar alguns filtros com o ffmpeg tanto em audio quanto em video, para aplicar um filtro no video usamos o argumento -vf, para aplicar um filtro no audio usamos o argumento -af, um filtro que podemos aplicar no audio é o areverse que inverte o som

Code: Select all

ffmpeg -i xuxa.mp3 -af areverse dilma.mp3
podemos aplicar esse filtro direto no video tambem para inverter o audio do video

Code: Select all

ffmpeg -i deathnote.mp4 -af areverse saida.mp4
um filtro para o video é o negate que mostra o video todo em negativo

Code: Select all

ffmpeg -i toradora.mp4 -vf negate tigresa.mp4
Image

com o filtro rotate a gente rotaciona a tela

Code: Select all

ffmpeg -i toradora.mp4 -vf rotate=0.6 tigresa.mp4
se a gente passar um numero negativo para o rotate sera rotacionado para outro lado

Code: Select all

ffmpeg -i toradora.mp4 -vf rotate=-1.2 tigresa.mp4
outro filtro para video é o scale que permite a gente redimensionar o video

Code: Select all

ffmpeg -i toradora.mp4 -vf scale=400:300 tigresa.mp4
podemos escrever um texto com o filtro drawtext, alguns dos argumentos dele são text para especificar o texto, x e y para a posição, box seria uma caixa, boxcolor a cor da caixa, font seria o nome da fonte, fontcolor seria a cor da fonte, fontsize o tamanho da fonte, enable='between' seria o tempo que vai aparecer e desaparecer

Code: Select all

ffmpeg -i "no game no life.mp4" -vf drawtext="text=by kodo no kami: x=5: y=10: box=1: boxcolor=white: font=arial: fontcolor=black: fontsize=18: enable='between(t,10,1200)'" nogame.mp4
Image

podemos inclusive juntar dois ou mais videos rodando ao mesmo tempo dividindo a mesma tela, para fazer isso temos que usar um filtro complexo, pegamos o primeiro video redimensionamos ele com scale, depois juntamos ele com o segundo usando o overlay

Code: Select all

ffmpeg -i "no game no life.mp4" -i Seto.mp4 --filter_complex "[0] scale=300:200[kodo];[1][kodo]overlay=50:50" saida.mp4
Image

bom galera como podemos ver que o ffmpeg é uma excelente ferramenta que alem de permitir a conversão do video tambem permite a edição dele, tudo direto pelo terminal. como são comandos podemos imprementar eles em qualquer linguagen seja bash script ou ate mesmo linguagens que permite o uso do terminal como a função system em C, Perl ou ate PHP (embora tambem exista bibliotecas e libs proprias do ffmpeg). bom galera esse tutorial mostra apenas o basico do uso dessa ferramenta sendo que tem muito mais coisas que poderia ser feito por ela que não daria para citar nesse tutorial, tambem existe o ffplay que é um player que vem junto com o ffmpeg que permite aplicar filtros, o ffserver que é um servidor que permite enviar stream de videos e audios aplicando filtro e encodando ele, ffprobe exibe que informações de determinado video ou audio entre outros ^^

by kodo no kami
Image

Conheça o sistema e manipule ele, se limite ao sistema e seja manipulado por ele ~kodo no kami

meu perfil yahoo

Post Reply

Return to “Edição e outros”