title: Is sprop-parameter-sets or profile-level-id the SDP parameter required to decode H264?
body: <p>I'm trying to understand what is the required parameter in SDP to be able to decode H264 from RTP packets.</p>
  
  <p>This is an related to <a href="https://stackoverflow.com/q/20538698/1214214">this question</a>, for the answer to that one works only in small number of cases.</p>
  
  <p><strong>Example</strong></p>
  
  <p>I am streaming from VLC with the following command.</p>
  
  <pre><code>vlc -vvv sample_video/big_buck_bunny_480p_h264.mov --sout '#transcode{vcodec=h264,vb=700,fps=20,scale=0.25,acodec=none}:rtp{dst=10.5.110.117,port=5004,ttl=1}'
  </code></pre>
  
  <p>This transcodes the video to:</p>
  
  <ul>
  <li>Bitrate: 700kbps  </li>
  <li>Frame rate: 20 per second  </li>
  <li>Resolution: 25% of the original</li>
  </ul>
  
  <p>The receiver correctly accepts and interprets the stream with the following SDP file (remove the first line, its just a name).</p>
  
  <pre><code>//test.sdp
  c=IN IP4 10.5.110.117
  m=video 5004 RTP/AVP 96
  a=rtpmap:96 H264/90000
  a=fmtp:96 profile-level-id=640014;sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=;
  </code></pre>
  
  <p>Command to run: <code>vlc test.sdp</code></p>
  
  <p>The document available <a href="http://bit.ly/SIPVideo" rel="noreferrer">here</a>, named <em>SIP Video Profile Best Practices</em> in chapter 7.2 for profile-level-id states:</p>
  
  <blockquote>
    <p><strong>profile-level-id</strong> </p>
    
    <p>While specified as optional (as are all parameters) in RFC 6184, the
    'profile-level-id' parameter is fundamental to the setup of the codec,
    and is also required for any further parameters to be specified. Hence
    all implementations should include this parameter in their SDPs, and
    should interpret it when receiving it. If not included, the default
    value is 420010, as specified in RFC 6184.</p>
  </blockquote>
  
  <p>The same document states the following for <em>sprop-parameter-sets</em>:</p>
  
  <blockquote>
    <p><strong>sprop-parameter-sets</strong> </p>
    
    <p>H.264 allows sequence and picture information to be sent both in-band,
    and out-of-band. SIP video implementations should signal this
    information in-band, conforming to the model prevalent in H.323 and in
    the overwhelming majority of existing SIP video implementations, and
    hence this parameter should not be included.</p>
  </blockquote>
  
  <p><strong>Problem 1</strong></p>
  
  <p>The video is correctly interpreted on the receiver even when <code>profile-level-id</code> is removed.</p>
  
  <pre><code>//test.sdp
  c=IN IP4 10.5.110.117
  m=video 5004 RTP/AVP 96
  a=rtpmap:96 H264/90000
  a=fmtp:96 sprop-parameter-sets=Z2QAFKzZQ0R+f/zBfMMAQAAAAwBAAAAKI8UKZYA=,aOvssiw=;
  </code></pre>
  
  <p>It <strong><em>doesn't</em></strong> work without the <code>sprop-parameter-sets</code>.</p>
  
  <p><strong>Problem 2</strong></p>
  
  <p>I've been wire-sharking different RTCPs,SIPs and SAPs and often the SDP <strong><em>doesn't</em></strong>  contain the <code>sprop-parameter-sets</code>.</p>
  
  <p><strong>Questions</strong></p>
  
  <ul>
  <li>Please explain the meanings and differences between the two paramters</li>
  <li>Based on the answer to the question above, explain the contrast that occurs in the problems</li>
  </ul>