有一位朋友看了吾《gstreamer向appsrc发送帧画面的代码》,表示不知道怎么填充数据。这个吾正好也做了(当时能找到办法也是运气好),就开放出来,希望能给朋友们带来帮助:
#define BUFFER_SIZE 4096 static void callback_feed_data_start (GstElement * source, guint size, void * arg) { GstFlowReturn ret; GstMapInfo gst_map; GstBuffer *gst_buffer = NULL; char data_buffer[BUFFER_SIZE]; int data_size = BUFFER_SIZE; //需要时加线程锁、条件锁。 gst_buffer = gst_buffer_new_allocate (NULL, data_size, NULL); gst_buffer_map (gst_buffer, &gst_map, GST_MAP_WRITE); memset(data_buffer, 0x80, data_size); memcpy( (guchar *)gst_map.data, data_buffer, data_size); g_signal_emit_by_name (source, "push-buffer", gst_buffer, &ret); gst_buffer_unmap (gst_buffer, &gst_map); gst_buffer_unref (gst_buffer); //释放线程锁、条件锁。 }