[FFmpeg-user] Extract images from concatenate .VOB

Etienne Desautels etienne.desautels at gmail.com
Fri Sep 11 20:58:08 CEST 2015


I'm trying to extract images (frames) from some DVD. For this I think I need to concatenate multiple .VOB (like VTS_01_1.VOB, VTS_01_2.VOB) to be able to extract images that are in the second, third, etc. VOB. Unfortunately it looks it doesn't work when I put the seek (-ss) before the input, to do a fast extraction. I need to put the seek after the input for it to work, and this way, the extraction is really slow (all frames need to be uncompress until the seek time).

Here's my command that doesn't work:
ffmpeg -ss 00:10:39.638 -i concat:"iso/mountpoint/VIDEO_TS/VTS_01_1.VOB|iso/mountpoint/VIDEO_TS/VTS_01_2.VOB" -y -an -f image2 -vframes 1 frame1.jpg

And the output (check last line):
ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
  configuration: --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree
  libavutil      54. 22.100 / 54. 22.100
  libavcodec     56. 33.100 / 56. 33.100
  libavformat    56. 28.100 / 56. 28.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 13.101 /  5. 13.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mpeg, from 'concat:iso/mountpoint/VIDEO_TS/VTS_01_1.VOB|iso/mountpoint/VIDEO_TS/VTS_01_2.VOB':
  Duration: 00:00:01.09, start: 0.224800, bitrate: N/A
    Stream #0:0[0x1bf]: Data: dvd_nav_packet
    Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m), 704x480 [SAR 10:11 DAR 4:3], max. 9586 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0:2[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 256 kb/s
[swscaler @ 0x37d40c0] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'out16.jpg':
    encoder         : Lavf56.28.100
    Stream #0:0: Video: mjpeg, yuvj420p(pc), 640x480 [SAR 615:616 DAR 205:154], q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc
      encoder         : Lavc56.33.100 mjpeg
Stream mapping:
  Stream #0:1 -> #0:0 (mpeg2video (native) -> mjpeg (native))
Press [q] to stop, [?] for help
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

If I do that instead (putting the seek after the input) it works but it's pretty slow:
ffmpeg -i concat:"iso/mountpoint/VIDEO_TS/VTS_01_1.VOB|iso/mountpoint/VIDEO_TS/VTS_01_2.VOB" -ss 00:10:39.638 -y -an -f image2 -vframes 1 frame1.jpg

I notice also that duration reported by ffmpeg is wrong for many .VOB. Maybe it's related?

So, is there's any ways to extract accurately a frame from multiple .VOB in a fast way?

Etienne Desautels

More information about the ffmpeg-user mailing list