![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GStreamer
文章平均质量分 76
研究GStreamer技术框架,从demo到GStreamer源码分析
m_wordPlan
这个作者很懒,什么都没留下…
展开
-
Deepstream 之 appsink元素保存图片
目录1. appsink元素介绍2. appsink 元素结合cv::Mat保存图片2.1 开发环境2.2 软件代码与说明1. appsink元素介绍appsink 元素作为gstreamer的sink节点,它可以实现pipeline中的流媒体数据与其他应用程序的交换,比如实现gstreamer与CUDA交互,gstreamer与OpenCV交互,等等。主要作用是借助gstreamer pipeline的 media streaming, 我们通过appsink用一个buffer原创 2021-11-16 15:54:03 · 3683 阅读 · 1 评论 -
GStreamer中的时钟与同步
在播放复杂媒体时,每个声音和视频样本必须在特定时间以特定顺序播放。为此,GStreamer 提供了一种同步机制。GStreamer为以下用例提供支持:访问速度快于播放速度的非实时源。这是从文件中读取媒体并以同步方式播放的情况。在这种情况下,需要同步多个流,如音频、视频和字幕。 从多个实时源捕获和同步混合/混合媒体。这是一个典型的用例,您从麦克风/摄像头录制音频和视频并将其复用到文件中进行存储。 使用缓冲从(慢速)网络流进行流式传输。这是典型的 Web 流媒体案例,您使用 HTTP 从翻译 2021-07-29 19:39:39 · 1035 阅读 · 0 评论 -
GStreamer高级概念之Interfaces
将element用作 GObject,将GObject属性的使用作为应用程序和元素交互的一种简单方式。这种方法对于简单的 getter 和 setter 来说就足够了,但对于更复杂的东西就失败了。对于更复杂的用例,GStreamer 使用基于GObjectGTypeInterface类型的接口。URI处理程序接口到目前为止,在我们的示例中,我们仅使用“filesrc”元素展示了对本地文件的支持,但 GStreamer 支持更多的位置源。GStreamer 不需要应用程序知道任何URI细节...翻译 2021-07-29 16:41:59 · 232 阅读 · 0 评论 -
GStreamer之Metadata
MetadataGStreamer 明确区分了它支持的两种类型的元数据: 流标签,以非技术方式描述流的内容;和 Stream-info,这是对流属性的某种技术性描述。流标签示例包括歌曲的作者、歌曲的标题或它所属的专辑。流信息的示例包括视频大小、音频采样率、使用的编解码器等。tags使用GStreamer标签系统进行处理。Stream-info可以从一个已经协商过的GstCaps中检索到.这个GstCaps从GstPad中获取到。Metadata 读取stream-info 从GstPad翻译 2021-07-29 16:27:25 · 387 阅读 · 0 评论 -
GStreamer高级概念之位置跟踪与搜索
Position tracking and seeking到目前为止,我们已经了解了如何创建管道来进行媒体处理以及如何使其运行。大多数应用程序开发人员会对向用户提供有关媒体进度的反馈感兴趣。例如,媒体播放器会想要显示一个显示歌曲进度的滑块,通常还有一个指示流长度的标签。转码应用程序需要显示任务完成百分比的进度条。GStreamer 内置支持使用称为querying的概念来完成所有这些操作。由于查找非常相似,因此也将在此处讨论。Seeking是使用event的概念来完成的。Querying: 查询流的翻译 2021-07-29 15:36:48 · 359 阅读 · 0 评论 -
GStreamer基础教程之特定平台的元素
目标尽管 GStreamer 是一个多平台框架,但并非所有元素都适用于所有平台。例如,视频接收器严重依赖底层窗口系统,需要根据平台选择不同的接收器。在使用playbin或 等元素时,您通常不需要担心这一点在使用元素像playbin或autovideosink,但是,对于需要使用仅在特定平台上可用的接收器之一的情况,本教程会向您提示它们的一些特性。跨平台glimagesink此视频接收器基于OpenGL或OpenGL ES。它支持缩放图像的重新缩放和过滤以减轻混叠。它实现了 VideoOv..翻译 2021-07-29 14:16:04 · 634 阅读 · 0 评论 -
GStreamer基础教程之便利的元素
目标本教程列出了一些值得了解的方便的 GStreamer 元素。它们的范围从允许您轻松构建复杂管道的强大的多合一元素(如playbin),到在调试时非常有用的小帮助元素。为简单起见,以下示例是使用该gst-launch-1.0工具给出的。-v如果您想查看正在协商的 Pad Caps,请使用命令行参数。Bins这些是 Bin 元素,您将它们视为单个元素,它们负责实例化所有必要的内部管道以完成其任务。playbin该元素已在整个教程中广泛使用。它管理媒体播放的所有方面,从源到显示,...翻译 2021-07-29 13:27:32 · 781 阅读 · 1 评论 -
GStreamer基础教程之调试工具
目标有时,程序不能按照预期的执行并且从bus检索到的错误消息也不能提供足够多的信息。幸运的是,GStreamer携带有大量的调试信息,这些信息通常会提示我们可能存在的问题。这个教程的目标:怎样从GStreamer获取到更多的debug 信息。 怎么样打印自己的debug信息到GStreamer 日志。 怎样获取到管道的图表。打印debug信息debug日志GStreamer和它的插件充满了调试信息的跟踪。这就是说,在代码中的位置,有一段特别有趣的信息片段被打印到控制台,以及时间戳、..翻译 2021-07-27 12:10:22 · 1227 阅读 · 0 评论 -
GStreamer基础教程之媒体信息采集
目标有时您可能想要快速找出文件(或 URI)包含的媒体类型,或者您是否能够播放媒体。您可以构建一个管道,将其设置为运行,并观察总线消息,但 GStreamer 有一个实用程序可以为您完成这些。本教程显示: 如何提取有关 URI 的信息 如何确定 URI 是否可播放 介绍GstDiscoverer是在pbutils库(插件基础实用程序)中找到的实用程序对象,它接受 URI 或 URI 列表,并返回有关它们的信息。它可以在同步或异步模式下工作。在同步模式下,只有一个函数要调用,.翻译 2021-07-23 17:50:26 · 420 阅读 · 0 评论 -
GStreamer基础教程之缩短管道
目标使用GStreamer构建的管道不需要完全关闭,数据可以随时以多种方式注入管道并从中提取。本教程显示:如何将外部数据注入通用 GStreamer 管道。 如何从通用 GStreamer 管道中提取数据。 如何访问和操作这些数据。 介绍应用程序可以通过多种方式与流经 GStreamer 管道的数据进行交互。本教程描述了最简单的一个,因为它使用了专为此目的而创建的元素。用于将应用程序数据注入 GStreamer 管道的元素是appsrc,用于将 GStreamer 数据提翻译 2021-07-22 18:27:02 · 952 阅读 · 0 评论 -
GStreamer基础教程之多进程与pad的有效性
概况GStreamer可自动处理多线程操作,但在有些情况下,你需要手动的解耦线程。此教程就是展示如何处理此类问题。另外,完成了关于pad availability的说明,更多的为阐述以下三个问题:如何创建一个新的进程,这个进程是为了执行管道中部分功能。 什么是pad availability。 如何复制流。介绍多线程GStreamer 是一个多线程框架。这意味着,在内部,它会根据需要来创建和销毁线程,例如,将流与应用程序线程分离。此外,插件也可以自由地为自己的处理创建线程,例如,视频解翻译 2021-07-21 21:22:32 · 611 阅读 · 2 评论 -
GStreamer基础教程之媒体格式和pad功能
目标:Pad Capabilities 是 GStreamer 的一个基本元素,尽管大多数时候它们是不可见的,因为框架会自动处理它们。这个有点理论的教程显示:什么是Pad Capabilities 如何检索它们 何时取回它们 为什么你需要了解它们介绍:pad如前所述,Pads 允许信息进入和离开元素。Pad的Capabilities(或Caps,简称Caps),然后,指定什么样的信息可以通过 Pad 传播。例如,“分辨率为 320x200 像素和每秒 30 帧的 RGB 视频”,或“翻译 2021-07-21 17:16:25 · 945 阅读 · 0 评论 -
GStreamer之GstRegistry
一个Registry保存一组插件的元数据。设计原理GstRegistry对象是一个列表,此列表包含多个插件和操作插件的函数。每个GstPlugin与磁盘上的文件是一对一匹配的,并且可能会或可能不会在给定时间内加载插件。插件信息的主要来源始终是插件文件本身。因此,应用程序想要查询指定插件的有关信息,或想要搜索满足指定条件的功能,主要的操作方法是加载每个插件并查看在默认注册表中搜集的结果信息。显然这是一个耗时的过程,因此我们将信息缓存在注册表文件中。缓存文件的格式和位置是gstreamer内部的翻译 2021-07-21 10:52:49 · 301 阅读 · 0 评论