GStreamer Basic tutorial 学习笔记(七)

这篇具有很好参考价值的文章主要介绍了GStreamer Basic tutorial 学习笔记(七)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

多线程处理

目标:GStreamer可以自动处理多线程,但在某些情况下,可能需要手动分离线程。
介绍:GStreamer 是一个多线程框架。这意味着在内部,它根据需要创建和销毁线程,例如将流媒体与应用程序线程分离。此外,插件还可以自由地为它们自己的处理创建线程,例如,视频解码器可以创建 4 个线程以充分利用具有 4 个核心的 CPU。

此外,在构建管道时,应用程序可以显式指定分支(管道的一部分)在不同的线程上运行(例如,使音频和视频解码器同时执行)。

这可以通过使用队列元素来实现。队列元素的工作原理如下:接收端简单地将数据入队并返回控制权。在不同的线程上,数据被出队并向下游推送。此元素还用于缓冲,后续在流媒体教程中会看到。可以通过属性控制队列的大小。

Request pads

在基础教程 3:动态管道中,我们看到了一个元素(uridecodebin),它一开始没有 pad,而是在数据开始流动,并且元素获得媒体信息时出现的。这些被称为“Sometimes Pads”,与随时可用的常规 pad 相对应,后者称为“Always pads”。

第三种类型的 padRequest pads,它是根据需要创建的。经典的例子是 tee 元素,它有一个sink pad 和没有初始化的source pads:它们需要被请求,然后 tee 添加它们。通过这种方式,输入流可以被复制任意多次。缺点是与“Sometimes Pads”连接元素不像与“Always pads”连接那样自动。

注意:在 PLAYINGPAUSED 状态下请求(或释放)pad 时,需要采取额外的注意事项(pad 阻塞),本教程中未描述这些。不过,在 NULLREADY 状态下请求(或释放)pad 是线程安全的。

函数与知识点

  1. AudioTestSrc 属性:可以用来生成基本的音频信号。它支持几种不同的波形,并允许设置基本频率和音量。一些波形可能使用额外的属性。

  2. Wavescope 属性:是一个简单的音频可视化元素。它以示波器的方式渲染波形。

  3. 转换元素(audioconvertaudioresamplevideoconvert)是为了确保管道可以链接起来。事实上,音频和视频输出的Capabilities取决于硬件,在设计时您不知道它们是否与audiotestsrcwavescope产生的Caps匹配。然而,如果Caps匹配,这些元素将处于"直通模式",不会修改信号,对性能几乎没有影响。

  4. freq 介绍:audiotestsrc的属性之一。

    功能:“freq”属性控制波的频率(215Hz可以使波在窗口中几乎静止)。
    注意:此样式和visualshader属性用于使wavescope波连续显示。

  5. gst_element_link_many() 警告:实际上可以链接具有请求pad的元素。它在内部请求了pad,因此不必担心链接的元素是具有Always pads还是Request pads这是不方便的,可能听起来很奇怪,因为您仍然需要在之后释放申请的pads,并且如果pad是通过gst_element_link_many()自动请求的,很容易忘记。

  6. GstPad *gst_element_request_pad_simple (GstElement * element, const gchar * name) 功能:按名称(例如“src_%d”)从元素中检索一个pad。此版本仅检索Request padspad应该使用gst_element_release_request_pad()释放。

    说明:如果pad需要具有特定的名称(例如,名称是“src_1”而不是“src_%u”),则该方法比手动获取pad模板并调用gst_element_request_pad()慢。

  7. GstPad *gst_element_get_static_pad (GstElement * element, const gchar * name) 功能:按名称从元素中检索pad。此版本仅检索已经存在的(即“静态”)pads

  8. GstPadLinkReturn gst_pad_link (GstPad * srcpad, GstPad * sinkpad) 功能:链接source padsink pad

    说明:gst_element_get_static_pad()内部使用了gst_element_link()gst_element_link_many()文章来源地址https://www.toymoban.com/news/detail-593637.html

cleanup

  1. gst_element_release_request_pad() 解除函数与知识点6的引用。
  2. gst_object_unref() 解除tee的引用。

