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
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel