[FFmpeg-user] How to speed up thumbnail generation for video files using FFMPEG on MIPS

Pavan Kulkarni pavanvkbgm at gmail.com
Mon Jul 9 08:22:47 CEST 2012


Hi,
I have pasted the output of the commands:

*time ./ffmpeg -i Pirates_remux_short.ts out1.jpg (This creates a thumbnail
which is not very clear though)*
malloc: using debugging hooks
ffmpeg version 0.8.5, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jan  3 2012 14:43:18 with gcc 4.3.2
  configuration: --enable-cross-compile --target-os=linux
--cross-prefix=mipsisa32r2el-timesys-linux-gnu- --arch=mips
--extra-cflags=-O2
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  7. 0 / 53.  7. 0
  libavformat  53.  4. 0 / 53.  4. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
    Last message repeated 1 times


Input #0, mpegts, from 'Pirates_remux_short.ts':
  Duration: 00:00:59.22, start: 720.665000, bitrate: 33719 kb/s
  Program 1
    Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1
DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Stream #0.1[0x1100](eng): Audio: pcm_bluray, 48000 Hz, 5.1, s32, 6912
kb/s
Incompatible pixel format 'yuv420p' for codec 'mjpeg', auto-selecting
format 'yuvj420p'
[buffer @ 0x10047c0] w:1920 h:1080 pixfmt:yuv420p tb:1/1000000 sar:1/1
sws_param:

[buffersink @ 0x1004210] auto-inserting filter 'auto-inserted scaler 0'
between the filter 'src' and the filter 'out'
[scale @ 0x10125e0] w:1920 h:1080 fmt:yuv420p -> w:1920 h:1080 fmt:yuvj420p
flags:0x4
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
Output #0, image2, to 'out1.jpg':


  Metadata:
    encoder         : Lavf53.4.0
    Stream #0.0: Video: mjpeg, yuvj420p, 1920x1080 [PAR 1:1 DAR 16:9],
q=2-31, 200 kb/s, 90k tbn, 23.98 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
[image2 @ 0x1010fa0] Could not get frame filename number 2 from pattern
'out1.jpg'

av_interleaved_write_frame(): Invalid argument


Command exited with non-zero status 1
*real    0m 10.90s*
user    0m 9.61s
sys     0m 0.50s

*time ./ffmpeg -ss 18 -i Pirates_remux_short.ts -vframes 1 -f null -  *
malloc: using debugging hooks
ffmpeg version 0.8.5, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jan  3 2012 14:43:18 with gcc 4.3.2
  configuration: --enable-cross-compile --target-os=linux
--cross-prefix=mipsisa32r2el-timesys-linux-gnu- --arch=mips
--extra-cflags=-O2
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  7. 0 / 53.  7. 0
  libavformat  53.  4. 0 / 53.  4. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
    Last message repeated 1 times


Input #0, mpegts, from 'Pirates_remux_short.ts':
  Duration: 00:00:59.22, start: 720.665000, bitrate: 33719 kb/s
  Program 1
    Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1
DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Stream #0.1[0x1100](eng): Audio: pcm_bluray, 48000 Hz, 5.1, s32, 6912
kb/s
Incompatible sample format 's32' for codec 'pcm_s16le', auto-selecting
format 's16'
[buffer @ 0x10047c0] w:1920 h:1080 pixfmt:yuv420p tb:1/1000000 sar:1/1
sws_param:

[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
Output #0, null, to 'pipe:':


  Metadata:
    encoder         : Lavf53.4.0
    Stream #0.0: Video: rawvideo, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9],
q=2-31, 200 kb/s, 90k tbn, 23.98 tbc
    Stream #0.1(eng): Audio: pcm_s16le, 48000 Hz, 5.1, s16, 4608 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop, [?] for help
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
frame=    1 fps=  0 q=0.0 Lsize=      -0kB time=00:00:00.04 bitrate=
 -4.2kbits/s dup=20 drop=0

video:0kB audio:84kB global headers:0kB muxing overhead -100.025463%
*real   0m 9.66s*
user    0m 8.48s
sys     0m 0.51s

*time ./ffmpeg -ss 18 -i Pirates_remux_short.ts -vframes 1 -vcodec copy -f
rawvideo /dev/null*
malloc: using debugging hooks
ffmpeg version 0.8.5, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jan  3 2012 14:43:18 with gcc 4.3.2
  configuration: --enable-cross-compile --target-os=linux
--cross-prefix=mipsisa32r2el-timesys-linux-gnu- --arch=mips
--extra-cflags=-O2
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  7. 0 / 53.  7. 0
  libavformat  53.  4. 0 / 53.  4. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
    Last message repeated 1 times


Input #0, mpegts, from 'Pirates_remux_short.ts':
  Duration: 00:00:59.22, start: 720.665000, bitrate: 33719 kb/s
  Program 1
    Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1
DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Stream #0.1[0x1100](eng): Audio: pcm_bluray, 48000 Hz, 5.1, s32, 6912
kb/s
File '/dev/null' already exists. Overwrite ? [y/N] y
Output #0, rawvideo, to '/dev/null':
  Metadata:
    encoder         : Lavf53.4.0
    Stream #0.0: Video: [27][0][0][0] / 0x001B, yuv420p, 1920x1080 [PAR 1:1
DAR 16:9], q=2-31, 90k tbn, 23.98 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
[NULL @ 0x100f690] non-existing SPS 13 referenced in buffering period
frame=    1 fps=  0 q=-1.0 Lsize=       0kB time=00:00:01.01 bitrate=
0.0kbits/s

