FFmpeg, mais do que mão na roda.

Pra quem conhece sabe como o FFmpeg é uma mão na roda, mas as vezes parece ser mais do que isso. Só com os exemplos da documentação é possível fazer um mundo de coisas, mas os exemplos mais úteis vou escrevendo aqui.

Sessões:

Ripar DVD
Cortar áudio
Cortar arquivos de áudio e video em pedaços menores

Referencia: http://ffmpeg.org/ffmpeg-doc.html

Ripar DVD

ffmpeg.exe -i d:\VIDEO_TS\VTS_01_1.VOB -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k video_saida.avi

-i – arquivo de entrada
-f – força um formato
-vcodec – codec do video
-b – bitrate
-g – GOP – tamanho do grupo de imagem
-bf – B-Frames
-acodec – força o codec de audio
-ab – audio bitrate

Cortar audio

ffmpeg.exe -ss 00:00:30 -t 90 -i arquivo_de_entrada.mp3 -acodec copy arquivo_de_saida.mp3

-ss – seek, marca uma posição
-t – tempo em segundos
-i arquivo de entrada
-acodec – força o codec de audio

Nesse caso vai cortar um mp3 começando em 30 segundos e com tamanho de 1 minuto e 30 segundos, o parametro ‘copy‘ para o ‘acodec‘ faz com que o FFmpeg use o mesmo codec de audio do arquivo de entrada.

Cortar arquivos de áudio e video em pedaços menores

O leitor João deu uma idéia bem bacana e fiz um shell script que passado o tamanho em segundos, tempo_total_segundos, do video/áudio ele corta em pedaços menores e determinados em tempo_corte.

#!/bin/bash

tempo_total_segundos=120
tempo_corte=20
nome_video_entrada="./meuvideo.flv"
extensao_saida="flv"

div=`expr $tempo_total_segundos / $tempo_corte`

contador=0
segundos_atual=0
while [ $contador != $div ]; do

        hora=`expr $segundos_atual / 3600`
        minuto=`expr  $segundos_atual % 3600  / 60`
        segundo=`expr  $segundos_atual % 3600  % 60`
        start_time="$contador"
        echo $start_time
        echo $hora $minuto $segundo
        ffmpeg -y -sameq -i $nome_video_entrada -ss $hora:$minuto:$segundo -t $tempo_corte video_saida_$contador.$extensao_saida
        contador=`expr $contador + 1`
        segundos_atual=`expr $tempo_corte "*" $contador`
done

 

Por hoje é só, com dicas do FFmpeg.


Comentários

5 respostas para “FFmpeg, mais do que mão na roda.”

  1. […] This post was mentioned on Twitter by Leandro Mendonça, Thiago Santos. Thiago Santos said: #FFmpeg – Mais do que mão na roda. http://www.thiagosantos.com/blog/130/2010/09/08/ffmpeg-mais-do-que-mao-na-roda/ […]

  2. Avatar de João

    Ok, sem dúvida, ótima dica, porém, e se eu tiver um vídeo de 1 giga e quiser dividir ele em arquivos de 5 megas (que resultaria em 200 vídeos) como deveria escrever a linha de comando pra esse processo? afinal de contas fazer isso 200 vezes é não dá !!!

    1. A partir do seu comentário fiz um shell script que divide um arquivo de video (dado o tempo total em segundos), em arquivos menores (dado o tempo para o pedaço).
      Também não consegui dividir o arquivo de 1GB em 5 de 200mb, mas consegui dividir um arquivo de 60minutos em 6 de 10 minutos.

  3. Avatar de edson

    Ai cara! parabéns! valeu mesmo pelas dicas.
    você poderia explicar o shell script ?
    Obrigado!

  4. Avatar de Gilson
    Gilson

    Valeu pelo script!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.