[FFmpeg-user] VOB files convertion failed

Micael Silva micaelsilva at gmail.com
Tue May 8 22:13:12 EEST 2018


On Mon, May 7, 2018 at 9:13 PM, Jamenson Ferreira Espindula de Almeida Melo
<jafesp at gmail.com> wrote:

> From Jaboatão dos Guararapes, Pernambuco, Brazil.
>
> Thank you for your response.
>
> Below is the listing of a DVD movie disc. I want to convert these files
> to one file. The files already are on my hard disk.
>
> total 4,2G
> -r--r--r-- 1 jamenson jamenson 124K fev  2  2010 video_ts.vob
> -r--r--r-- 1 jamenson jamenson 320M fev  2  2010 vts_01_0.vob
> -r--r--r-- 1 jamenson jamenson 1,0G fev  2  2010 vts_01_1.vob
> -r--r--r-- 1 jamenson jamenson 1,0G fev  2  2010 vts_01_2.vob
> -r--r--r-- 1 jamenson jamenson 1,0G fev  2  2010 vts_01_3.vob
> -r--r--r-- 1 jamenson jamenson 735M fev  2  2010 vts_01_4.vob
> -r--r--r-- 1 jamenson jamenson  11M fev  2  2010 vts_02_0.vob
> -r--r--r-- 1 jamenson jamenson 8,0K fev  2  2010 vts_02_1.vob
> -r--r--r-- 1 jamenson jamenson 8,0K fev  2  2010 vts_03_1.vob
> -r--r--r-- 1 jamenson jamenson 159M fev  2  2010 vts_04_1.vob
> -r--r--r-- 1 jamenson jamenson 8,0K fev  2  2010 vts_05_1.vob
>
> So, first of all, I concatenate the eleven files to one file with this
> command:
>
>
> cat *vob > crepusculo.vob
>
>
> Second I have analyze the contents of that file with this command:
>
>
> ffprobe -hide_banner -analyzeduration 500M -probesize 500M -i \
> crepusculo.vob
>
>
> The output of that command was:
>
>
> Input #0, mpeg, from '/tmp/crepusculo.vob':
>   Duration: 00:01:43.71, start: 0.280633, bitrate: 347394 kb/s
>     Stream #0:0[0x1bf]: Data: dvd_nav_packet
>     Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, top \
>     first), 720x480 [SAR 32:27 DAR 16:9], 8000 kb/s, 29.97 fps, 29.97 \
>     tbr, 90k tbn, 59.94 tbc
>
>     Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
>     Stream #0:3[0x20]: Subtitle: dvd_subtitle
>     Stream #0:4[0x21]: Subtitle: dvd_subtitle
>     Stream #0:5[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
> Unsupported codec with id 100357 for input stream 0
>
>
> ffmpeg -version output:
>
>
> ffmpeg version 3.3.3 Copyright (c) 2000-2017 the FFmpeg developers
> built with gcc 7.2.0 (GCC)
> configuration: --prefix=/usr --enable-gpl --enable-version3 \
> --enable-nonfree --disable-static --enable-shared --disable-debug \
> --enable-libass --enable-libfdk-aac --enable-libfreetype \
> --enable-libmp3lame --enable-libopus --enable-libtheora \
> --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 \
> --enable-openssl --docdir=/usr/share/doc/ffmpeg-3.3.3
>
> libavutil      55. 58.100 / 55. 58.100
> libavcodec     57. 89.100 / 57. 89.100
> libavformat    57. 71.100 / 57. 71.100
> libavdevice    57.  6.100 / 57.  6.100
> libavfilter     6. 82.100 /  6. 82.100
> libswscale      4.  6.100 /  4.  6.100
> libswresample   2.  7.100 /  2.  7.100
> libpostproc    54.  5.100 / 54.  5.100
>
>
> First try: I tried the Matroska container. Below is the command:
>
>
> ffmpeg -analyzeduration 500M -probesize 500M -i crepusculo.vob \
> -map 0:1 -map 0:2 -map 0:3 -map 0:4 -map 0:5 \
> -metadata:s:a:0 language=eng -metadata:s:a:0 title="English stereo" \
> -metadata:s:a:1 language=por -metadata:s:a:1 title="Português estereo" \
> -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
> -metadata:s:s:1 language=por -metadata:s:s:1 title="Português" \
> -codec:v copy -crf 20 -codec:a copy -qscale:a 2 -codec:s copy \
> crepusculo.mkv
>
>
> The command output was:
>
>
> ffmpeg version 3.3.3 Copyright (c) 2000-2017 the FFmpeg developers
>   built with gcc 7.2.0 (GCC)
>   configuration: --prefix=/usr --enable-gpl --enable-version3 \
>   --enable-nonfree --disable-static --enable-shared --disable-debug \
>   --enable-libass --enable-libfdk-aac --enable-libfreetype \
>   --enable-libmp3lame --enable-libopus --enable-libtheora \
>   --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 \
>   --enable-openssl --docdir=/usr/share/doc/ffmpeg-3.3.3
>
>   libavutil      55. 58.100 / 55. 58.100
>   libavcodec     57. 89.100 / 57. 89.100
>   libavformat    57. 71.100 / 57. 71.100
>   libavdevice    57.  6.100 / 57.  6.100
>   libavfilter     6. 82.100 /  6. 82.100
>   libswscale      4.  6.100 /  4.  6.100
>   libswresample   2.  7.100 /  2.  7.100
>   libpostproc    54.  5.100 / 54.  5.100
> Input #0, mpeg, from 'crepusculo.vob':
>   Duration: 00:01:43.71, start: 0.280633, bitrate: 347394 kb/s
>     Stream #0:0[0x1bf]: Data: dvd_nav_packet
>     Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, top \
>     first), 720x480 [SAR 32:27 DAR 16:9], 8000 kb/s, 29.97 fps, 29.97 \
>     tbr, 90k tbn, 59.94 tbc
>
>     Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
>     Stream #0:3[0x20]: Subtitle: dvd_subtitle
>     Stream #0:4[0x21]: Subtitle: dvd_subtitle
>     Stream #0:5[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
> Output #0, matroska, to 'crepusculo.mkv':
>   Metadata:
>     encoder         : Lavf57.71.100
>     Stream #0:0: Video: mpeg2video (Main) (mpg2 / 0x3267706D), \
>     yuv420p(tv, top first), 720x480 [SAR 32:27 DAR 16:9], q=2-31, 8000 \
>     kb/s, 29.97 fps, 29.97 tbr, 1k tbn, 90k tbc
>
>     Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, \
>     5.1(side), fltp, 448 kb/s
>
>     Metadata:
>       title           : English stereo
>     Stream #0:2(eng): Subtitle: dvd_subtitle
>     Metadata:
>       title           : English
>     Stream #0:3(por): Subtitle: dvd_subtitle
>     Metadata:
>       title           : Português
>     Stream #0:4(por): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, \
>     5.1(side), fltp, 448 kb/s
>
>     Metadata:
>       title           : Português estereo
> Stream mapping:
>   Stream #0:1 -> #0:0 (copy)
>   Stream #0:2 -> #0:1 (copy)
>   Stream #0:3 -> #0:2 (copy)
>   Stream #0:4 -> #0:3 (copy)
>   Stream #0:5 -> #0:4 (copy)
> Press [q] to stop, [?] for help
> [matroska @ 0xd5a240] Non-monotonous DTS in output stream 0:0; \
> previous: 16, current: -33; changing to 16. This may result in \
> incorrect timestamps in the output file.
>
> [matroska @ 0xd5a240] Non-monotonous DTS in output stream 0:0; \
> previous: 16, current: 0; changing to 16. This may result in \
> incorrect timestamps in the output file.
>
> [matroska @ 0xd5a240] Timestamps are unset in a packet for \
> stream 0. This is deprecated and will stop working in the \
> future. Fix your code to set the timestamps properly
>
> [matroska @ 0xd5a240] Can't write packet with unknown timestamp
> av_interleaved_write_frame(): Invalid argument
>
> [matroska @ 0xd5a240] Can't write packet with unknown timestamp
> Error writing trailer of crepusculo.mkv: Invalid argument
>
> frame=  305 fps=0.0 q=-1.0 Lsize=     231kB time=00:00:10.07 \
> bitrate= 187.4kbits/s speed= 321x
>
> video:6008kB audio:154kB subtitle:0kB other streams:0kB global \
> headers:0kB muxing overhead: unknown
> Conversion failed!
>
>
> Second try: I tried to change the container to mp4. The command line
> looks like this:
>
>
> ffmpeg -analyzeduration 500M -probesize 500M -i crepusculo.vob \
> -map 0:1 -map 0:2 -map 0:3 -map 0:4 -map 0:5 \
> -metadata:s:a:0 language=eng -metadata:s:a:0 title="English stereo" \
> -metadata:s:a:1 language=por -metadata:s:a:1 title="Português estereo" \
> -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" \
> -metadata:s:s:1 language=por -metadata:s:s:1 title="Português" \
> -codec:v copy -crf 20 -codec:a copy -qscale:a 2 -codec:s copy \
> crepusculo.mp4
>
>
> The command output was:
>
>
> ffmpeg version 3.3.3 Copyright (c) 2000-2017 the FFmpeg developers
>   built with gcc 7.2.0 (GCC)
>   configuration: --prefix=/usr --enable-gpl --enable-version3 \
>   --enable-nonfree --disable-static --enable-shared --disable-debug \
>   --enable-libass --enable-libfdk-aac --enable-libfreetype \
>   --enable-libmp3lame --enable-libopus --enable-libtheora \
>   --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 \
>   --enable-openssl --docdir=/usr/share/doc/ffmpeg-3.3.3
>
>   libavutil      55. 58.100 / 55. 58.100
>   libavcodec     57. 89.100 / 57. 89.100
>   libavformat    57. 71.100 / 57. 71.100
>   libavdevice    57.  6.100 / 57.  6.100
>   libavfilter     6. 82.100 /  6. 82.100
>   libswscale      4.  6.100 /  4.  6.100
>   libswresample   2.  7.100 /  2.  7.100
>   libpostproc    54.  5.100 / 54.  5.100
> Input #0, mpeg, from 'crepusculo.vob':
>   Duration: 00:01:43.71, start: 0.280633, bitrate: 347394 kb/s
>     Stream #0:0[0x1bf]: Data: dvd_nav_packet
>     Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, top \
>     first), 720x480 [SAR 32:27 DAR 16:9], 8000 kb/s, 29.97 fps, 29.97 \
>     tbr, 90k tbn, 59.94 tbc
>
>     Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
>     Stream #0:3[0x20]: Subtitle: dvd_subtitle
>     Stream #0:4[0x21]: Subtitle: dvd_subtitle
>     Stream #0:5[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
> [mp4 @ 0x1079240] track 1: codec frame size is not set
> [mp4 @ 0x1079240] track 4: codec frame size is not set
> Output #0, mp4, to 'crepusculo.mp4':
>   Metadata:
>     encoder         : Lavf57.71.100
>     Stream #0:0: Video: mpeg2video (Main) (a[0][0][0] / 0x0061), \
>     yuv420p(tv, top first), 720x480 [SAR 32:27 DAR 16:9], q=2-31, 8000 \
>     kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 90k tbc
>
>     Stream #0:1(eng): Audio: ac3 ([165][0][0][0] / 0x00A5), 48000 Hz, \
>     5.1(side), fltp, 448 kb/s
>
>     Metadata:
>       title           : English stereo
>     Stream #0:2(eng): Subtitle: dvd_subtitle ([224][0][0][0] / 0x00E0)
>     Metadata:
>       title           : English
>     Stream #0:3(por): Subtitle: dvd_subtitle ([224][0][0][0] / 0x00E0)
>     Metadata:
>       title           : Português
>     Stream #0:4(por): Audio: ac3 ([165][0][0][0] / 0x00A5), 48000 Hz, \
>     5.1(side), fltp, 448 kb/s
>
>     Metadata:
>       title           : Português estereo
> Stream mapping:
>   Stream #0:1 -> #0:0 (copy)
>   Stream #0:2 -> #0:1 (copy)
>   Stream #0:3 -> #0:2 (copy)
>   Stream #0:4 -> #0:3 (copy)
>   Stream #0:5 -> #0:4 (copy)
> Press [q] to stop, [?] for help
> [mp4 @ 0x1079240] Non-monotonous DTS in output stream 0:0; previous: \
> 1447, current: -3003; changing to 1448. This may result in incorrect \
> timestamps in the output file.
>
> [mp4 @ 0x1079240] Non-monotonous DTS in output stream 0:0; previous: \
> 1448, current: 0; changing to 1449. This may result in incorrect \
> timestamps in the output file.
>
> [mp4 @ 0x1079240] Timestamps are unset in a packet for stream 0. This \
> is deprecated and will stop working in the future. Fix your code to \
> set the timestamps properly
>
> [mp4 @ 0x1079240] pts has no value
>     Last message repeated 648 times
> frame= 2722 fps=0.0 q=-1.0 size=   61241kB time=00:01:30.72 \
> bitrate=5529.9kbits/s speed= 181x
> [mp4 @ 0x1079240] pts has no \
> value
>
>     Last message repeated 655 times
> frame= 5180 fps=5179 q=-1.0 size=  123840kB time=00:02:52.73 \
> bitrate=5873.0kbits/s speed= 173x
> [mp4 @ 0x1079240] pts has no \
> value
>
>     Last message repeated 503 times
> [mp4 @ 0x1079240] Application provided invalid, non monotonically \
> increasing dts to muxer in stream 2: 17129112 >= 16543527
>
> av_interleaved_write_frame(): Invalid argument
> [mp4 @ 0x1079240] pts has no value
>     Last message repeated 79 times
> frame= 7070 fps=5123 q=-1.0 Lsize=  179654kB time=00:03:55.81 \
> bitrate=6241.0kbits/s speed= 171x
>
> video:174140kB audio:5395kB subtitle:22kB other streams:0kB global \
> headers:0kB muxing overhead: 0.054197%
> Conversion failed!
>
>
> What I should do to solve that?
>
> Thank you.
>

Concating VOB files usually goes wrong caused by timecode discontinuities
by the file splitting, I think. You could try to make one single file first
with ffmpeg regenerating PTS before converting to another format. It
generally works for me:

ffmpeg -fflags +genpts -i
"concat:vts_01_0.vob|vts_01_1.vob|vts_01_2.vob(....)" -c copy -f vob
filme.mpg

I am not completely sure but the video_ts.vob carries the DVD menu, it can
be messy putting it among the rest of video, since than menus don't have to
be at same properties of the movie file.


More information about the ffmpeg-user mailing list