<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>