<div dir="ltr"><div>The problem was indeed that the encoder did not receive any data. I set property "disable-passthrough" of the h264parse to true and then is showed for each pushed buffer "received invalid RTP payload".</div><div><br></div><div>I had no idea what I was doing wrong. Then I saw that GstBuffer has a function gst_buffer_memcmp(). In the following code I compared 'buffer' to 'data'. To my surprise 'buffer' and 'data' weren't the same.</div><div><i>Code (not working):</i></div><div><i><span class="Apple-tab-span" style="white-space:pre">    </span>GstBuffer *buffer = video.PullBuffer();<br></i></div><div><i><span class="Apple-tab-span" style="white-space:pre"> </span>bufferSize = gst_buffer_get_size( buffer );</i></div><div><i><span class="Apple-tab-span" style="white-space:pre">       </span>unsigned char *data = new unsigned char[bufferSize];</i></div><div><i><span class="Apple-tab-span" style="white-space:pre">      </span><b>memcpy( data, buffer, bufferSize );</b></i></div><div><br></div><div>Then I replaced memcpy with gst_buffer_extract(). gst_buffer_memcmp() shown now that 'buffer' is the same as 'data'.</div><div><i>Code (working):</i></div><div><div><i><span class="Apple-tab-span" style="white-space:pre">    </span>GstBuffer *buffer = video.PullBuffer();<br></i></div><div><i><span class="Apple-tab-span" style="white-space:pre"> </span>bufferSize = gst_buffer_get_size( buffer );</i></div><div><i><span class="Apple-tab-span" style="white-space:pre">       </span>unsigned char *data = new unsigned char[bufferSize];</i></div><div><i><span class="Apple-tab-span" style="white-space:pre">      </span><b>gst_buffer_extract( buffer, 0, data, bufferSize );</b></i></div></div><div><i><b><br></b></i></div><div>Is there anybody who can tell me what the difference is between memcpy and gst_buffer_extract? To my knowledge they do exactly the same, but apparently gst_buffer_extract does something different/extra.</div></div>