¿Cómo convertir un archivo VOB a avi?

10

Estoy tratando de convertir un archivo VOB copiado de un DVD a un avi en Ubuntu 13.10. Lo intenté dvdrip, lo que falló debido a un error de recuento de cuadros o algo así. También probé acidrip, pero siempre elegí una pista de audio que no quería usar. Preferiría tener una solución de línea de comandos para crear un avi con las siguientes características:

  • utilizable con mplayer (es decir, utilizando las funciones de paso)
  • con el subtítulo según sea necesario (o nadie)
  • con la pista de audio correcta
  • con video y audio sincronizados

He intentado algunas ffmpegy avconvcomandos y logró crear un avi, pero el vídeo y el audio estuviera completamente fuera de sincronización. Entonces, ¿qué opciones debo usar para convertir el archivo VOB en un archivo avi?

Agradecería algunas explicaciones sobre las opciones sugeridas!

Información Adicional:

  1. El ffmpegcomando da el siguiente resultado para el archivo 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. El siguiente comando

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

    por ejemplo resultó en un bloqueo de mi sesión de Ubuntu.

  3. El siguiente comando

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

    por ejemplo resultó en el siguiente error:

    Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374
    av_interleaved_write_frame(): Invalid argument
    
  4. El siguiente 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 ejemplo resultó en el siguiente error:

    Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
    
  5. El siguiente 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 ejemplo, parecía funcionar para algunos cuadros. Pero muy pronto encontré muchos errores de la forma

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

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

    realizó algunas conversiones, pero está (i) usando subtítulos aunque no quería usarlos (ii) obtuve el audio incorrecto (el audio y el video están terriblemente fuera de lugar) y (iii) parece ser más lento de lo que realmente va la película (podría tomar 2 horas para una película de 90 minutos).

  7. Traté de ordenar aquí (tercera publicación de Xeratul), pero se detuvo con el error

    FATAL: Cannot initialize video driver.
    
  8. Intenté la sugerencia que se hace a continuación para mirar la página del mencoder . Esta página sugiere usar dos pases:

    el primero lee información sobre la película, el segundo usa esa información para codificar.

    pero ni se explica qué información extraer ni cómo usarla en el segundo paso. Entonces utilicé el siguiente 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 convirtió el video, pero con un subtítulo no deseado. No está claro en absoluto cómo puedo evitar usar un subtítulo.

Alex
fuente
ffmpegestá en desuso desde hace mucho tiempo, que se supone que usar su propio sucesor: avconv.
user2485710
Entonces, ¿cómo usarlo avconvpara convertir archivos VOB a avi? El comando avconv -i Videos/Test/VIDEO_TS/VTS_01_1.VOB -acodec copy -vcodec copy test.avidio un error Application provided invalid, non monotonically increasing dts to muxer in stream 1: 374 >= 374 av_interleaved_write_frame(): Invalid argument...
Alex
hay un ejemplo en la página de manual de avconv, para archivos VOB descifrados avconv -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.aviintente esto
usuario2485710
Esto da un errorError while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Alex
Intente 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/nullentonces 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: tomó eso en parte del Arch doc @ dg99 vinculado.

Respuestas:

6

Para deshacerse de los subtítulos, creo que puede agregar el -nosubinterruptor, justo después del nombre del archivo .VOB.

Ejemplo

$ 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

Detalles

Estos encantamientos son a menudo muy densos, así que para descomponerlo un poco

  • fichero de entrada: Videos/Test/VIDEO_TS/VTS_01_1.VOB
  • archivo de salida: -o video.avi
  • sin subtitulos: -nosub
  • no codificar sonido: -nosound
  • codificar con el códec dado: -ovc x264

lista de otros códecs

$ 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
  • Opciones de codificación x264: x264encopts
  • Modo de ajuste para vectores de movimiento directo :direct=auto
  • cantidad de pases :pass=2
  • tasa de bits de codificación de destino: bitrate=900
  • pre. marcos utilizados como predictores en marcos B y P (def: 3):frameref=5
  • # concurrente de tramas B: bframes=1
  • cálculo de movimiento de píxeles completos alg .: me=umh

    NOTA: umh - búsqueda desigual de hexágonos múltiples (lenta)

  • habilitar todos los tipos de macrobloques: partitions=all

  • cuantificación óptima de distorsión de velocidad: trellis=1

    NOTA: 2: habilitado durante todas las decisiones de modo (lento, requiere subq> = 6)

  • Incremento del cuantificador / valor de engaño: qp_step=4

    NOTA: valor máximo por el cual el cuantificador puede incrementarse / disminuirse entre cuadros (predeterminado: 4)

  • compresión del cuantificador (predeterminado: 0.6): qcomp=0.7

  • predicción de movimiento para macrobloques en cuadros B: direct_pred=auto
  • intervalo máximo entre fotogramas clave en fotogramas: keyint=300

  • opciones después de esto son los filtros de video: -vf

