Como converter um arquivo VOB para avi?

10

Estou tentando converter um arquivo VOB copiado de um DVD para um avi no Ubuntu 13.10. Eu tentei dvdrip, que falhou devido a um erro de contagem de quadros ou algo assim. Tentei o acidrip também, mas ele sempre escolhe uma faixa de áudio que não queria usar. Eu preferiria ter uma solução de linha de comando para criar um avi com os seguintes recursos:

  • utilizável com mplayer (ou seja, usando as funções de etapa)
  • com a legenda, conforme necessário (ou ninguém)
  • com a faixa de áudio correta
  • com vídeo e áudio sincronizados

Eu tentei alguns ffmpege avconvcomandos e conseguiu criar um avi, mas o vídeo eo áudio foram completamente fora de sincronia. Então, quais opções devo usar para converter o arquivo VOB em um arquivo avi?

Gostaria de receber algumas explicações sobre as opções sugeridas!

Informação adicional:

  1. O ffmpegcomando fornece a seguinte saída para o arquivo de entrada

    Input #0, mpeg, from 'Videos/Test/VIDEO_TS/VTS_01_1.VOB':
      Duration: 00:04:53.32, start: 0.045500, bitrate: 29284 kb/s
        Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x480 [PAR 8:9 DAR 4:3], 7500 kb/s, 27.68 fps, 59.94 tbr, 90k tbn, 59.94 tbc
        Stream #0.1[0x82]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
        Stream #0.2[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
        Stream #0.3[0x81]: Audio: ac3, 0 channels
    [buffer @ 0x15ca6e0] w:720 h:480 pixfmt:yuv420p
    
  2. O seguinte comando

    ffmpeg -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -ss 589 -t 274 -sameq -acodec copy -ab 320k output.avi
    

    por exemplo, resultou em uma falha na minha sessão do Ubuntu.

  3. O seguinte comando

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy output.avi
    

    por exemplo, resultou no seguinte erro:

    Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
    av_interleaved_write_frame(): Invalid argument
    
  4. O seguinte comando

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k output.avi
    

    por exemplo, resultou no seguinte erro:

    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    
  5. O seguinte comando

    avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a ac3 -b:a 128k output.avi
    

    por exemplo, parecia funcionar para alguns quadros. Mas muito em breve encontrei muitos erros do formulário

    [ac3 @ 0x120d480] frame sync error
    Error while decoding stream #0:1
    frame CRC mismatch
    
  6. O seguinte comando

    mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -oac copy -ovc x264 -x264encopts bitrate=2500 -o output.avi
    

    fiz algumas conversões, mas é (i) usar legendas, embora eu não quisesse usá-las (ii) entendi errado o áudio (áudio e vídeo são terrivelmente extraviados) e (iii) parece ser mais lento do que o filme realmente é (pode levar 2 horas para um filme de 90 minutos).

  7. Eu tentei comandar dado aqui (terceiro post do Xeratul), mas parou com o erro

    FATAL: Cannot initialize video driver.
    
  8. Tentei a sugestão feita abaixo para ver a página do mencoder . Esta página sugere o uso de duas passagens:

    o primeiro lê informações sobre o filme, o segundo usa essas informações para codificar.

    mas nem são explicadas quais informações extrair nem como usá-las na segunda passagem. Então, eu usei o seguinte comando:

    mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosound -ovc x264 \
    -x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
    me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
    -vf scale=-1:-10,harddup -o video.avi
    

    que converteu o vídeo, mas com uma legenda indesejada. Não está claro como posso evitar o uso de legendas.

Alex
fonte
ffmpegestá obsoleto desde há muito tempo, você deve usar o seu próprio sucessor: avconv.
user2485710
Então, como usar avconventão para converter arquivos VOB para avi. O comando avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.avideu um erro Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Alex
existe um exemplo na página de manual do avconv, para arquivos VOB descriptografados, avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avitente isso
user2485710
Isto dá um erroError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Alex
Tente mencoder yourvob -oac copy -ovc x264 -x264encopts pass=1:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -nosub -o /dev/nullentão mencoder yourvob -oac copy -ovc x264 -x264encopts pass=2:preset=veryslow:fast_pskip=0:tune=film:frameref=15:bitrate=3000:threads=auto -nosub -o video.avi- tirei isso em parte do Arch doc @ dg99 vinculado.

Respostas:

6

Para se livrar das legendas, acredito que você pode adicionar a -nosubopção logo após o nome do arquivo .VOB.

Exemplo

$ mencoder Videos/Test/VIDEO_TS/VTS_01_1.VOB -nosub -nosound -ovc x264 \
-x264encopts direct=auto:pass=2:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf scale=-1:-10,harddup -o video.avi

Detalhes

Esses encantamentos costumam ser muito densos, de modo a dividir um pouco

  • Arquivo de entrada: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • arquivo de saída: -o video.avi
  • sem legendas: -nosub
  • não codifique som: -nosound
  • codifique com o codec fornecido: -ovc x264

lista de outros codecs

$ mencoder -ovc help
MEncoder SVN-r36171-4.8.1 (C) 2000-2013 MPlayer Team

