How to make rtpjitterbuffer work on a stream without timestamps?
<p>I am sending an H.264 bytestream over RTP using gstreamer.</p>

<pre><code># sender
gst-launch-1.0 filesrc location=my_stream.h264 ! h264parse disable-passthrough=true ! rtph264pay config-interval=10 pt=96 ! udpsink host=localhost port=5004
</code></pre>

<p>Then I am receiving the frames, decoding and displaying in other gstreamer instance.</p>

<pre><code># receiver
gst-launch-1.0 udpsrc port=5004 ! application/x-rtp,payload=96,media="video",encoding-name="H264",clock-rate="90000" ! rtph264depay ! h264parse ! decodebin ! xvimagesink
</code></pre>

<p>This works as is, but I want to try adding an rtpjitterbuffer in order to perfectly smooth out playback.</p>

<pre><code># receiver
gst-launch-1.0 udpsrc port=5004 ! application/x-rtp,payload=96,media="video",encoding-name="H264",clock-rate="90000" ! rtpjitterbuffer ! rtph264depay ! h264parse ! decodebin ! xvimagesink
</code></pre>

<p>However, as soon as I do, the receiver only displays a single frame and freezes.</p>

<p>If I replace the .h264 file with an MP4 file, the playback works great.</p>

<p>I assume that my h264 stream does not have the required timestamps to enable the jitter buffer to function.</p>

<p>I made slight progress by adding <code>identity datarate=1000000</code>. This allows the jitterbuffer to play, however this screws with my framerate because P frames have less data than I frames. Clearly the <code>identity</code> element adds the correct timestamps, but just with the wrong numbers.</p>

<p><strong>Is it possible to automatically generate timestamps on the sender by specifying the "framerate" caps correctly somewhere? So far my attempts have not worked.</strong></p>