<div dir="ltr"><div><div><div><div><div><div>It isn't easy.<br><br></div><div>0. If you are accessing an RTSP server it is probably supplied in the SDP. Done in that case.<br></div>1. Grab the SPS and PPS data from the stream, starting with the 0x67 and 0x68 bytes (SPS and PPS NAL type codes). You can get these from a packet capture.<br>
</div>2. Convert the data of each to a hex string.<br></div>3. Base64 encode that string.<br></div>4. The sprop-parameter-set is both of those separated by a ','.<br><br>The easiest way to do it is to use => <a href="http://www.asciitohex.com/">http://www.asciitohex.com/</a><br>
<br></div>Enter the data in the hexadecimal box and get the Base64 from the Base64 box. Do both fields independently.<br><br></div>You *MAY* not need the sprop-parameter-set. For straight RTP you really don't. The *ONLY* reason it is needed is for RTSP to satisfy contrary server implementations (like GStreamer :-) ). The SPS and PPS are almost always signalled in band in the H264 stream. I have only encountered 1 RTSP server that doesn't ever signal them in-band. If you are working with a tablet or mobile device, the SPS and PPS *CHANGE* when the device is rotated and *MUST* be signalled immediately before the first frame that uses the new format. An encoder can use up to 16 SPS and 16 PPS records, so when you change the encoding the encoder might simply generate a second (or third, whatever) record. That way when the device is rotated back, the encoder could simply reference the original SPS and PPS. Most decoders (all? the spec says that they should) would save them so it would work properly.<br>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Apr 17, 2014 at 2:12 AM, Robin Aproskie <span dir="ltr"><<a href="mailto:raproskie@tellumat.com" target="_blank">raproskie@tellumat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Appologies<br>
<br>
Michael responded about 3 emails ago with the following pipeline output<br>
<br>
...<br>
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: seqnum = 33460<br>
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264,<br>
sprop-parameter-sets=(string)\"Z01AFeygoP2AiAAAAwALuaygAHixbLA\\=\\,aOvssg\\=\\=\", payload=(int)96, ssrc=(uint)2406338994, clock-base=(uint)156724985, seqnum-base=(uint)33460<br>
...<br>
<br>
So my question was ?I think aimed at Michael , in the pipeline above how do you work out the<br>
"sprop-parameter-sets"<br>
<br>
Thanks<br>
Robin<br>
<div class=""><br>
-----Original Message-----<br>
From: gstreamer-devel [mailto:<a href="mailto:gstreamer-devel-bounces@lists.freedesktop.org">gstreamer-devel-bounces@lists.freedesktop.org</a>] On Behalf Of Craig Routledge<br>
</div><div><div class="h5">Sent: Thursday, April 17, 2014 3:37 AM<br>
To: Discussion of the development of and with GStreamer<br>
Subject: Re: Trying to stream H264 over RTP<br>
<br>
On 04/16/2014 02:29:23 AM, Robin Aproskie wrote:<br>
> How do you work out the props?<br>
<br>
I'm sorry, I'm new to gstreamer and I don't understand the question.<br>
Could you be more specific please?<br>
<br>
<br>
<br>
> -----Original Message-----<br>
> From: gstreamer-devel<br>
> [mailto:<a href="mailto:gstreamer-devel-bounces@lists.freedesktop.org">gstreamer-devel-bounces@lists.freedesktop.org</a>] On Behalf Of<br>
> Craig Routledge<br>
> Sent: Wednesday, April 16, 2014 4:47 AM<br>
> To: Discussion of the development of and with GStreamer<br>
> Subject: Re: Trying to stream H264 over RTP<br>
><br>
> > On 04/15/2014 01:36 PM, Chuck Crisler wrote:<br>
> > > Set higher logging levels and/or get a packet capture to see if<br>
> the<br>
> > problem(s) is in the transmit or receive.<br>
><br>
> On 04/15/2014 05:46:57 PM, Michael Gruner wrote:<br>
> > You'll need to specify the full set caps from the payloader, just<br>
> the<br>
> > mimetype isn't enough. For example:<br>
><br>
> > And yes, this means that the receiver pipeline is fixed to the<br>
> sender<br>
> > pipeline's resolution and characteristics. Changing something on the<br>
> > sender will require a new pipeline on the receiver. If this is a<br>
> > problem for you, you might want to try using mpegtsmux or a smarter<br>
> > protocol like RTSP.<br>
><br>
> Thank you both. Nothing seemed obviously wrong in the output when I<br>
> increased the debug level. However, when I ran wireshark, I got an<br>
> unending list of "Destination unreachable (unreachable port)" ICMP<br>
> packets for the destination port.<br>
><br>
> The weird part is that my firewall should not be blocking this. I'm<br>
> running Fedora 20 with the standard firewall setup, the first two<br>
> entries of which are,<br>
><br>
> -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br>
> -A INPUT -i lo -j ACCEPT<br>
><br>
> So all loopback connections should go through.<br>
><br>
> Anyone have any ideas?<br>
><br>
><br>
> Also, I'd like to look into RTSP but although I found a packet<br>
> receiver<br>
> (rtspsrc)<br>
> with gst-inspect, I can't seem to figure out how to invoke the server.<br>
> The<br>
> gstreamer-rtsp-server documentation only lists the library functions.<br>
> Does it<br>
> have to be done via a program or can I create an RTSP stream with a<br>
> command line?<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div>**********************************************************************<br>
Relevant company disclaimers are available at the following addresses:<br>
Tellumat (Pty) Ltd e-mail: mailto:<a href="mailto:disclaimer@tellumat.com">disclaimer@tellumat.com</a>?Subject=Tellumat_Disclaimer<br>
Web: <a href="http://www.tellumat.com/email.aspx" target="_blank">http://www.tellumat.com/email.aspx</a><br>
**********************************************************************<br>
<div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br></div>