[FFmpeg-devel] Request for comment: Tutorial
Thu May 24 20:05:54 CEST 2007
On 2007/05/21, at 22:47, Stephen Dranger wrote:
> I have written a rather lengthy ffmpeg tutorial that starts by going
> over Martin Bohme's old tutorial, then proceeding to recreate
> ffplay.c, teaching about how ffmpeg, SDL, and video in general works.
> Here's the link:
Excellent tutorial! That will be very helpful, especially the part
where you explain the syncing elements.
The problem I've had with writing a simple player using ffmpeg and
SDL (I even added a progress-bar like in most media apps!) is
detecting the END of the video... I.E. making sure that it PLAYS the
last frames, and doesn't try to read beyond the end incessantly,
jumping forward to the end/last frame, noticing that the player is at
the end and setting it pause playback and know that if you press
"play" again it should seek to the beginning again and unpause from
there... I think part of the problem was that some of the different
video files I was using might have had different ways of ending.
Another problem might have been seeking to the end, where I had to
get the last keyframe and built up (Mpeg4 videos, especially) to the
last frame's timestamp.
What I was doing was (and this was a few months ago when school was
lighter and I could afford to be working on it) getting the ratio
across the playback-bar thing when the user clicked it, then
multiplying that ratio by the value represented in 'AVFormatContext-
>streams[videoStream]->duration', turing it into an integer, and
seeking to there with AVSEEK_FLAG_BACKWARD, and then decoding/
rendering frames in memory until I got to the projected frame...
Perhaps this was the wrong way of going about it?
The other problem I ran into was that I would decode frames up to the
seeked-to video frame, but then the audio ratio was comnpletely
different... like the video frame either changed to quickly or lasted
noticably (to me) too long before changing... (I am syncing video-to-
audio, and seeking by audio didn't work because then I missed key
frames... (those are i-frames, right?) Did I miss something in audio
packets having multiple frames that allows me to more accurately
determine where to begin my audio playback after random seeking?
Anyway, that's my problem area, if you want to write about that. ^_^
Also, how does seeking by Bytes work? I saw in your end section how
it said that was better than by frame number?
Sorry for the long post, hope it was clear enough and on-topic enough
to not get flames too badly. ^_^
More information about the ffmpeg-devel