<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Am 28.05.2012 16:41, schrieb Christian Brümmer:
<blockquote cite="mid:4FC38E9D.2080707@gmx.de" type="cite">
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
Hi,<br>
<br>
i am coding my own OnDemandLiveStream-Server (as discussed here: <a
moz-do-not-send="true" class="moz-txt-link-freetext"
href="http://lists.live555.com/pipermail/live-devel/2012-May/015178.html">http://lists.live555.com/pipermail/live-devel/2012-May/015178.html</a>)
using h264 encoded videoframes. I can play the videostream using
VLC but my Samsung Galaxy SII running ICS (Android 4.03) can't
open the stream.<br>
If i use the "mediaServer" and a *.264 videofile my smartphone is
able to play the video. <br>
Using my own server FramedSource is being created and destroyed
again (as i know thats a right behavior - for configuration
transfer) but other functions like doGetNextFrame() never been
called and the smartphone canceled the connection right after the
configuration transmission (as you can see in the log file). Since
my encoding functions never been called it must be a bad
rtsp-configuration. But i dont know what happens behind
OnDemandServerMediaSubsession (my media subsession) and
H264VideoFileServerMediaSubsession (mediaServer) eg. what are the
differences.<br>
<br>
You can see my whole code here <a moz-do-not-send="true"
class="moz-txt-link-freetext"
href="http://lists.live555.com/pipermail/live-devel/2012-May/015178.html">http://lists.live555.com/pipermail/live-devel/2012-May/015178.html</a>.<br>
The lines <br>
<small><i>05-28 16:00:34.540: I/ASessionDescription(24294):
a=fmtp:96
packetization-mode=1;profile-level-id=4D4033;sprop-parameter-sets=Z01AM5JUDAS0IAAAAwBAAAAM0eMGVA==,aO48gA==<br>
05-28 16:00:34.540: I/ASessionDescription(24294):
a=control:track1</i><br>
<big>existing only in the mediaServer-Log - this may be the
problem but i dont what it means!</big></small><span style="
color:#800080;"><br>
</span><br>
Best regards,<br>
Christian<br>
<br>
Android-Log for my own server:<br>
####<br>
<small><small>05-28 15:59:09.710: I/ARTSPConnection(24294):
status: RTSP/1.0 200 OK<br>
05-28 15:59:09.710: W/MyHandler(24294): OPTIONS completed with
result 0 (Success)<br>
05-28 15:59:09.715: I/ARTSPConnection(24294): status: RTSP/1.0
200 OK<br>
05-28 15:59:09.715: I/MyHandler(24294): DESCRIBE completed
with result 0 (Success)<br>
05-28 15:59:09.715: I/ASessionDescription(24294): v=0<br>
05-28 15:59:09.715: I/ASessionDescription(24294): o=-
1338213491406907 1 IN IP4 192.168.0.198<br>
05-28 15:59:09.715: I/ASessionDescription(24294): s=Session
streamed by "INGAme"<br>
05-28 15:59:09.715: I/ASessionDescription(24294): i=h264.3gp<br>
05-28 15:59:09.715: I/ASessionDescription(24294): t=0 0<br>
05-28 15:59:09.715: I/ASessionDescription(24294):
a=tool:LIVE555 Streaming Media v2012.04.21<br>
05-28 15:59:09.715: I/ASessionDescription(24294):
a=type:broadcast<br>
05-28 15:59:09.715: I/ASessionDescription(24294): a=control:*<br>
05-28 15:59:09.715: I/ASessionDescription(24294):
a=range:npt=0-<br>
05-28 15:59:09.715: I/ASessionDescription(24294):
a=x-qt-text-nam:Session streamed by "INGAme"<br>
05-28 15:59:09.715: I/ASessionDescription(24294):
a=x-qt-text-inf:h264.3gp<br>
05-28 15:59:09.715: I/ASessionDescription(24294): m=video 0
RTP/AVP 96<br>
05-28 15:59:09.715: I/ASessionDescription(24294): c=IN IP4
0.0.0.0<br>
05-28 15:59:09.715: I/ASessionDescription(24294): b=AS:480<br>
05-28 15:59:09.715: I/ASessionDescription(24294): a=rtpmap:96
H264/90000<br>
05-28 15:59:09.715: I/ASessionDescription(24294):
a=control:track1<br>
05-28 15:59:09.715: W/MyHandler(24294): mBaseURL is change to
rtsp://192.168.0.198/h264.3gp/ from 'content-base'<br>
05-28 15:59:09.715: W/MyHandler(24294): Property
[net.connectivity.qosbw] NOT Found, bwQoS=2147483647<br>
05-28 15:59:09.715: W/APacketSource(24294): Format:video 0
RTP/AVP 96 / MIME-Type:H264/90000<br>
<big><b>05-28 15:59:09.715: W/MyHandler(24294): Unsupported
format. Ignoring track #1.</b></big></small></small><br>
####<br>
<br>
Android-Log for mediaServer (working):<br>
####<br>
<small><small>05-28 16:00:34.535: I/ARTSPConnection(24294):
status: RTSP/1.0 200 OK<br>
05-28 16:00:34.540: I/MyHandler(24294): DESCRIBE completed
with result 0 (Success)<br>
05-28 16:00:34.540: I/ASessionDescription(24294): v=0<br>
05-28 16:00:34.540: I/ASessionDescription(24294): o=-
1338213636753913 1 IN IP4 192.168.0.198<br>
05-28 16:00:34.540: I/ASessionDescription(24294): s=H.264
Video, streamed by the LIVE555 Media Server<br>
05-28 16:00:34.540: I/ASessionDescription(24294):
i=working.264<br>
05-28 16:00:34.540: I/ASessionDescription(24294): t=0 0<br>
05-28 16:00:34.540: I/ASessionDescription(24294):
a=tool:LIVE555 Streaming Media v2011.11.20<br>
05-28 16:00:34.540: I/ASessionDescription(24294):
a=type:broadcast<br>
05-28 16:00:34.540: I/ASessionDescription(24294): a=control:*<br>
05-28 16:00:34.540: I/ASessionDescription(24294):
a=range:npt=0-<br>
05-28 16:00:34.540: I/ASessionDescription(24294):
a=x-qt-text-nam:H.264 Video, streamed by the LIVE555 Media
Server<br>
05-28 16:00:34.540: I/ASessionDescription(24294):
a=x-qt-text-inf:working.264<br>
05-28 16:00:34.540: I/ASessionDescription(24294): m=video 0
RTP/AVP 96<br>
05-28 16:00:34.540: I/ASessionDescription(24294): c=IN IP4
0.0.0.0<br>
05-28 16:00:34.540: I/ASessionDescription(24294): b=AS:500<br>
05-28 16:00:34.540: I/ASessionDescription(24294): a=rtpmap:96
H264/90000<br>
05-28 16:00:34.540: I/ASessionDescription(24294): a=fmtp:96
packetization-mode=1;profile-level-id=4D4033;sprop-parameter-sets=Z01AM5JUDAS0IAAAAwBAAAAM0eMGVA==,aO48gA==<br>
05-28 16:00:34.540: I/ASessionDescription(24294):
a=control:track1<br>
05-28 16:00:34.540: W/MyHandler(24294): mBaseURL is change to
rtsp://192.168.0.198/working.264/ from 'content-base'<br>
05-28 16:00:34.540: W/MyHandler(24294): Property
[net.connectivity.qosbw] NOT Found, bwQoS=2147483647<br>
05-28 16:00:34.540: W/APacketSource(24294): Format:video 0
RTP/AVP 96 / MIME-Type:H264/90000<br>
05-28 16:00:34.540: I/APacketSource(24294): dimensions 384x288<br>
<big><b>05-28 16:00:34.540: I/ARTPConnection(24294):
Start:16202</b></big></small></small><br>
####<span style=" color:#800080;"><br>
</span> <br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
live-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:live-devel@lists.live555.com">live-devel@lists.live555.com</a>
<a class="moz-txt-link-freetext" href="http://lists.live555.com/mailman/listinfo/live-devel">http://lists.live555.com/mailman/listinfo/live-devel</a>
</pre>
</blockquote>
<br>
I finally got it!<br>
<br>
I dealed with the source code especially the parseSPropParameterSets
function of H264VideoRTPSource.cpp. My fault was the representation
of the sprop-string. Only the "bytestream" without the qualifier "<small><small><big><big>sprop-parameter-sets="</big></big></small></small>
is needed. I created the right substring and now the setSPSandPPS
function is working as expected!<br>
<br>
So what ive done:<br>
<small><br>
FramedSource*
imLiveStreamMediaSubsession::createNewStreamSource(unsigned
clientSessionId, unsigned& estBitrate)<br>
{<br>
(...)<br>
FramedSource* h264NALSource =
imLiveStreamSource::createNew(envir(), param);<br>
H264VideoStreamFramer* framer =
H264VideoStreamFramer::createNew(envir(), h264NALSource);<br>
framer->setSPSandPPS(mSPropParameterSet); <b>// </b></small><b><small>mSPropParameterSet</small><small>
without<small> </small>"<small><small><big><big>sprop-parameter-sets="</big></big></small></small></small></b><br>
<small> return framer;<br>
}</small><small><small><small> </small><br>
<br>
<big>RTPSink*
imLiveStreamMediaSubsession::createNewRTPSink(Groupsock*
rtpGroupsock,<br>
unsigned char
rtpPayloadTypeIfDynamic,<br>
FramedSource*
/*inputSource*/)<br>
{<br>
return H264VideoRTPSink::createNew(envir(), rtpGroupsock,
rtpPayloadTypeIfDynamic, mSPropParameterSet); <br>
</big></small></small><small><b>// </b></small><b><small>mSPropParameterSet</small><small>
without<small> </small>"<small><small><big><big>sprop-parameter-sets="</big></big></small></small></small></b><br>
<small><small><big>}<br>
<big><br>
Hope that will help somebody in the future!<br>
<br>
Thanks for reading,<br>
best regards,<br>
Christian</big><br>
</big></small></small>
</body>
</html>