GStreamer开发笔记(一):GStreamer介绍,在windows平台部署安装,打开usb摄像头对比测试

news2025/4/17 0:50:12

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/147049923

长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

FFmpeg、SDL和流媒体开发专栏


上一篇:没有了
下一篇:持续补充中…


前言

  当前GStreamer是开源的多媒体框架,其适配后可以支持板卡的硬编码、硬解码,还提供RTSP服务器等功能,降低了音视频开发的门槛(转移到gstreamer配置和开发上了,但是跨平台),瑞芯微RK系列是支持已经适配了GStreamer框架。
  本篇介绍windows平台的GStreamer部署安装,然后测试摄像头,进行性能延迟对比。


GStreamer

简介

  GStreamer是一个用于构建媒体处理组件图的库。它支持的应用范围从简单的Ogg/Vorbis播放、音频/视频流到复杂的音频(混合)和视频(非线性编辑)处理。
  应用程序可以透明地利用编解码器和滤波器技术的进步。开发人员可以通过编写一个具有干净、通用接口的简单插件来添加新的编解码器和过滤器。
  GStreamer是在LGPL下发布的。1.x系列是API和ABI稳定的,取代了以前稳定的0.10系列。两者都可以并行安装。

特点

跨平台

  GStreamer适用于所有主要操作系统,如Linux、Android、Windows、Max OS X、iOS,以及大多数BSD、商业Unixes、Solaris和Symbian。它已被移植到各种操作系统、处理器和编译器上。它在所有主要的硬件架构上运行,包括x86、ARM、MIPS、SPARC和PowerPC,在32位和64位以及小端或大端上运行。
  GStreamer可以桥接到其他多媒体框架,以便重用现有组件(如编解码器)并使用平台输入/输出机制:

  • Linux/Unix: OpenMAX-IL (via gst-omx)
  • Windows: DirectShow
  • Mac OS X: QuickTime

综合核心库

  • 基于图的结构允许任意管道构建
  • 基于GLib 2.0对象模型的面向对象设计与继承
  • 小于500KB的紧凑型核心库,约65K行代码
  • 多线程管道构造简单透明
  • 为插件和应用程序开发人员提供干净、简单、稳定的API
  • 极其轻量级的数据传递意味着非常高的性能/低延迟
  • 为核心和插件/应用程序开发人员提供完整的调试系统
  • 时钟以确保全局流间同步(a/v同步)
  • 服务质量(qos),以确保在高CPU负载下达到最佳质量

智能插件架构

  • 动态加载的插件提供元素和媒体类型,通过注册表缓存按需加载,类似于ld.so.cache
  • 元素接口处理所有已知类型的源、过滤器和接收器
  • 能力系统允许使用MIME类型和媒体特定属性验证元素兼容性
  • 自动插拔使用功能系统自动完成复杂的路径
  • 通过将管道转储到.dot文件并从中创建PNG图像,可以可视化管道
  • 资源友好的插件不会浪费内存

多媒体技术覆盖面广

  GStreamers的功能可以通过新的插件进行扩展。下面列出的功能只是使用GStreamers自己的插件提供的粗略概述,不包括任何第三方产品。

  • 容器格式:asf、avi、3gp/mp4/mov、flv、mpeg ps/ts、mkv/webm、mxf、ogg
  • 流媒体:http、mms、rtsp
  • 编解码器:FFmpeg、各种编解码器库、第三方编解码器包
  • 元数据:具有通用映射的本机容器格式
  • 视频:各种颜色空间,支持逐行扫描和隔行扫描视频
  • 音频:各种比特深度和多通道配置的整数和浮点音频

广泛的开发工具

  • gst-launch命令行工具,用于快速原型制作和测试,类似于ecasound
  • 大量文档,包括部分完成的手册和插件编写者指南
  • 每个模块中都有大量测试程序和示例代码可供选择
  • 使用各种编程语言访问GStreamer API

注意

  GStreamer是一个非常强大和通用的框架,用于创建流媒体应用程序。
  GStreamer框架的许多优点来自其模块化:GStreamer可以无缝地整合新的插件模块。但由于模块化和强大的功能往往以更高的复杂性为代价,因此编写新的应用程序并不总是那么容易。

下载

  Source:https://gstreamer.freedesktop.org/download/#sources
  Windows:https://gstreamer.freedesktop.org/download/#windows
  Linux:https://gstreamer.freedesktop.org/download/#linux
  ubuntu:https://repology.org/project/gstreamer/packages
  为方便下载,二次归档:
  CSDN:免积分下载地址https://download.csdn.net/download/qq21497936/90577339
  QQ群:文章底部或者博客首页扫码进入QQ技术群,点击“文件”搜索“gstreamer”,群内与博文同步更新)


Windows安装过程

步骤一:下载

  下载连接中的windows版本,下载解:
  在这里插入图片描述

