[FFmpeg-user] Reducing frame rate without reencoding

Ronald F. Guilmette rfg at tristatelogic.com
Thu Oct 27 03:47:00 EEST 2016


In message <bc31bba9-06eb-579a-8904-fc9a4ed1a469 at sky.com>, 
"Sven C. Dack" <sven.c.dack at sky.com> wrote:

>this is only possible when the input is composed of absolute frames, i.e.  with 
>Motion JPEG. Your video will probably have been compressed with one of the more 
>advanced algorithms and these purposely do not treat frames as absolute, but use 
>their differences for their encoding. As such can you not drop every second frame,
>because you don't have full frames and dropping some of the intermediate 
>frame information means you lose vital information for reconstructing the frames.

I accept your answer, fully and without reservation, but it sort-of
makes me think that I have misunderstood, in a rather fundamental way,
how video compression works, specifically with respect to MPEG4/AVC.
(I should have mentioned this earlier, but that is the specific type
of video I'm dealing with.)

I though that for, e.g., MPEG4/AVC, most frames are expressed in terms
of their differences from some slightly earlier complete reference frame.

If so, and if care was taken so that all of the reference frames were 
preserved in full, wouldn't it be possible to drop, say, all odd numbered
frames in the following sequence of frames, up until the next reference
frame?

As I say, I am already resigned to accepting that, for now, I'll have
just go ahead and reencode down to my desired lower frame rate, but I'm
still somewhat interested in understanding why what I've described above
wouldn't work.  I may learn something!  And that's never a bad thing.

Is each frame within, say, an MPEG4/AVC video dependent upon -both- the
nearest preceeding reference frame -and- also the other non-reference
preceeding frames ?

I guess so.  If so, then I guess that also explains why some folks have
written that MPEG4/AVC is harder to edit than, say, Motion JPEG... yes?


More information about the ffmpeg-user mailing list