Convertendo vídeos usando o FFMPEG

29 de novembro de 2013

Introdução

Converter vídeos e áudio no Linux para muitos é uma tarefa quase impossível de se realizar, devido ao fato de existirem poucos programas gráficos que realizem tal tarefa. Porém, converter usando linhas de comando não é um bicho de sete cabeças, usando-se o FFMPEG. Principalmente com a expansão de outros formatos de vídeo não compatíveis com players comuns, como o caso do FLV (disponível através de sites de vídeos online, ex. YouTube), a conversão se torna algo necessário e útil para a personalização de tamanho, qualidade e formato.

Este é um programa de conversão de áudio e vídeo não-gráfico para Linux que suporta diversos formatos de multimídia, além de ser altamente configurável.

Pelo comando 'ffmpeg -formats' dá para se ter uma idéia de sua flexibilidade:


File formats:
E 3g2 3gp2 format
E 3gp 3gp format
D 4xm 4X Technologies format
D RoQ ID RoQ format
DE ac3 raw ac3
DE alaw pcm A law format
DE amr 3gpp amr file format
DE asf asf format
E asf _stream asf format
DE au SUN AU Format
DE audio_ device audio grab anD output
DE avi avi format
E crc crc testing format
D dauD D-Cinema audio format
D dts raw dts
DE dv DV video format
D dv1394 dv1394 A/V grab
E dvD MPEG2 PS format (DVD VOB)
D ea Electronic Arts Multimedia Format
DE ffm ffm format
D film _cpk Sega FILM/CPK format
D flic FLI/FLC/FLX animation format
DE flv flv format
E framecrc framecrc testing format
DE gif GIF Animation
DE h261 raw h261
DE h263 raw h263
DE h264 raw H264 video format
D idcin ID CIN format
DE imagE image sequence
DE image2 image2 sequence
DE image2pipE pipeD image2 sequence
DE imagepipe pipeD image sequence
D ingenient Ingenient MJPEG
D ipmoviE Interplay MVe format
DE m4v raw MPEG4 video format
D matroska Matroska file format
DE mjpeg MJPEG video
DE mmf mmf format
E mov mov format
D mov,mp4,m4a,3gp,3g2 QuickTime/MPEG4 format
E mp2 MPEG audio layer 2
DE mp3 MPEG audio layer 3
E mp4 mp4 format
DE mpeg MPEG1 System format
E mpeg1video MPEG video
E mpeg2video MPEG2 video
DE mpegts MPEG2 transport stream format
D mpegvideo MPEG video
E mpjpeg Mime multipart JPEG format
DE mulaw pcm mu law format
D nsv NullSoft Video format
E null null video format
DE nut nut format
DE ogg Ogg Vorbis
E psp psp mp4 format
D psxstr Sony Playstation STR format
DE rawvideo raw video format
D redir Redirector format
DE rm rm format
E rtp RTP output format
D rtsp RTSP input format
DE s16be pcm signeD 16 bit big endian format
DE s16le pcm signeD 16 bit little endian format
DE s8 pcm signeD 8 bit format
D sdp SDP
D shn raw shorten
D sol Sierra SOL Format
E svcD MPEG2 PS format (VOB)
DE swf Flash format
DE u16be pcm unsigneD 16 bit big endian format
DE u16le pcm unsigneD 16 bit little endian format
DE u8 pcm unsigneD 8 bit format
E vcD MPEG1 System format (VCD)
D video4linux video grab
D vmD Sierra VMD format
E vob MPEG2 PS format (VOB)
DE wav wav format
D wc3movie Wing Commander III movie format
D wsauD WestwooD Studios audio format
D wsvqa WestwooD Studios VQA format
DE yuv4mpegpipe YUV4MPEG pipe format

Image formats (filename extensions, if any, follow):
DE gif gif


Note que o D significa que o FFMPEG é capaz de decodificar o formato, já o e de codificar.

Para instalar em sistemas baseados no Debian, use o comando:

# apt-get install ffmpeg
Ele já se encarregará de baixar todos os codecs necessários para a conversão dos formatos de áudio/vídeo relacionados acima. Para pegar a última versão do CVS, obviamente você terá que ter inúmeras bibliotecas de desenvolvimento em seu sistema, o que vai gerar uma dor de cabeça desnecessária. Mas se mesmo assim você quiser, use os comandos:

$ cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg
$./configure
$ make
# make install
Bom, mas vamos agora a sintaxe usada pelo programa na conversão. Aparentemente assusta, mas depois de uma explicação tudo se resolve. Vou usar no exemplo a entrada de um arquivo em FLV (Macromedia Flash Video) para um comum em MPG.

A sintaxe básica do FFMPEG é a seguinte:

$ ffmpeg opções_de_entrada -i arquivodeentrada opções_de_saída arquivodesaída

E, como exemplo citado:

$ ffmpeg -i video.flv -ab 56 -ar 22050 -b 50 -s 320x240 test.mpg
Agora vamos explicar cada parte, cada parâmetro usado:

-i video.flv = Especifica o arquivo a ser convertido
-ab 56 = Taxa de bits (bitrate) do aúdio (ab = audio bitrate)
-ar 22050 = Frequência do áudio
-b 50 = Bitrate do vídeo
-s 320x240 = Resolução do vídeo, em pixels
test.mpg = Arquivo resultante
Esses são alguns dos parâmetros disponíveis para o ffmpeg, que no total são vários. Outros básicos são:

-y = Caso exista outro arquivo de sáida com o mesmo nome na pasta local, sobrescreve-o.
-t duração = Tempo de duração, em segundos, podendo ser usada a sintaxe hh:mm:ss.xxx
-ss posição = Busca dada posição no tempo, em segundos. hh:mm:ss.xxx sintaxe também é suportada.
-title título = Título.
-author nomedoautor = Nome do autor
-copyright texto = Marcação de direitos autorais
-comment comentário = Comentário
-target tipo = Tipo de arquivo que será usado como o arquivo resultante ("vcd", "svcd", "dvd", "dv", "pal-vcd", "ntsc-svcd", etc ). Note que as opções de formato já serão automaticamente preenchidas nesse método
-hq = Alta qualidade
O FFMPEG suporta uma imensa variedade de parâmetros, e uma lista completa de todos eles está disponível no manual do FFMPEG, através do comando

$ man ffmpeg
Ou, em português, no site: http://estudiolivre.org/tiki-index.php?page=manual+do+FFMPEG

Uma mão-na-roda do FFMPEG é seus tipos de conversões padrões, usando-se o --target e eliminando qualquer outro parâmetro. Este é usado para se covnerter, por exemplo, no formato, dimensão e qualidade padrão de DVD, usando o '--target dvd'. Veja no exemplo a seguir:

$ ffmpeg -i meuarquivo.avi -target vcD /tmp/vcd.mpg
Nesse caso, o meuarquivo.avi está sendo codificado para o /tmp/vcd.mpg com todos os padrões do formato VCD.


Se você tem processador multi-core (dualcore o quadcore) um parâmetro que pode utilizar para melhorar o rendimento de ffmpeg é o -threads n.
Onde n é o valor core de seu processador central, por exemplo:
usar ffmpeg para dual core, use ffmpeg -threads 2, mas se utiliza quadcore mude use ffmpeg -threads 4.
Exemplo: ffmpeg -threads 2 -i video.flv video.mpeg


Extraido: http://www.hardware.com.br/artigos/convertendo-videos-usando-ffmpeg/

0 comentários:

Postar um comentário

Veja outras Publicações