Most of the examples provided in doc/examples stop decoding when av_read_frame() returns a negative number, which can cause them to completely miss the last few frames of a video. I have verified that this is a problem with transcoding.c using this 300 frame video (with visually labelled frames for convenience) https://photosounder.com/misc/drop_loop_300_frames_360p.mp4 and by running `./transcoding.exe drop_loop_300_frames_360p.mp4 transcoded.mp4`. In a properly-written video player the original video's last frame shows "299" as expected whereas the transcoding example claims that only 298 were transcoded and the transcoded video indeed shows the last frame as labelled "297". Transcoding the transcoded video outputs only 296 frames, doing that again outputs only 294 frames, and so on, so this is quite serious, and a quick `grep 'av_read_frame' *.c -C 3` in the examples folder seems to show that all the examples might be affected, so that would be great for everyone relying on the examples if this could be addressed.

I don't quite know how to fix this except that somehow some empty frames should be provided when av_read_frame() returns a negative value. FFplay does it properly (see line 3007 of fftools/ffplay.c) however its code lacks the genericness and clarity of the examples which makes it hard to learn how to change the examples or my own code from it.
_______________________________________________
Libav-user mailing list
Libav-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/libav-user

To unsubscribe, visit link above, or email
libav-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to