[Ffmpeg-devel] av_seek_frame() units
Gary Corcoran
gcorcoran
Thu Jul 7 00:49:38 CEST 2005
Steve Willis wrote:
> Gary Corcoran wrote:
>
>> Steve Willis wrote:
>>
>>> Nathan Kurz wrote:
>>>
>>>> On Wed, Jul 06, 2005 at 12:04:44PM -0700, Ian Gowen wrote:
>>>>
>>>>> On 7/6/05, Andy Parkins <andyparkins at gmail.com> wrote:
>>>>>
>>>>>> I'm not sure why you would need to do this. What source for
>>>>>> frame_number are
>>>>>> you using - it's not in any of the AV structures.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> I'm working on a video editing application. If the user wants to
>>>>> preview frame 320, I
>>>>> need it to seek to frame 320, not the nearest keyframe or a frame in
>>>>> the general
>>>>> vicinity of frame 320.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Not to be too discouraging, but you should also know that seek is
>>>> badly broken for many formats. It's quite possible that you are doing
>>>> things correctly, but are being bitten by bugs. If you search the
>>>> archives from (I think) the end of last year you'll find a fairly
>>>> elaborate test program I wrote to test which formats work. I had
>>>> submitted it as a regression test, but as it pointed out new bugs
>>>> rather than regressions it wasn't included in the test suite.
>>>>
>>>> Nathan Kurz
>>>> nate at verse.com
>>>>
>>>> _______________________________________________
>>>> ffmpeg-devel mailing list
>>>> ffmpeg-devel at mplayerhq.hu
>>>> http://mplayerhq.hu/mailman/listinfo/ffmpeg-devel
>>>
>>>
>>>
>>>
>>> It sounds like Ian and I are both working on applications that need
>>> precise frame positioning. In light of what Nathan said above, can
>>> anyone offer recommendations for the best way to ensure that the user
>>> is looking at the frame he or she thinks they should be looking at?
>>> Is there a reliable way to detect when seek has gone wrong ("I
>>> expected to be looking at the frame for time 13.125 seconds, but I
>>> actually got the frame for time X...error!")?
>>>
>>> In response to my original question a couple of weeks ago, someone
>>> suggested using a format like MJPEG that treats all frames as
>>> keyframes. If there is not a more general solution for precicely
>>> positioning arbitrarily-formatted streams, could someone give me an
>>> expert opinion on the best format to transcode all input videos into?
>>> The videos I am dealing with are printed from high speed film (1000
>>> fps) for scientific analysis frame-by-frame. I'm looking for a
>>> reasonable balance between decoding speed and size. Image quality is
>>> of course important for seeing detail in each frame of interest. Most
>>> important is that the frame shown is actually correct for the time in
>>> question to match up with external sensor data, so a format that does
>>> not use keyframes would also be important.
>>
>>
>>
>> Couldn't you convert it to MPEG, specifying that only I-frames
>> (keyframes)
>> be used? Then the "seek only directly works to I-frames" feature
>> wouldn't
>> be a problem...
>
>
> I don't think MPEG supports arbitrary frame rates. The FAQ on the ffmpeg
> Web site mentions that only a small number of frame rates are allowed.
> The videos are printed from film. They are usually in the ballpark of
> 1000 fps. No player can realistically play them at this speed, but they
> work very well for frame-by-frame analysis. One other requirement for a
> format I should mention is the ability to encode an arbitrary number of
> video streams. Some of these videos contain multiple video tracks with
> different angles of the same event. I need a format that lets me
> preserve this in a single file.
>
> Thanks for your suggestion, and please, let me know if I'm wrong about
> MPEG and framerates!
Well, since it sounds like you do NOT require realtime playback of the
video - you want to edit and/or look frame-by-frame, right? - then who
cares what framerate the MPEG is? That is, couldn't you just convert
every frame of your original video to MPEG at say 30 fps, and then
edit/examine frames? Sure if you tried to play it realtime it would
be 33 times too slow - but wouldn't that be an advantage for scientific
analysis? :) Then after editing you could always convert to some other
format that supported 1000fps (but isn't seekable), if that's needed.
But I don't know anything about encoding multiple video streams in
a single file...
Gary
More information about the ffmpeg-devel
mailing list