A receiver of a H.264 RTSP/RTP stream cannot rely on receiving the SPS and PPS 
NAL units inside the stream.  As you’ve discovered, if your server sets 
“reuseFirstSource” to True, then only the first-connected receiver will get the 
SPS and PPS NAL units (if they appeared at the start of the media source) - but 
even this isn’t reliable, because the RTP packets are datagrams.

Instead, the RTSP/RTP receiver should get the SPS and PPS NAL units from the 
stream’s SDP description (which is returned as the result of the RTSP 
“DESCRIBE” command).  I.e., your receiver should (after it’s handled the result 
of “DESCRIBE”) call
        MediaSubsession::fmtp_spropparametersets()
on the stream’s “MediaSubsession” object (for the H.264 video ‘subsession’).  
This will give you an ASCII string that encodes the SPS and PPS NAL units.

The receiver may be able to use this ASCII string directly (e.g., if it’s using 
a “H264VideoFileSink” object to write the H.264 data to a file); see, for 
example, the code for “openRTSP”.  Alternatively, the receiver can convert this 
ASCII string into the actual H.264 NAL unit data (for SPS and PPS), by calling
        parseSPropParameterSets()
(There are several examples of this in the code.)


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


_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to