[Ffmpeg-devel] cutting a file and getting still images
Cyrus A
lists
Thu Nov 2 19:11:55 CET 2006
I'm trying to crop a 30-minute or hour-long segment of video down to 1
minute and then immediately generate 60 still frames (one for each
second) from the resulting chopped video.
Here are the commands I used:
long input file generated with:
ffmpeg -v 0 -i /dev/video0 -async 1 -y -vcodec mpeg4 -acodec mp3 -t 1780
-b 1750k -ab 192 -s 480x384 -r ntsc -vtag DX50 'long_input_file.avi'
"cut" command:
ffmpeg -ss 180 -t 60 -y -vcodec copy -acodec copy -i long_input_file.avi
short_output_file.avi
still frames generation:
ffmpeg -i short_output_file.avi -r 1 -f image2 frame%03d.jpg
Console output for second command:
FFmpeg version SVN-r6849, Copyright (c) 2000-2006 Fabrice Bellard, et al.
configuration: --enable-mp3lame
libavutil version: 49.0.2
libavcodec version: 51.23.0
libavformat version: 50.6.0
built on Oct 31 2006 12:55:14, gcc: 4.1.1 20060525 (Red Hat 4.1.1-1)
Seems that stream 0 comes from film source: 30000.00 (30000/1) -> 29.97
(30000/1001)
Input #0, avi, from 'short_output_file.avi':
Duration: 00:01:00.3, start: 0.000000, bitrate: 1972 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 480x384, 29.97 fps(r)
Stream #0.1: Audio: mp3, 48000 Hz, stereo, 192 kb/s
Output #0, image2, to 'frame%03d.jpg':
Stream #0.0: Video: mjpeg, yuvj420p, 480x384, q=2-31, 200 kb/s, 1.00
fps(c)
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
frame= 1 q=5.9 Lsize= 0kB time=1.0 bitrate= 0.0kbits/s
video:22kB audio:0kB global headers:0kB muxing overhead -100.000000%
Result:
Only the first image (frame001.jpg) is created.
Observations:
The ffmpeg long file generation command works well. The file looks and
sounds good. Similarly,the "cutting" command above seems to work well. I
can get any size video from any part of the longer video with ease. The
videos play normally in mplayer as well as DivX and WMP on windows.
However, it's the stills frame generation that seems broken. Two caveats:
First, if the stills generation command is run on a file that was "cut"
using "-ss 0 -t 60" (no seek), the stills are generated correctly.
Anything other than "-ss 0" causes problems.
Second, videos recorded by an old version of ffmpeg (0.4.8 -- probably
early 2005 or late 2004) seem to be "cut" and "stills extracted"
correctly by the series of commands above.
file command output for avi recorded with "old" ffmpeg and chopped with
rev6849: RIFF (little-endian) data, AVI, 480 x 384, ~30 fps, video:
DivX 4, audio: MPEG-1 Layer 3 (mono, 44100 Hz)
file command output for avi recorded and chopped with rev6849: RIFF
(little-endian) data, AVI, 480 x 384, ~30 fps, video: DivX 5, audio:
MPEG-1 Layer 3 (stereo, 48000 Hz)
I don't think the recording rate nor the DivX 4 vs DivX5 differences
have anything to do with my problem, but I could be wrong.
FILES:
A file recorded with "old" ffmpeg and chopped on rev 6849 can be found here:
http://wkyt.dynalias.com/rec_with_old_chopped_with_6849.avi
A file recorded with rev 6849 and chopped with rev 6849 can be found here:
http://wkyt.dynalias.com/rec_with_6849_and_chopped_with_6849.avi
Please let me know what you think of this problem. It is the very final
step in a system I've been working on sporadically for about 9 months. I
might just take the rest of the week off if I can get this to work.
Thanks again for your help.
Cyrus
More information about the ffmpeg-devel
mailing list