On Oct 3, 2014, at 5:53 AM, Nicolas George <[email protected]> wrote:
> I may be wrong, but I find very unlikely that anyone here would help you
> debug hundreds of lines of code in a fringe language for a proprietary
> operating system.
I do believe there are claims to support OS X, which is Darwin, which is a
essentially a *nix derivative. If FFmpeg doesn’t work as intended on or support
OS X, then it would be a good idea to update the FFmpeg web site and doc to
state this explicitly.
> If you want to be able to expect help realistically, I
> believe you need to trim down your code to the bare minimum exhibiting the
I already did so — I directed you toward QTFFAVStreamer.m, where the relevant
FFmpeg code resides. If you want a further narrowing of the code, see the
- (BOOL)streamVideoFrame:(CVImageBufferRef)frameBuffer
sampleBuffer:(QTSampleBuffer *)sampleBuffer
error:(NSError **)error;
method in the QTFFAVStreamer.m file. That method takes a captured frame,
encodes the frame, and streams the frame. That method is where the issue
resides. Note — previous requests on this list desired a fully working code
example. What I have posted satisfies this requirement as well. So either way,
requisite code is provided.
OR
As an alternative, to support the claim that FFmpeg supports variable FPS
encoding, you could provide a working code sample which shows this, or the
FFmpeg developers could (should) add this to the examples accompanying the
source. I’d jump on revisiting the code I posted provided that there was some
example to follow which demonstrated this. I reviewed FFmpeg.c, and I couldn’t
put my finger on where exactly this was shown. This code isn’t documented, and
there’s no explanation for what the lines of code inside this file are doing
(or attempting to), so without some further resource, I didn’t find the answer
readily available there.
Long story short — if I feed 15fps (or anything lower than 30fps) to an encoder
with a time_base.den of 30, playback is at double the speed, regardless of what
else I do. I have tried:
- Changing pts, dts, and duration.
- Changing time_base.den.
None of those worked. Only encoding each frame multiple times, with consistent
pts and dts (in other words, giving the codec exactly time_base.den frames)
worked. This also wasn’t an issue of the player either. I tested playback on
VLC, Wondershare, and Adobe Flash player — all with identical results. This is
an encoder issue.
In addition to my own issues, since I posted this ~ a year ago, I’ve had
several contact me off-list with exactly the same problem, seeing exactly the
same results. So given that this isn’t an issue only I am experiencing, this
whole thing can be made a moot point if sample code is provided (please at
least minimally document it so that someone who reads it has some inkling of
what it does) which just demonstrates the functionality. I understand that some
claim FFmpeg - (libraries, not the binary) can handle this, and I don’t even
doubt it, but to date, I’ve seen no code anywhere which shows this. I’ll be the
first one to laud and believe. Just post the code.
Thanks,
Brad
_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user