记录Gstreamer的uridecodebin可以自动选择硬解码器

news2025/2/23 0:55:43

记录:

uridecodebin3 和uridecodebin优先硬解码

        这两个插件,本来是负责动态选择合适的解码器来处理特定的媒体流,使用案例:

        gst-launch-1.0 uridecodebin uri=rtsp://192.168.1.120:8554/test  ! glimagesink  -v

        gst-launch-1.0 uridecodebin3 uri=file:///home/enpht/Videos/1080p_60fps.h264 ! glimagesink 

        gst-launch-1.0 uridecodebin3 uri=file:///home/enpht/Videos/1080p_60fps.mp4 ! glimagesink  

        刚开始,我以为使用的解码器默认是软解码,但是后来测试发现,其实会根据平台进行选择,优先硬件加速,这个功能,目前支持多个平台,包括了我常用的英伟达和RK3588的平台。根据平台自动选择解码器,优先使用硬解码,无需自己设置。

        证据:

使用gst-launch-1.0 uridecodebin uri=rtsp://192.168.1.120:8554/test  ! glimagesink  -v 打印信息:

   如果是在rk3588的板子上,会发现解码器是MppVIdeoDec,如果是虚拟机里面是avdec,查看CPU占用,发现确实CPU占用不高。

decodebin和decodebin3的作用

        但是uridecodebin主要作用是解析链接,以及选择解码器,但有时候它会生成多个输出流(pads),每个输出流对应媒体流中的一个媒体类型(如视频、音频、字幕等)。这时候就需要使用 decodebin 元素来处理这些输出流。

        如果输出的是单路数据流,不需要增加decodebin,如果有多个视频流和音频流组成,需要增加decodebin 。

gst-launch-1.0 uridecodebin uri=rtsp://192.168.1.120:8554/test  ! uridecodebin ! glimagesink  -v

gst-launch-1.0 uridecodebin3 uri=file:///home/enpht/Videos/1080p_60fps.h264 ! uridecodebin ! glimagesink 

gst-launch-1.0 uridecodebin3 uri=file:///home/enpht/Videos/1080p_60fps.mp4 ! uridecodebin ! glimagesink

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

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

相关文章

Flutter页面状态保留策略

目的: 防止每次点击底部按钮都进行一次页面渲染和网络请求 1. 使用IndexedStack 简单,只需要把被渲染的组件外部套一层IndexedStack即可 缺点: 在应用启动的时候,所有需要保存状态的页面都会直接被渲染,保存起来. 对性能有影响 2. 使用PageController 实现较为复杂,但是不用…

程序员必备的ChatGPT技巧:从代码调试到项目管理

近年来,随着人工智能技术的迅猛发展,ChatGPT作为一种强大的对话式AI工具,已经广泛应用于各个领域。而对于程序员来说,ChatGPT不仅可以帮助他们解决编程中的各种问题,还能在项目管理中发挥重要作用。本篇博客将详细介绍…

电脑高手推荐:三款超实用软件,让你的电脑如虎添翼!

7Zip 7-Zip是一款免费且开源的文件压缩工具,支持多种文件格式,包括其自带的7z格式、ZIP、GZIP、BZIP2和TAR等。该软件由Igor Pavlov于1999年开发,具有高压缩比的特点。7-Zip不仅可以在Windows操作系统上使用,还可以在Unix-like的操…

【嵌入式 RT-Thread】一种优雅的使用 [互斥锁] 和 [信号量] 解决数据多路并发思路

rt-thread 中的信号量和互斥锁在工业开发项目中的应用,本博文主要介绍了一种优雅的使用 [互斥锁] 和 [信号量] 解决数据多路并发思路 2024-06 by 积跬步、至千里 目录 0. 个人简介 && 授权须知1. 工业场景描述1.1 工业数据采集需求1.2 总线协议与数据采集 2…

第 12 课:基于隐语的VisionTransformer框架

基于之前MPC的基础知识,本讲主要内容是MPCViT基于SecretFlow的VisionTransformer框架,主要从神经网络架构,隐私推理框架和实验结果三方面介绍。 一、MPCViT:安全且高效的MPC友好型 Vision Transformer架构 MPCViT隐私推理总体框架…

【LeetCode 274】H指数

1. 题目 2. 分析 这题没啥难度,需要熟练运用Python API。 sort(reverseTrue)可以用于排序List,并且倒序排序。 3. 代码 class Solution:def hIndex(self, citations: List[int]) -> int:citations.sort(reverseTrue)res 0for idx,cite in enume…