video:429kB audio:0kB global headers:0kB muxing overhead -100.000000%
*real   0m 11.10s*
user    0m 6.64s
sys     0m 0.30s

*time ./ffmpeg -ss 18 -i Pirates_remux_short.ts -vf
select='eq(pict_type\,PICT_TYPE_I)' -vframes 1 -an -s 150x100 thumb.jpg*
malloc: using debugging hooks
ffmpeg version 0.8.5, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jan  3 2012 14:43:18 with gcc 4.3.2
  configuration: --enable-cross-compile --target-os=linux
--cross-prefix=mipsisa32r2el-timesys-linux-gnu- --arch=mips
--extra-cflags=-O2
  libavutil    51.  9. 1 / 51.  9. 1
  libavcodec   53.  7. 0 / 53.  7. 0
  libavformat  53.  4. 0 / 53.  4. 0
  libavdevice  53.  1. 1 / 53.  1. 1
  libavfilter   2. 23. 0 /  2. 23. 0
  libswscale    2.  0. 0 /  2.  0. 0
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
    Last message repeated 1 times


Input #0, mpegts, from 'Pirates_remux_short.ts':
  Duration: 00:00:59.22, start: 720.665000, bitrate: 33719 kb/s
  Program 1
    Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1
DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Stream #0.1[0x1100](eng): Audio: pcm_bluray, 48000 Hz, 5.1, s32, 6912
kb/s
Incompatible pixel format 'yuv420p' for codec 'mjpeg', auto-selecting
format 'yuvj420p'
[buffer @ 0x10114a0] w:1920 h:1080 pixfmt:yuv420p tb:1/1000000 sar:1/1
sws_param:

[scale @ 0x10043a0] w:1920 h:1080 fmt:yuv420p -> w:150 h:100 fmt:yuvj420p
flags:0x4
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
Output #0, image2, to 'thumb.jpg':


  Metadata:
    encoder         : Lavf53.4.0
    Stream #0.0: Video: mjpeg, yuvj420p, 150x100 [PAR 32:27 DAR 16:9],
q=2-31, 200 kb/s, 90k tbn, 23.98 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
[h264 @ 0x100f690] non-existing SPS 13 referenced in buffering period
frame=    1 fps=  0 q=3.6 Lsize=      -0kB time=00:00:00.04 bitrate=
 -4.2kbits/s dup=23 drop=0

video:3kB audio:0kB global headers:0kB muxing overhead -100.642523%
*real   0m 24.32s*
user    0m 21.80s
sys     0m 0.78s




On Sat, Jul 7, 2012 at 4:56 PM, Carl Eugen Hoyos <cehoyos at ag.or.at> wrote:

> Pavan Kulkarni <pavanvkbgm <at> gmail.com> writes:
>
> > I'm using the following command to get a thumbnail from a
> > video file. It uses the seek option to grab a thumbnail.
> > The problem is that this command takes up quite some time
> > especially with certain containers such as MPEG-2 TS.
> > (As much as 40 seconds).
>
> Did you try to find out what takes so long?
> Seeking, decoding, encoding (or even startup of the executable)?
> ffmpeg -i input.ts out.jpg
> ffmpeg -ss 18 -i input.ts -vframes 1 -f null -
> ffmpeg -ss 18 -i input.ts -vframes 1 -vcodec copy -f rawvideo /dev/null
>
> Why do you need the select filter?
> Nowadays, FFmpeg should seek to a keyframe.
> If I am wrong, please provide complete, uncut console output.
>
> Carl Eugen
>
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>


More information about the ffmpeg-user mailing list