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

news/2024/11/29 1:20:05/

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

http://www.ppmy.cn/news/1550775.html

相关文章

【设计模式】【结构型模式(Structural Patterns)】之适配器模式(Adapter Pattern)

1. 设计模式原理说明 适配器模式(Adapter Pattern) 是一种结构型设计模式,它允许不兼容的接口协同工作。适配器模式可以将一个类的接口转换成另一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。适配器模式分为两…

Java MySQL 连接

Java MySQL 连接 本章节我们为大家介绍 Java 如何使用 使用 JDBC 连接 MySQL 数据库。 Java 连接 MySQL 需要驱动包,最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,解压后得到 jar 库文件,然后在对应的项目中导…

鸿蒙面试 --- 性能优化

性能优化可以从三个方面入手 感知流畅、渲染性能、运行性能 感知流畅 在应用开发中,动画可以为用户界面增添生动、流畅的交互效果,提升用户对应用的好感度。然而,滥用动画也会导致应用性能下降,消耗过多的系统资源,…

信息技术与数据安全:打造高效、安全的数据处理系统

信息技术与数据安全:打造高效、安全的数据处理系统 在当今这个信息化高速发展的时代,数据已成为企业运营和决策的核心资源。随着大数据、云计算、人工智能等信息技术的飞速发展,数据处理能力得到了前所未有的提升,但同时也对数据…

windows C#-使用反射访问特性

你可以定义自定义特性并将其放入源代码中这一事实,在没有检索该信息并对其进行操作的方法的情况下将没有任何价值。 通过使用反射,可以检索通过自定义特性定义的信息。 主要方法是 GetCustomAttributes,它返回对象数组,这些对象在…

Unity类银河战士恶魔城学习总结(P142 Save System 保存系统)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了保存系统的初步建立 windows系统最终货币的保存文件被保存在如下路径下 SaveManager.cs 功能概述 SaveManager 是一个单例…

九、Ubuntu Linux操作系统

一、Ubuntu简介 Ubuntu Linux是由南非人马克沙特尔沃思(Mark Shutteworth)创办的基于Debian Linux的操作系统,于2004年10月公布Ubuntu是一个以桌面应用为主的Linux发行版操作系统Ubuntu拥有庞大的社区力量,用户可以方便地从社区获得帮助其官方网站:http…

在React中实践一些软件设计思想 ✅

策略设计模式 先写几句废话:其实在日常开发中,「设计模式」通常在不知不觉间已经被用了不少了,只是我们或许没察觉。比如通过插槽来增强组件的功能,这涉及到「装饰设计模式」;lodash或者jQuery的使用我觉得甚至算得上…