Available codecs:
   copy     - frame copy, without re-encoding. Doesn't work with filters.
   frameno  - special audio-only file for 3-pass encoding, see DOCS.
   raw      - uncompressed video. Use fourcc option to set format explicitly.
   nuv      - nuppel video
   lavc     - libavcodec codecs - best quality!
   libdv    - DV encoding with libdv v0.9.5
   xvid     - XviD encoding
   x264     - H.264 encoding
  • Opções de codificação x264: x264encopts
  • modo de ajuste para vetores de movimento direto :direct=auto
  • número de passes :pass=2
  • taxa de bits de codificação de destino: bitrate=900
  • pré. quadros usados ​​como preditores nos quadros B e P (def: 3):frameref=5
  • número simultâneo de quadros B: bframes=1
  • estimativa de movimento fullpixel alg .: me=umh

    NOTA: umh - pesquisa desigual de vários hexágonos (lenta)

  • ative todos os tipos de macroblocos: partitions=all

  • quantização ideal de distorção de taxa: trellis=1

    NOTA: 2 - ativado durante todas as decisões de modo (lento, requer subq> = 6)

  • valor do incremento / decaimento do quantizador: qp_step=4

    NOTA: valor máximo pelo qual o quantizador pode ser incrementado / diminuído entre os quadros (padrão: 4)

  • compactação do quantizador (padrão: 0.6): qcomp=0.7

  • previsão de movimento para macroblocos em quadros B: direct_pred=auto
  • intervalo máximo entre quadros-chave em quadros: keyint=300

  • As opções a seguir são filtros de vídeo: -vf

NOTA: Para as opções de filtro de vídeo, é importante que você use harddupcomo o último filtro: forçará o MEncoder a gravar todos os quadros (mesmo os duplicados) na saída. Além disso, é necessário usar scale=$WIDTH,-10com $WIDTHcomo -1para manter a largura original ou um novo, geralmente menores, largura: é necessário uma vez que o codec H.264 usa pixels quadrados e DVDs em vez usar pixels retangulares.

  • scale=-1
  • -10
  • harddup
slm
fonte
Muito obrigado por este exemplo bem explicado de como obter o vídeo. Seu comando sugerido parece funcionar perfeitamente para extrair o vídeo. No entanto, não tenho o áudio agora. Se eu usar o seu comando sem -noaudioe com -oac copy, recebo o áudio, que não está sincronizado com o vídeo. Ou é deslocado, em uma velocidade diferente ou em ambos. Alguma sugestão de como posso obter também o áudio correto? E quanto a vários arquivos VOB? Como compactar o conteúdo em um único .aviarquivo (ou outro formato)?
Alex
@ Alex - apenas um pensamento, mas eu não acho que você pode simplesmente fazer um -oac copycom uma passagem 2, já que você está re-codificando o vídeo, terá que recodificar o áudio junto com ele. Como a "embalagem" eles, os arquivos VOB deveriam ser fundidas gostou disso: cat *.vob all.vob. Então use all.vobno mencoder cmd. Existem outras maneiras de fazer isso também.
Slm
3

Se você pretende usar mplayer, tente mencoder( http://www.mplayerhq.hu ). Uma de suas melhores características é que as opções de reprodução que você conhece mplayerse comportam da mesma maneira durante a codificação. Além disso, há muita documentação e tópicos de email cobrindo exatamente o que você está perguntando:

dg99
fonte
Os links fornecidos contêm dezenas de exemplos diferentes e centenas de opções. Não é uma resposta clara e precisa à minha pergunta.
27413 Alex
1
É verdade, mas não escrevi a resposta para obter reputação, escrevi para ajudá-lo. Considere ler algumas das mencoderpáginas. Existem vários grupos de piratas que usam apenas mencoderpara todo o seu trabalho; é assim que pode ser simples, poderoso e automatizado.
dg99 27/12/13
2

Eu sei que essa postagem é antiga, mas, ao pesquisar esse problema na internet, a pergunta acima aparece e algumas outras entradas são ainda mais antigas.

Eu tentei ferramentas diferentes, mas no final estou mais satisfeito com este comando:

ffmpeg -i *.vob -c:v libx264 -crf 20 -c:a libmp3lame -ac 2 -ab 192k output.avi

É uma ligeira modificação da que encontrei aqui .

Acabei de substituir o codec de áudio ( libflacestava ausente no meu sistema, substituí-o por libmp3lame( fonte ) e o -crfvalor para aumentar a qualidade. Outros formatos também podem ser usados, como mp4.

No meu teste (com um processador bastante medíocre), um arquivo vob de 2,6 GB (já concatenado em três outros arquivos) foi convertido em um vídeo avi de 960 MB de qualidade comparável em cerca de 50 minutos.

20 é a qualidade aceitável média (nos artigos de ajuda do Handbrake que eu já vi). Números maiores reduzem o tamanho em detrimento da qualidade. A perda de qualidade acima de 20 é clara.

É melhor usar esse comando em um terminal para ver o progresso, eliminá-lo mais facilmente, etc.

O que eu gosto neste comando é que ele fornece um bom equilíbrio entre qualidade, tempo e tamanho e pode ser facilmente usado no menu de contexto do gerenciador de arquivos.

Como fazer isso depende do gerenciador de arquivos. O comando pode ser facilmente adicionado ao Thunar e Nautilus como uma 'ação personalizada'. Eu o adicionei ao Dolphin com um ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktoparquivo como este:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin,video/mpeg
MimeType=video/mpeg
Actions=Convert2avi
X-KDE-Submenu=Convert vob (DVD video)
Encoding=UTF8

[Desktop Action Convert2avi]
Name=to avi
Icon=video
Exec=konsole -e ffmpeg -i *.vob -c:v libx264 -crf 20 -c:a libmp3lame -ac 2 -ab 192k output.avi

insira a descrição da imagem aqui


fonte