vue3-登录小案例(借助ElementPlus+axios)

1.创建一个vue3的项目。 npm create vuelatest 2.引入Elementplus组件库 链接:安装 | Element Plus npm install element-plus --save 在main.js中引入 import ElementPlus from "element-plus";import "element-plus/dist/index.css";ap…

【osgEarth】Ubuntu 22.04 源码编译osgEarth 3.5

下载源代码 git clone --depth1 https://dgithub.xyz/gwaldron/osgearth -b osgearth-3.5 下载子模块 git submodule update --init 如果下载不过来,就手动修改下.git/config文件,将子模块的地址替换成加速地址 (base) yeqiangyeqiang-Default-string…

Puppeteer实战指南:自动化抓取网页中的图片资源

1. Puppeteer 简介 Puppeteer是Google Chrome团队开发的一个Node库,它提供了一个高级API来控制Chrome或Chromium浏览器。Puppeteer可以进行网页自动化操作,包括导航、屏幕截图、生成PDF、捕获网络活动等。 2. 环境搭建 在开始之前,确保你的…

Java中Stream的特性

Stream新特性 被称之为Stream流,用于操作集合或者数组中的数据 优势:Stream流大量的结合了Lambda的语法风格,代码更简洁,可读性更好 使用步骤 先获取数据源,获取Stream流 Collect…

Java常用API基础语法(附带思维导图)

常见的API基本语法 String常用的操作方法 toCharArray equals() equalsIgonreCase substring(0,5) 从0-5的下标开始截取 substring(5) 从下标为5开始往后截取 replace …

来自工业界的知识库 RAG 服务(五),模块化知识库 GoMate 实现方案详解

背景介绍 很早以前就看过一篇介绍 RAG 的综述性文章 Retrieval-Augmented Generation for Large Language Models: A Survey, 其中介绍了 RAG 的模块化架构: 但是一直没有看到对应的实现方案,以前也没有理解此框架的优势之处。随着在相关领域的持续实…

网约车停运损失费:2、协商过程

目录 🍅点击这里查看所有博文 随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记…

如何提升投资伦敦金的分析能力:回测

对伦敦金行情的分析能力,在我们做伦敦金交易的整个体系中是有很重要的作用的。但要提升对伦敦金行情的分析和把握是不太容易的,那有没有方法可以提升?那答案是有的,下面我们就来讨论一下,这个方法就是回测。 回测就是把…

深度学习方法在谣言检测中的研究现状

摘要 管理社交媒体上的谣言,减少谣言对社会的危害。许多研究使用深度学习方法来检测开放网络中的谣言。为了从多个角度全面梳理谣言检测的研究现状,本文从特征选择、模型结构和研究方法三个角度分析了这一高度集中的工作。从特征选择的角度,将…

4.整合第三方技术【整合JUnit】

目录 1.创建项目: 2.导入测试对应的starter 3.添加测试对象 3.1 添加Prodcut接口文件 3.2 添加ProdcutImpl文件 3.3 测试类添加测试文件,并开始测试 4.测试类文件解析 4.1.测试类使用SpringBootTest修饰 4.2使用自动装配的形式添加要测试的对象 1.…

Linux开发讲课16--- 【内存管理】页表映射基础知识2

ARM32页表和Linux页表那些奇葩的地方 ARM32硬件页表中PGD页目录项PGD是从20位开始的,但是为何头文件定义是从21位开始? 历史原因:Linux最初是基于x86的体系结构设计的,因此Linux内核很多的头文件的定义都是基于x86的&#xff0c…

go中的方法 func-----数据类型

本文是java学习者学go种产生的容易记混点的笔记,所以有其他编译语言的基础更好 go的方法有点像js 基础 func main() {fmt.Println("Starting")var p *string new(string)*p "hello world"demo : "demo"fmt.Println(*&demo) //这样既然也…

服务器部署与DDOS攻防

知识点:DHPC与Web服务部署,DHCPig攻防,SYN Flooding测试 DHCP: 能够自动为客户机获取IP等参数 DHCP是动态主机配置协议(Dynamic Host Configuration Protocol)的缩写,它是一种网络管理协议&am…

华三交换机的软件版本升级操作

升级操作很常见,掌握方法是关键 实验环境:1台华三S6520-EI交换机,版本从2432P03升级成2432P05。 整体思路: 1.先查验软件版本 2.官网下载对于设备型号的软件版本 3.配置交换机地址使得与电脑进行通信,使用TFTP/FTP工…