NOTA: Para los conmutadores de filtro de video, es importante que lo use harddupcomo último filtro: obligará a MEncoder a escribir cada fotograma (incluso los duplicados) en la salida. Además, es necesario utilizar scale=$WIDTH,-10con $WIDTHcomo -1para mantener la anchura original o una nueva, por lo general más pequeño, ancho: es necesario ya que el códec H.264 utiliza píxeles cuadrados y DVDs en lugar de utilizar píxeles rectangulares.

  • scale=-1
  • -10
  • harddup
slm
fuente
Muchas gracias por este ejemplo bien explicado sobre cómo obtener el video. Su comando sugerido parece funcionar perfectamente para extraer el video. Sin embargo, no tengo el audio ahora. Si uso su comando sin -noaudioy con -oac copy, obtengo el audio, que no está sincronizado con el video. Es desplazado, a una velocidad diferente o ambas. ¿Alguna sugerencia de cómo puedo obtener también el audio correcto? ¿Y qué hay de múltiples archivos VOB? ¿Cómo empaquetar el contenido en un solo .aviarchivo (u otro formato)?
Alex
@Alex: solo una idea, pero no creo que puedas simplemente hacer una -oac copycon 2 pasadas, ya que estás volviendo a codificar el video, tendrás que volver a codificar el audio junto con él. En cuanto a "embalaje" ellos, los archivos VOB deberían fusionarse gusta esto: cat *.vob all.vob. Luego se usa all.voben el cmd mencoder. Hay otras formas de hacer esto también.
slm
3

Si tiene la intención de usar mplayer, entonces debe intentarlo mencoder( http://www.mplayerhq.hu ). Una de sus mejores características es que las opciones de reproducción que conoce se mplayercomportan de la misma manera al codificar. Además, hay mucha documentación e hilos de correo electrónico que cubren exactamente lo que está preguntando:

dg99
fuente
Los enlaces provistos contienen docenas de ejemplos diferentes y cientos de opciones. No es una respuesta clara y precisa a mi pregunta.
Alex
1
Es cierto, pero no escribí la respuesta para obtener reputación, la escribí para ayudarte. Considere leer algunas de las mencoderpáginas. Hay varios grupos piratas que solo usan mencoderpara todo su trabajo; así de simple, poderoso y automatizable puede ser.
dg99
2

Sé que esta es una publicación antigua, pero al buscar este problema en Internet aparece la pregunta anterior, y algunas otras entradas son aún más antiguas.

He probado diferentes herramientas pero al final estoy más satisfecho con este comando:

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

Es una ligera modificación de la que encontré aquí .

Acabo de reemplazar el códec de audio ( libflacestaba ausente en mi sistema, así que lo reemplacé con libmp3lame( fuente ) y el -crfvalor para aumentar la calidad. También se pueden usar otros formatos, como mp4.

En mi prueba (con un procesador bastante mediocre), un archivo vob de 2.6 GB (ya concatenado de otros tres archivos) se convirtió en un video avi de 960 MB de calidad comparable en aproximadamente 50 minutos.

20 es la calidad medianamente aceptable (en los artículos de ayuda de Handbrake que he visto). Los números más grandes reducen el tamaño a expensas de la calidad. Por encima de 20 la pérdida de calidad es clara.

Es mejor usar ese comando en una terminal para ver el progreso, matarlo más fácilmente, etc.

Lo que me gusta de este comando es que proporciona un buen equilibrio entre calidad, tiempo y tamaño, y que se puede usar fácilmente desde el menú contextual del administrador de archivos.

Cómo hacerlo depende del administrador de archivos. El comando se puede agregar fácilmente a Thunar y Nautilus como una 'acción personalizada'. Lo he agregado a Dolphin con un ~/.kde/share/kde4/services/ServiceMenus/convert_vob_to_avi.desktoparchivo 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

ingrese la descripción de la imagen aquí


fuente