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

server/2024/12/1 22:42:21/

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/server/146559.html

相关文章

llamaindex实战-ChatEngine-ReAct Agent模式

概述 ReAct 是一种基于Agent的聊天模式,构建在数据查询引擎之上。对于每次聊天交互,代理都会进入一个 ReAct 循环: 首先决定是否使用查询引擎工具并提出适当的输入 (可选)使用查询引擎工具并观察其输出 决定是否重复…

曲面单值化定理

曲面单值化定理(Uniformization Theorem)是复分析、几何和拓扑学中的一个重要结果。它为紧致黎曼曲面提供了标准化的几何结构,是研究复几何和代数几何的基础。以下是对曲面单值化定理的详细介绍以及其应用场景。 曲面单值化定理的陈述 基本版…

Python 异步编程:await 与 create_task 的比较与选择

Python 异步编程:await 与 create_task 的比较与选择 1. await 直接调用协程示例代码特点 2. await create_task(async 函数)示例代码特点 3. 区别与优劣并发性控制流适用场景 4. 示例代码5. 总结 在 Python 的异步编程中,await 和 asyncio.create_task(…

TorchMoji使用教程/环境配置(2024)

TorchMoji使用教程/环境配置(2024) TorchMoji简介 这是一个基于pytorch库,用于将文本分类成不同的多种emoji表情的库,适用于文本的情感分析 配置流程 从Anaconda官网根据提示安装conda git拉取TorchMoji git clone https://gi…

《Django 5 By Example》阅读笔记:p455-p492

《Django 5 By Example》学习第 16 天,p455-p492 总结,总计 38 页。 一、技术总结 1.myshop (1)打折功能 使用折扣码实现,但是折扣码是手动生成的,感觉实际业务中应该不是这样的。 (2)推荐功能 使用 Redis 做缓存&#xff0…

PyTorch3

自动微分: 自动微分模块torch.autograd负责自动计算张量操作的梯度,具有自动求导功能。自动微分模块是构成神经网络训练的必要模块,可以实现网络权重参数的更新,使得反向传播算法的实现变得简单而高效。 张量: Torc…

23种设计模式-生成器(Builder)设计模式

文章目录 一.什么是生成器设计模式?二.生成器模式的特点三.生成器模式的结构四.生成器模式的优缺点五.生成器模式的 C 实现六.生成器模式的 Java 实现七.代码解析八. 总结 类图: 生成器设计模式类图 一.什么是生成器设计模式? 生成器模式&am…

网络药理学之薛定谔Schrödinge Maestro:6、分子对接(Glide、Ligand docking)和可视化

本人是win11,薛定谔版本是12.9。 官网:https://www.schrodinger.com/ 本篇文章的示例大分子蛋白PDB ID为4KNN,小分子配体的MOL ID为MOL004004。 本文部分图源来自知乎https://zhuanlan.zhihu.com/p/416698194,推荐为原作者贡献阅读…