到了这里,关于GStreamer Basic tutorial 学习笔记(七)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 地狱已满服务器搭建教程-1 服务器安装篇 NMRIH Dedicate Server Installation Tutorials

    简介:本文记录了地狱已满(No More Room In Hell)游戏服务器的搭建过程,涉及多系统(Windows、Linux),多种方式安装部署。含大量自定义参数及其作用介绍,也有进阶SourceMod插件安装的引言,安装过程常见问题解答等 服务器搭建篇:地狱已满服务器搭建教程-1 服务器安装篇(

    2024年02月11日
    浏览(54)
  • WebRTC | 信令服务器

    目录 一、相关术语 1.NAT 2.STUN服务器 3. TURN服务器 4.打洞 二、WebRTC一对一架构 三、信令 1. 信令传输协议的选择 2. 信令服务器的实现方案 3. 信令服务器的业务逻辑         信令服务器的作用主要有两个:一是实现业务层的管理,如用户创建房间,加入房间,退出房间等;

    2024年02月13日
    浏览(43)
  • 搭建WebRTC服务器

    1、AppRTC 房间服务,代码:github.com/webrtc/appr… 2、Collider 信令服务,AppRTC源码里自带 3、CoTurn 打洞服务,代码:github.com/coturn/cotu… 打包资源: 链接: pan.baidu.com/s/1ulx1FVRN… 提取码: 3e5f 1、操作系统: Centos 64bits 2、Google webrtc的服务器Demo:详见https://github.com/webrtc/apprtc 3、域名: ap

    2024年02月13日
    浏览(41)
  • 互动直播之WebRTC服务器Kurento实战

    1. Kurento Kurento的主要组件是 Kurento媒体服务器 (KMS),负责媒体传输,处理,记录和播放。KMS建立在出色的GStreamer多媒体库之上,并提供以下功能: 网络流协议,包括HTTP,RTP和WebRTC。 支持媒体混合和媒体路由/调度的组通信(MCU和SFU功能)。 对实现计算机视觉和增强现实算

    2024年02月21日
    浏览(50)
  • 用于WebRTC的coturn服务器的搭建

    前言:         自己在研究WebRTC相关内容,在远端连接老是绕不开搭建ICE服务器,搜索了无数文章和方法,还是久久无进展,最后头皮嗯嘛了才成功,故想总结一下我的搭建步骤,供大家参考,避免少走弯路!!! 1、前期准备 准备一个自己的公网服务器,可以是阿里云或其

    2024年01月24日
    浏览(44)
  • 使用Swoole协程实现 WebRTC 信令服务器

    一、 什么是WebRTC WebRTC技术是激烈的开放的Web战争中一大突破-Brendan Eich, inventor of JavaScript。 简单来说,WebRTC 是一个音视频处理+及时通讯的开源库。在实时通信中,音视频的采集和处理是一个很复杂的过程。比如音视频流的编解码、降噪和回声消除等。由Google发起开源,其中

    2024年03月26日
    浏览(53)
  • C++ OpenGL 3D Game Tutorial 2: Making OpenGL 3D Engine学习笔记

    视频地址 https://www.youtube.com/watch?v=PH5kH8h82L8list=PLv8DnRaQOs5-MR-zbP1QUdq5FL0FWqVzgindex=3         接上一篇内容,main.cpp的内容增加了一些代码,显得严谨一些:        然后是Game类的添加了很多内容:         Game.h文件:         Game.cpp文件:        和上一篇相比,在

    2024年02月02日
    浏览(41)
  • 学习笔记:代理服务器——Nginx

    本文会对Nginx的介绍、使用、原理等知识作由浅入深的剖析。如果你只想对Nginx作为反向代理的使用作初步的了解,那么可以只看第一、二章节;如果想对Nginx工作原理、扩展使用等进行深入研究,可以看第三章节。相信本文会对你有所帮助 Nginx(“engine x”)是一个高性能的

    2024年02月07日
    浏览(48)
  • WebRTC+Kamamilio+rtpengine+Websocket SIP服务器搭建教程

    发现国内使用SIP的资料真的很少,由于公司需要使用语音视频电话,在网上找了一大圈也没找到相关案例,最后自己折腾出一个方案,故此分享出来。 开始之前不得不介绍一下这五个东西。 Kamamilio 是 OpenSER 的前身,是C语言写的一个Sip服务,支持在 在Linux/UNIX系统上运行,优

    2024年02月15日
    浏览(76)
  • docker部署SRS实时视频服务器,rtmp推流,用WebRTC播放

    SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181 大家可以先去gitub上面看使用说明,地址是:v4_CN_Home · ossrs/srs Wiki · GitHub 然后我们通过docker去启动SRS,这些文档里面都有,就不用多说了,然后我们可以用rtmp推流 用WebRTC播放,首先要支持WebRTC我们需要

    2023年04月11日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包