步骤二:安装devel开发环境

  双击启动安装过程
  在这里插入图片描述

  在这里插入图片描述

  全部安装:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  装完之后就这样了:
  在这里插入图片描述

  这种属于完全安装包的形式,没有修改系统环境变量和其他的,所以直接移出来,挪到外面去:
  在这里插入图片描述

  这是开发版本的依赖库,无法直接运行,里面包含了必要的include和lib还有dll,想运行需要安装runtime版本。

步骤三:安装runtime运行环境

  注意:推荐都安装在同一个目录,C:\gstreamer,因为这边方便对比,对比完还是安装到同一个目录了。
  在这里插入图片描述

  这个方式类似ffmpeg,dev和runtime是分开的,继续装这个装完后看它的include,lib就知道了:
  在这里插入图片描述

  在这里插入图片描述

  而dev的inc:
  在这里插入图片描述

  在这里插入图片描述

步骤四:运行gstreamer测试

  注意:这里不修改环境变量,所以在gstreamer目录下的cmd完成。
  命令行打开播放文件

gst-launch-1.0.exe playbin uri=file:///<你的视频>

  在这里插入图片描述

  命令行打开usb摄像头

gst-launch-1.0.exe -v ksvideosrc do-stats=TRUE ! videoconvert ! autovideosink

  在这里插入图片描述

步骤五:对比打开延迟

  在这里插入图片描述

  下面使用windows相机来测试延迟:
  在这里插入图片描述

步骤六:对比内存

  在这里插入图片描述
  初步可以得出gstreamer框架优于windows相机,看状态gstreamer没有使用到GPU。


上一篇:没有了
下一篇:持续补充中…


本文章博客地址:https://blog.csdn.net/qq21497936/article/details/147049923

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

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

相关文章

UE5,LogPackageName黄字警报处理方法

比如这个场景&#xff0c;淘宝搜索&#xff0c;ue5 T台&#xff0c;转为ue5.2后&#xff0c;选择物体&#xff0c;使劲冒错。 LogPackageName: Warning: DoesPackageExist called on PackageName that will always return false. Reason: 输入“”为空。 2. 风险很大的删除法&…

unity曲线射击

