converter .vobs descriptografados para .avi com ffmpeg no Ubuntu

converter .vobs descriptografados para .avi com ffmpeg no Ubuntu

Eu tenho um arquivo .vob que foi extraído de um DVD, quando assisto o .vob tem vídeo de muito boa qualidade e áudio em inglês 5.1, mas quando uso o ffmpeg ele tem vídeo ruim e áudio mono francês.

Isso foi usando este comando:

ffmpeg -i /samba/ripping/vobs/12161840#2.vob -f avi /samba/ripping/avis/test.avi

Eu tentei algumas variações diferentes, mas nunca retorna nada de bom, apenas arquivos maiores com vídeo ruim e som incorreto.

Eu sei que os vídeos são bons e que existem fluxos de áudio corretos, então como faço para selecionar uma faixa 5.1 e obter um bom vídeo?

ffmpeg fornece detalhes do .vob como:

Input #0, mpeg, from '/samba/ripping/vobs/12161840#2.vob':
   Duration: 00:42:05.56, start: 0.287267, bitrate: 5738 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x576 [PAR 64:45 DAR 16:9], 8436 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
    Stream #0.3[0x82]: Audio: ac3, 48000 Hz, mono, s16, 192 kb/s
Output #0, avi, to '/samba/ripping/avis/test.avi':
  Metadata:
    ISFT            : Lavf52.64.2
    Stream #0.0: Video: mpeg4, yuv420p, 720x576 [PAR 64:45 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Stream #0.1: Audio: mp2, 48000 Hz, mono, s16, 64 kb/s
Stream mapping:
   Stream #0.0 -> #0.0
   Stream #0.3 -> #0.1

Responder1

As opções de codificação padrão são baixas, a taxa de bits de áudio é 64k, por exemplo. Você pode aumentar esses valores com opções extras de linha de comando:

ffmpeg -i sourcefile.vob -ab 128kb -qscale 4 newfile.avi

-ab 128kbdefine a taxa de bits de áudio média para 128kb e -qscale 3define a escala do quantizador de vídeo, onde q é 1 (melhor) ou 31 (pior) qualidade.

Para efeito de comparação, para um vídeo de 5 minutos com resolução 700x576 com áudio de 128kb:

  • q 10 = ~40MB
  • q4 = ~80 MB

Dando mais um passo, você pode converter em lote um monte de vob's em um diretório com este comando bash:

for f in *.vob; do ffmpeg -i "$f" -ab 128kb -qscale 4 "${f%%.vob}.avi"; done;

Colocamos $f entre aspas caso haja espaços nos nomes dos arquivos, e ${f%%.vob} remove a extensão vob antes de adicionarmos nossa própria extensão avi. (Esta é a substituição de parâmetros no bash, muito útil!http://tldp.org/LDP/abs/html/parameter-substitution.html)

Existem muitas outras opções que você pode ler em:http://www.ffmpeg.org/ffmpeg-doc.html

informação relacionada