GStreamer Playback tutorial 学习笔记(一)

playbin运用

多流处理:一个电影,对应一个视频和多个音频流(立体声/5.1声道被视为一个单独的流),以适应不同的语言。在这种情况下,用户选择一个音频流,应用程序只播放选定的音频流,忽略其他音频流。

为了能够选择合适的流,用户需要了解一些关于它们的信息,例如它们的语言。这些信息以“元数据”(附加数据)的形式嵌入在流中,本教程展示了如何检索这些信息。

分流

定义:从容器中检索各个流的过程被称为“分流”(demultiplexing)或“解封装”(demuxing

枚举与playbin标志位

稍后,我们将设置一些playbin的标志位。我们希望有一个方便的枚举类型,可以方便地操作这些标志位,但由于playbin是一个插件,不是GStreamer核心的一部分,所以这个枚举类型对我们不可用。"技巧"就是在我们的代码中声明这个枚举类型:GstPlayFlagsGObject允许内省,因此可以在运行时获取这些标志位的可能值,而不使用这个"技巧"的方式要复杂得多。

函数与知识点

  1. flags属性:playbin的重要属性之一,可以改变playbin的行为,该属性可以具有任何组合的GstPlayFlags。其中最有趣的值有:GST_PLAY_FLAG_VIDEO 启用视频渲染;GST_PLAY_FLAG_AUDIO 启用声音渲染;GST_PLAY_FLAG_TEXT 启用字母渲染;GST_PLAY_FLAG_VIS 没有视频流时,启用可视化;其他参数见Basic tutorial 12

  2. connection-speed属性:playbin的属性之一,告知playbin我们网络连接的最大速度,因此,如果服务器上有多个可用版本的请求媒体,playbin会选择最合适的版本。这通常与像HLSRTSP这样的流媒体协议结合使用。

  3. GMainLoop 属性:表示 GLibGTK+ 应用程序的主事件循环的不透明数据类型。

  4. g_main_loop_run() 功能:在调用循环的g_main_loop_quit()之前,运行主事件循环。

    注意:如果在循环的GMainContext线程上调用此函数,它将处理循环中的事件,否则它将简单地等待。

  5. g_main_loop_quit() 功能:停止运行一个GMainLoop,对于该循环的任何对g_main_loop_run()的调用都会返回。

    注意,当调用g_main_loop_quit()时已经被分派的源仍将被执行。

  6. GstTagList 属性:gst数据结构之一。存储描述媒体元数据的标签列表。

  7. void g_signal_emit_by_name (GObject* instance, const gchar* detailed_signal, ...) 功能:发出一个信号。信号的发出是同步进行的。只有在调用了所有处理程序或停止信号发出后,该方法才会返回控制。

    提示:本tutorial里,用于恢复与流相关联的GstTagList

  8. gst_tag_list_get_string() 功能:将给定标签的内容复制到值中,如果与该标签关联的有多个值,则将多个值合并为一个值。

    说明:值中的结果字符串将使用UTF-8编码,并在不再需要时由调用者使用g_free释放。返回的字符串也保证非NULL和非空。

    提示:本tutorial中,使用像gst_tag_list_get_string()这样的gst_tag_list_get_*函数提取单个标签。

    这种检索标签列表的方式可能不太直观,被称为动作信号。动作信号由应用程序发送给特定的元素,该元素执行动作并返回结果。它们的行为类似于动态函数调用,其中类的方法通过名称(信号的名称)而不是内存地址来标识。这些信号在文档中以及常规信号一起列出,并且被打上“动作”的标签。例如,可以参考playbin的文档。

    playbin定义了3个动作信号以获取元数据:get-video-tagsget-audio-tagsget-text-tags。标签的名称是标准化的,并且该列表可以在GstTagList文档中找到。在这个示例中,我们对流的GST_TAG_LANGUAGE_CODE和其GST_TAG_*_CODEC(音频、视频或文本)感兴趣。

  9. playbin的另外三个属性:current-videocurrent-audiocurrent-text,获取当前选中的流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓:Fragment

目录 一、Fragment介绍 二、Fragment的使用方式 (一)、Fragment静态添加: 静态添加例子: FirstFragment : MainActivity: main_activity: fragment_first: 静态添加的总结: (二&…

Android 中app内存回收优化(一):R版本

版本基于:Android R 0. 前言 Android Q 中新增了framework 端app 内存回收优化方案。当app 的 oom adj 发生特定变化时,framework 端会对应用的内存进行处理。随着版本的演变,这部分优化工作也一直在完善,笔者将针对 Android R 和…

Java-通过IP获取真实地址

文章目录 前言功能实现测试 前言 最近写了一个日志系统,需要通过访问的 IP 地址来获取真实的地址,并且存到数据库中,我也是在网上看了一些文章,遂即整理了一下供大家参考。 功能实现 这个是获取正确 IP 地址的方法,可…

脚本定制gitlab官方api获取项目组下的所有项目

脚本说明 通过gitlab官方api接口获取项目组下的所有项目的ssh_git连接并同步项目仓库 #!/bin/bash urlhttps://gitee.xxxxx.cn dir/usr/src/redmine/git-repo group_id69 token2dskWweijirdrrm9UERvcd ${dir}#获取所有项目ssh_url_to_repo curl -s "${url}/api/v4/group…

域内信息收集

将网络中多台计算机逻辑上组织到一起进行集中管理,这种区别于工作组的逻辑环境叫 做域。域是由域控制器(Domain Controller)和成员计算机组成,域控制器就是安装了活动 目录(Active Directory)的计算机。活动目录提供了存储网络上对象信息并使用网络使用该…

uniapp H5预览PDF文件

1&#xff0c;下载资源后hybrid文件存放在static静态文件里 (点击这里去下载文件) 2&#xff0c;pdf预览页面配置 <template><view style"width: 100vh;"><web-view :src"pdfUrl"></web-view></view> </template><…

全面深入理解MySQL自增锁

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

【HarmonyOS】元服务隐私协议开发指导样例

【关键字】 隐私、弹窗、元服务、协议 【介绍】 每个元服务必须提供隐私声明&#xff0c;否则将导致提交元服务发布上架时&#xff0c;审核无法通过。隐私声明的具体要求请参见隐私声明规范。用户使用元服务前&#xff0c;必须引导其了解隐私声明信息&#xff0c;获取用户授权…

【NLP】一项NER实体提取任务

一、说明 从文本中提取实体是一项主要的自然语言处理 (NLP) 任务。由于深度学习(DL)的最新进展使我们能够将它们用于NLP任务,并且与传统方法相比,在准确性上产生了巨大的差异。 我试图使用深度学习和传统方法从文章中提取信息。结果是惊人的,因为DL方法…

tcpdump 使用

Linux tcpdump抓包工具使用 tcpdump官网tcpdump使用tcpdump抓取http请求 tcpdump官网 官网 请参考官网参看具体参数信息 tcpdump使用 tcpdump抓取http请求 http请求抓取参考网址 //抓取HTTP GET (GET 0x47, 0x45, 0x54, 0x20) 请求,以ascii展示 tcpdump -i eth0 -A -s 0 …

C#被指定窗体的MdiParent的窗体不是MdiContainer

工作的时候遇到一个问题&#xff1a; 被指定窗体的MdiParent的窗体不是MdiContainer 这个问题的原因是父窗体的IsMdiContainer 属性设置为false导致的。将此属性设置为true&#xff0c;即可解决此问题。有两种方式设置窗体的IsMdiContainer 属性。 第一种&#xff0c;在父窗口…

Chrome远程调试webview

网址 谷歌远程调试解决方案 https://blog.csdn.net/m0_56516186/article/details/131260563Chrome远程调试webview https://blog.csdn.net/weixin_44801980/article/details/117755550

Editing Large Language Models: Problems, Methods, and Opportunities

本文是LLM相关的系列文章&#xff0c;针对《Editing Large Language Models: Problems, Methods, and Opportunities》的翻译。 编辑大语言模型&#xff1a;问题、方法和机遇 摘要1 引言2 问题定义3 当前方法3.1 保留LLM参数的方法3.2 修改LLM参数的方法 4 初步实验4.1 数据集…

python实现拼多多商品详情接口API

最近工作需要用到拼多多的一些接口&#xff0c;官方竟然没有提供&#xff0c;python的sdk&#xff0c;于是就自己简单的写了一个商品SKU接口的api。 1、代码 #!/usr/bin/python3# -*- coding: utf-8 -*-# Time : 2020/3/29 0021 下午 19:40# Author : xiaozhi&#xff01;…

201. 数字范围按位与 Python

文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 给你两个整数 left 和 right &#xff0c;表示区间 [left, right] &#xff0c;返回此区间内所有数字 按位与 的结果&#xff08;包含 left 、right 端点&#xff09;。 示例 1 输入&#xff1a…

「深度学习之优化算法」(十六)万有引力算法

1. 万有引力算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读) 万有引力算法(Gravitational Search Algorithm)是受物体之间的万有引力启发而提出的算法。算法提出于2008(2009)年,时间不长,不过相关的文章和应用已经相对较多,也有不少的优化改进方案。   万…

apple pencil二代平替笔哪个好用?苹果平板平替笔排行

光是一款Apple Pencil&#xff0c;就卖到了接近一千多块&#xff0c;信息对于很多人来说都觉得太贵了。事实上&#xff0c;由于平替电容笔的性价比也非常高&#xff0c;因此它还是值得一试的。不管是学习&#xff0c;写作&#xff0c;还是绘画&#xff0c;这支平替电容笔&#…

自洽性改善语言模型中的思维链推理7.13、7.14

自洽性改善语言模型中的思维链推理 摘要介绍对多样化路径的自洽实验实验设置主要结果当CoT影响效率时候&#xff0c;SC会有所帮助与现有方法进行比较附加研究 相关工作总结 原文&#xff1a; 摘要 本篇论文提出了一种新的编码策略——自洽性&#xff0c;来替换思维链中使用的…

AI绘画 | 迷人武士美少女战士作品集

今天用Midjourney生成了质量极高的美少女武士后续会作为固定栏目来分享美图接下来请欣赏作品 提示词分享&#xff1a;1.an asian girl dressed in samurai style, in the style of anime aesthetic, trick of the eye paintings, dollcore, light red and black, resin, 8k, ex…

数据结构--图的基本操作

数据结构–图的基本操作 使用的存储模式&#xff1a; 图的基本操作&#xff1a; • Adjacent(G,x,y)&#xff1a;判断图G是否存在边<x, y>或(x, y)。 • Neighbors(G,x)&#xff1a;列出图G中与结点x邻接的边。 • InsertVertex(G,x)&#xff1a;在图G中插入顶点x。 • …