This is the exact stream format I get from my encoders Given nal type 7 = SPS,8 = PPS, 5 = IDR slices, and 1 = Diff frames I see [7][8][5][1][1][1][1][1] of 6fps streams less than Mp I see [7][8][5][5][5][1][1][1][1][1] on 6ms multimega-pixel streams.
Some streams to NOT have the SPS and PPS in the stream so I datamine them from the SDP packet and remember them for insertion into the stream. This makes libavcodec happy. I always send the encoder a SPS+PPS + IDRSlice as an aggregated frame (00 00 01 in front of each, it need that delimetter) I have a filter that does this aggregation for me. From: live-devel-boun...@ns.live555.com [mailto:live-devel-boun...@ns.live555.com] On Behalf Of David J Myers Sent: Wednesday, December 21, 2011 9:22 AM To: live-de...@ns.live555.com Subject: Re: [Live-devel] Live555 EventLoop Crash Hi Ross, >> On further examination of my encoded frame data, it looks like an I-frame >> consists of 3 NAL units, each preceded by 00 00 00 01, the first NALU is 17 >> bytes long, the second NALU is 9 bytes long, and the 3rd NALU is the rest of >> the frame size. Each P-frame is just one NALU. >> My code is now using H264VideoStreamDiscreteFramer and sending each NAL unit >> one by one. So each I-Frame is sent with 3 calls to afterGetting(this). >You can do this only if each call to "afterGetting(this)" corresponds to >exactly one earlier call to "doGetNextFrame()". I.e., you *must not* call >"afterGetting(this)" more than once for each call to "doGetNextFrame()". >I.e, if you want to deliver these three NAL units - one at a time - to the >downstream object (in this case, a "H264VideoStreamDiscreteFramer"), then you >must really do so 'one at a time'. Each call to "doGetNextFrame()" must be >followed by one (and only one) data delivery, followed by a call to >"FramedSource::afterGetting()". >If you do this properly, though, then this should produce a proper RTSP/RTP >stream. (However, I suggest that you test this first with "openRTSP", rather >than VLC.) Ok, understood. How do I get these extra calls to doGetNextFrame()? Currently I'm getting one call to doGetNextFrame(), but I'm then sending all three NAL units for the frame which, as you say, doesn't produce a decent stream. - David ________________________________ No virus found in this message. Checked by AVG - www.avg.com<http://www.avg.com> Version: 2012.0.1890 / Virus Database: 2109/4694 - Release Date: 12/21/11
_______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel