[Libav-user] Using Libav to make HLS clips from H264
tylerjbrooks at gmail.com
Tue Nov 21 22:07:53 EET 2017
On Mon, Nov 20, 2017 at 2:33 PM, Carl Eugen Hoyos <ceffmpeg at gmail.com>
> 2017-11-20 23:12 GMT+01:00 Tyler Brooks <tylerjbrooks at gmail.com>:
> > My encoder gives me a timestamp on every frame (int64_t in microseconds).
> > The hardware is pretty good and the timestamps are very nearly always
> > separated to 1/framerate. In my case the framerate is 30fps so the
> > come out of the encoder about every 30ms (lets just say for easy math for
> > now).
> > Of course, I could use those timestamps for my pts/dts. Indeed, I have
> > tried.
> > But here is the root of my problem. The key frames are handed to me as
> > NAL packets (SPS, PPS, SEI, key_frame) all at the same time and all with
> > same timestamp. That makes sense. The metadata meant for the decoder
> > PPS and SEI) should to be associated with the leading key_frame and they
> > should all share the same timestamp. My problem is I don't know how to
> > a multi-packet 'AVPacket' to submit as a single frame to the
> > 'av_write_frame' call.
> Did you try to concatenate SPS, PPS and SEI with
> the first key-frame?
I tried concatenating the meta data with the key frame but no joy.
So, a friend pointed out to me that I might be going at this the wrong
way. The basic problem I am having is that I don't have an input context
so there is no h264 parser that can take the SPS, PPS and SEI packets and
do anything with them. I suspect that my loop appears to be working
because I am writing to an 'mpegts' file which, I think, is just h264
packets with the leading NAL zeroes replace with length words (some
bit-stream filter must be doing that). But that would mean that there
isn't much chance that I can get the timestamps right because I have to
submit them as frames. I can't submit them as 'extradata/sidedata' because
there is no codec to catch them.
Apparently I am supposed to write a custom IO context for the output of my
encoder and then do a normal input context. I have done some experiments
with this approach and it seems to work.
Thank you for your help Carl.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Libav-user