0


Gstreamer中,appsink、appsrc、fakesink与第三方交互

gstreamer中,有多种方式和第三方交互,其中比较推荐的有appsink、appsrc,其实还有fakesink。

  • appsink和appsrc即可以成对使用,也可以单独使用。
  • appsink和fakesink用于将gst管道的数据发送出去,appsrc可以接收数据。
  • 类似opencv那种,做了封装,可以运行gst管道,可以直接运行gst管道使用appsink将数据传输到opencv。
  • appsrc是用于在一个程序中将数据从第三方传递回gstreamer管道进行进一步使用,也可以接收appsink数据,但是不能接收fakesink的数据。
  • fakesink,可以通过信号,将数据传递给第三方,没有appsrc去接。
appsrc使用

第三方向appsrc传送数据的方法有多种:

  • gst_app_src_push_buffer,需要提前设置appsrc的caps。除了gst_app_src_push_buffer,还有gst_app_src_push_buffer_list,gst_app_src_push_sample等// 创建 GStreamer 管道std::string pipeline_str ="appsrc name=source caps=\"video/x-raw,format=BGR,width=640,height=480\" ! videoconvert ! xvimagesink name=vsink2";GstElement* pipeline =gst_parse_launch(pipeline_str.c_str(),NULL);// 获取 appsrc 元素GstElement* appsrc =gst_bin_get_by_name(GST_BIN(pipeline),"source");// ...// 创建 GStreamer 缓冲区GstBuffer* buffer =gst_buffer_new_allocate(NULL, frame.total()* frame.elemSize(),NULL);GstMapInfo info;gst_buffer_map(buffer,&info, GST_MAP_WRITE);memcpy(info.data, frame.data, frame.total()* frame.elemSize());gst_buffer_unmap(buffer,&info
标签: 音视频 c++

本文转载自: https://blog.csdn.net/Alon1787/article/details/144080403
版权归原作者 阿龍1787 所有, 如有侵权,请联系我们删除。

“Gstreamer中,appsink、appsrc、fakesink与第三方交互”的评论:

还没有评论