b站教程 using UnityEngine; using System.Collections;public class BallLauncher : MonoBehaviour {public float m_R;public NewBullet m_BulletPre;public Transform m_Target;private void Start(){StartCoroutine(Attack());}private void OnDestroy(){StopAllCoroutine…

freecad内部python来源 + pip install 装包

cmake来源&#xff1a; 只能find默认地址&#xff0c;我试过用虚拟的python地址提示缺python3config.cmake 源码来源&#xff1a; pip install 装包&#xff1a; module_to_install "your pakage" import os import FreeCAD import addonmanager_utilities as util…

Spring Boot 中集成 Knife4j:解决文件上传不显示文件域的问题

Spring Boot 中集成 Knife4j&#xff1a;解决文件上传不显示文件域的问题 在使用 Knife4j 为 Spring Boot 项目生成 API 文档时&#xff0c;开发者可能会遇到文件上传功能不显示文件域的问题。本文将详细介绍如何解决这一问题&#xff0c;并提供完整的解决方案。 Knife4j官网…

信噪比(SNR)的基本定义

噪比&#xff08;SNR&#xff09;是衡量信号质量的核心指标&#xff0c;定义为有效信号与背景噪声的比值&#xff0c;广泛应用于电子、通信、医学及生物学等领域。 一、定义 基本定义‌ SNR 是信号功率&#xff08;或电压&#xff09;与噪声功率&#xff08;或电压&#xff…

SpringBoot集成阿里云文档格式转换实现pdf转换word,excel

一、前置条件 1.1 创建accessKey 如何申请&#xff1a;https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair 1.2 开通服务 官方地址&#xff1a;https://docmind.console.aliyun.com/doc-overview 未开通服务时需要点击开通按钮&#xff0c;然后才能调用…

STM32 模块化开发指南 · 第 5 篇 STM32 项目中断处理机制最佳实践:ISR、回调与事件通知

本文是《STM32 模块化开发实战指南》第 5 篇,聚焦于 STM32 裸机开发中最核心也最容易被忽视的部分——中断服务机制。我们将介绍如何正确、高效地设计中断处理函数(ISR),实现数据与事件从中断上下文传递到主逻辑的通道,并构建一个清晰、可维护、非阻塞的事件通知机制。 一…

LabVIEW 中 JSON 数据与簇的转换

在 LabVIEW 编程中&#xff0c;数据格式的处理与转换是极为关键的环节。其中&#xff0c;将数据在 JSON 格式与 LabVIEW 的簇结构之间进行转换是一项常见且重要的操作。这里展示的程序片段就涉及到这一关键功能&#xff0c;以下将详细介绍。 一、JSON 数据与簇的转换功能 &am…

K8s常用基础管理命令(一)

基础管理命令 基础命令kubectl get命令kubectl create命令kubectl apply命令kubectl delete命令kubectl describe命令kubectl explain命令kubectl run命令kubectl cp命令kubectl edit命令kubectl logs命令kubectl exec命令kubectl port-forward命令kubectl patch命令 集群管理命…

每日算法-250411

这是我今天的 LeetCode 刷题记录和心得&#xff0c;主要涉及了二分查找的应用。 3143. 正方形中的最多点数 题目简述: 思路 本题的核心思路是 二分查找。 解题过程 为什么可以二分&#xff1f; 我们可以对正方形的半边长 len 进行二分。当正方形的半边长 len 越大时&…

NO.90十六届蓝桥杯备战|动态规划-区间DP|回文字串|Treats for the Cows|石子合并|248(C++)

区间dp也是线性dp的⼀种&#xff0c;它⽤区间的左右端点来描述状态&#xff0c;通过⼩区间的解来推导出⼤区间的解。因此&#xff0c;区间DP的核⼼思想是将⼤区间划分为⼩区间&#xff0c;它的状态转移⽅程通常依赖于区间的划分点。 常⽤的划分点的⽅式有两个&#xff1a; 基于…

【大模型LLM第十六篇】Agent学习之浅谈Agent loop的几种常见范式

anthropics agent https://zhuanlan.zhihu.com/p/32454721762 code&#xff1a;https://github.com/anthropics/anthropic-quickstarts/blob/main/computer-use-demo/computer_use_demo/loop.py sampling_loop函数 每次进行循环&#xff0c;输出extract tool_use&#xff0…

学术分享:基于 ARCADE 数据集评估 Grounding DINO、YOLO 和 DINO 在血管狭窄检测中的效果

一、引言 冠状动脉疾病&#xff08;CAD&#xff09;作为全球主要死亡原因之一&#xff0c;其早期准确检测对有效治疗至关重要。X 射线冠状动脉造影&#xff08;XCA&#xff09;虽然是诊断 CAD 的金标准&#xff0c;但这些图像的人工解读不仅耗时&#xff0c;还易受观察者间差异…

2025年慕尼黑上海电子展前瞻

年岁之约&#xff0c;齐聚慕展&#xff1b; 乘风而起&#xff0c;畅联未来。 2025 年 4 月 15 - 17 日&#xff0c;备受瞩目的慕尼黑上海电子展即将在上海新国际博览中心盛大启幕。回首2024年展会的场景&#xff0c;那热烈非凡的氛围、精彩纷呈的展示仍历历在目&#xff0c;也…

第十九:b+树和b-树

优点一&#xff1a; B树只有叶节点存放数据&#xff0c;其余节点用来索引&#xff0c;而B-树是每个索引节点都会有Data域。 优点二&#xff1a; B树所有的Data域在叶子节点&#xff0c;并且所有叶子节点之间都有一个链指针。 这样遍历叶子节点就能获得全部数据&#xff0c;这样…

深入浅出Redis 缓存使用问题 | 长文分享

目录 数据一致性 先更新缓存&#xff0c;后更新数据库【一般不考虑】 先更新数据库&#xff0c;再更新缓存【一般不考虑】 先删除缓存&#xff0c;后更新数据库 先更新数据库&#xff0c;后删除缓存【推荐】 怎么选择这些方案&#xff1f;采用哪种合适&#xff1f; 缓存…

操作系统 3.6-内存换出

换出算法总览 页面置换算法 FIFO&#xff08;先进先出&#xff09;&#xff1a; 最简单的页面置换算法&#xff0c;淘汰最早进入内存的页面。 优点&#xff1a;实现简单。 缺点&#xff1a;可能会导致Belady异常&#xff0c;即增加内存反而降低性能。如果刚换入的页面马上又要…

【Amazon EC2】为何基于浏览器的EC2 Instance Connect 客户端连接不上EC2实例

文章目录 前言&#x1f4d6;一、报错先知❌二、问题复现&#x1f62f;三、解决办法&#x1f3b2;四、验证结果&#x1f44d;五、参考链接&#x1f517; 前言&#x1f4d6; 这篇文章将讲述我在 Amazon EC2 上使用 RHEL9 AMI 时无法连接到 EC2 实例时所遇到的麻烦&#x1f616; …

新一代AI低代码MES,助力企业数字化升级

随着DeepSeek低成本AI模型的火热&#xff0c;对于传统的MES而言&#xff0c;在这场AI的盛宴中&#xff0c;该如何去调整产品的定位&#xff0c;让MES更符合工业企业的需求呢&#xff1f; 工业互联网、AI、数字孪生等技术加速与MES融合&#xff0c;实现生产全流程的实时监控与智…

HTML应用指南:利用GET请求获取全国汉堡王门店位置信息

在当今快节奏的都市生活中&#xff0c;餐饮品牌的门店布局不仅反映了其市场策略&#xff0c;更折射出消费者对便捷、品质和品牌认同的追求。汉堡王&#xff08;Burger King&#xff09;作为全球知名的西式快餐品牌之一&#xff0c;在中国市场同样占据重要地位。自进入中国市场以…