converte .vobs descriptografados para .avi com ffmpeg no ubuntu

2

Eu tenho um arquivo .vob que foi copiado de um dvd, quando vejo o .vob, seu vídeo de muito boa qualidade e áudio 5.1 inglês, mas quando eu uso o ffmpeg, ele tem vídeo lixo e áudio mono francês.

Isso estava usando este comando:

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

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

Eu sei que os vídeos são bons e os streams de áudio corretos existem, então como eu seleciono uma faixa 5.1 e recebo um bom vídeo?

O ffmpeg fornece os 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
    
por Arcath 16.12.2010 / 22:56

1 resposta

2

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

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

-ab 128kb define a taxa de bits média de áudio como 128kb e -qscale 3 define a escala de quantificação de vídeo, em que q é 1 (melhor) ou 31 (pior) qualidade.

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

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

Tomando este outro 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! link )

Há muito mais opções que você pode ler em: link

    
por 03.01.2011 / 22:27