Hello Ross,

Hope you are well.
The Live video playing method you described below is working well for most 
h.264 stream formats. The Low Latency stream format supported by the AMD APU's 
DEM does do not work properly in my implementation (it half works at a slow or 
dropped rate). It does however work with the live555MediaServer.exe!

Can I call on your experience to spot something in the intra refresh h.264 
stream (http://culinarykits.co.uk/rich/error.264) that most other h264 streams 
do not require (http://culinarykits.co.uk/rich/noerror.264)?

You may be able to spot the issue looking at the image at the following URL 
describing the stream nal type differences:
http://culinarykits.co.uk/rich/h264_breakout.png

Am I missing a variable setting? I am parsing the stream correctly into each 
nal type and filling what up till now are the correct variables in my 
framedsource getnextframe.

Thanks in advance,
Rich.


From: live-devel [mailto:live-devel-boun...@ns.live555.com] On Behalf Of 
Richard Lince
Sent: 28 October 2014 17:35
To: LIVE555 Streaming Media - development & use
Subject: Re: [Live-devel] H264or5VideoStreamParser::parse() from a FramedSource

Thanks Ross, that has worked well.
Richard.

From: live-devel [mailto:live-devel-boun...@ns.live555.com] On Behalf Of Ross 
Finlayson
Sent: 24 October 2014 18:36
To: LIVE555 Streaming Media - development & use
Subject: Re: [Live-devel] H264or5VideoStreamParser::parse() from a FramedSource

After creating my own class's
•         class myRTSPSinkOndemandMediaSubsession : public 
OnDemandServerMediaSubsession
•         class myFrameSource : public FramedSource

If your “myFrameSource” class delivers discrete H.264 NAL units (i.e., one at a 
time), rather than an unstructured byte stream, then you MUST feed this into a 
“H264VideoStreamDiscreteFramer”, NOT a “H264VideoStreamFramer”.

In particular, your “myRTSPSinkOndemandMediaSubsession” class’s implementation 
of the "createNewStreamSource()” virtual function should look something like 
this:

//////////
FramedSource* myRTSPSinkOndemandMediaSubsession::createNewStreamSource(unsigned 
/*clientSessionId*/, unsigned& estBitrate) {
  estBitrate = 500; // in kbps; set this to an appropriate estimate of your 
stream’s bitrate

  // Create the video source:
  FramedSource* videoSource = myFrameSource::createNew(envir(), params);

  // Create a framer for the video stream:
  return H264VideoStreamDiscreteFramer::createNew(envir(), videoSource);
}
//////////

Note also that - because you’re feeding into a “H264VideoStreamDiscreteFramer” 
- each H.264 NAL unit delivered by your “myFrameSource” object MUST NOT begin 
with a ‘start code’ (0x00 0x00 0x00 0x01).

Also, if your encoder doesn’t automatically do so, then you should arrange for 
the first two NAL units delivered by your “myFrameSource” object to be a SPS 
and a PPS NAL unit.  (Alternatively, in your implementation of the 
“createNewRTPSink()” virtual function, you can use one of the forms of 
“H264VideoRTPSink::createNew()” that takes SPS and PPS NAL unit information as 
parameters.)

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/


______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________

______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________

______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________

______________________________________________________________________
This email has been scanned by the Symantec Email Security.cloud service.
For more information please visit http://www.symanteccloud.com
______________________________________________________________________
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to