[FFmpeg-user] Cut-edits with ffmpeg
jiachielee at live.com
Thu Jul 25 16:05:51 CEST 2013
Let’s see if I get your question correctly. You have a video with
uncompressed file format. You want to
edit some frames; but even if you found the exact frame number, ffmpeg might
not be able to extract the
frame you want. Assuming that I understood your question correctly, here is
what I would do if I were
you or in similar situation.
Assume that your video is of constant frame rate, frame number will then be
directly proportional to the
time. I’m not really sure which video codec is being used to store video
information. I would assume
that you might be in favor of lossless compression compared with lossy
compression, especially when you
still need to edit the videos. You can transcode the video to H.264 lossless
if it is not already in
ffmpeg -i "input.avi" -vcodec "libx264" -crf "0" "input.mkv"
You can convert the entire video into a series of image sequence but they
may end up costing a lot of
storage space. More efficiently, you can just get a small part of video
which contains the frames you
want to edit. You can do that with mkvtoolnix. It split, merge, remove
tracks, and add tracks to MKV
file, without re-encoding the video/audio/subtitle; but when it comes to
accuracy of splitting video
files based on duration or time, there will be discrepancies due to
limitation of accuracy. While it
cannot split the frame you want exactly, it can split video to a small part,
which you can later convert
that small part to a series of images sequence, instead of entire videos.
ffmpeg -i "input.mkv" "frames\f_%%1d.png"
After you edited the frames you want,
ffmpeg -r "24" -i "frames\f_%%1d.png" -vcodec "libx264" -crf "0"
Here I assume that the frame rate of your video is 24 FPS.
You can then join the video back using mkvtoolnix.
If your video source is of variable frame rate, you need to how the frame
rate changes over time in
order to preserve the original frame rate. The only way to know exactly is
that you actually specify how
the frame rate changes yourself. If you do know how the frame rate changes,
To convert the video part to image sequence without changing frame rate,
ffmpeg -r "1" "input.mkv" "frames\f_%%1d.png"
To change it back to videos, you need to do it part by part, which means
that each part is of constant
frame rate; when they are joined together, its frame rate is of course
If you do not know how the frame rate changes but do know that frame rate is
variable due to the setting
of recording device or other reasons, you do not want to change the playback
speed, you need to change
the frame rate to a constant frame rate you find suitable, for example,
ffmpeg -i "input.avi" -vf "fps=24" -vcodec "libx264" -crf "0" "input.mkv"
Using video filter to change frame rate will of course result in the drop or
add of frames to achieve
the constant frame rate you designated. Personally, I generally use 24 FPS,
the industry standard
adopted by film industry.
View this message in context: http://ffmpeg-users.933282.n4.nabble.com/Cut-edits-with-ffmpeg-tp4660163p4660176.html
Sent from the FFmpeg-users mailing list archive at Nabble.com.
More information about the ffmpeg-user