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

若该文为原创文章,转载请注明原文出处
本文章博客地址: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.mzph.cn/web/74985.shtml

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

相关文章

Spring Boot 3.4.3 和 Spring Security 6.4.2 实现基于内存和 MySQL 的用户认证

在 Web 应用开发中&#xff0c;用户认证是保障系统安全的基础需求。Spring Boot 3.4.3 结合 Spring Security 6.4.2 提供了强大的安全框架支持&#xff0c;可以轻松实现基于内存或数据库的用户认证功能。本文将详细介绍如何在 Spring Boot 3.4.3 中集成 Spring Security 6.4.2&…

HOW - Axios 拦截器特性

目录 Axios 介绍拦截器特性1. 统一添加 Token&#xff08;请求拦截器&#xff09;2. 处理 401 未授权&#xff08;响应拦截器&#xff09;3. 统一处理错误信息&#xff08;响应拦截器&#xff09;4. 请求 Loading 状态管理5. 自动重试请求&#xff08;如 429 过载&#xff09;6…

JVM核心机制:类加载×字节码引擎×垃圾回收机制

&#x1f680;前言 “为什么你的Spring应用启动慢&#xff1f;为什么GC总是突然卡顿&#xff1f;答案藏在JVM的核心机制里&#xff01; 本文将用全流程图解字节码案例&#xff0c;带你穿透三大核心机制&#xff1a; 类加载&#xff1a;双亲委派如何防止恶意代码入侵&#xff…

coze生成流程图和思维导图工作流

需求&#xff1a;通过coze平台实现生成流程图和思维导图&#xff0c;要求支持文档上传 最终工作流如下&#xff1a; 入参&#xff1a; 整合用户需求文件内容的工作流&#xff1a;https://blog.csdn.net/YXWik/article/details/147040071 选择器分发&#xff0c;不同的类型走…

网络安全应急响应-文件痕迹排查

在Windows系统的网络安全应急响应中&#xff0c;文件痕迹排查是识别攻击行为的关键步骤。以下是针对敏感目录的详细排查指南及扩展建议&#xff1a; 1. 临时目录排查&#xff08;Temp/Tmp&#xff09; 路径示例&#xff1a; C:\Windows\TempC:\Users\<用户名>\AppData\L…

SpringBoot集成Redis 灵活使用 TypedTuple 和 DefaultTypedTuple 实现 Redis ZSet 的复杂操作

以下是 Spring Boot 集成 Redis 中 TypedTuple 和 DefaultTypedTuple 的详细使用说明&#xff0c;包含代码示例和场景说明&#xff1a; 1. 什么是 TypedTuple 和 DefaultTypedTuple&#xff1f; TypedTuple<T> 接口&#xff1a; 定义了 Redis 中有序集合&#xff08;ZSet…

递归实现组合型枚举(DFS)

从 1∼n 这 n 个整数中随机选出 m 个&#xff0c;输出所有可能的选择方案。 输入格式 两个整数 n,m,在同一行用空格隔开。 输出格式 按照从小到大的顺序输出所有方案&#xff0c;每行 1 个。 首先&#xff0c;同一行内的数升序排列&#xff0c;相邻两个数用一个空格隔开。…

CentOS 7 镜像源失效解决方案(2025年)

执行 yum update 报错&#xff1a; yum install -y yum-utils \ > device-mapper-persistent-data \ > lvm2 --skip-broken 已加载插件&#xff1a;fastestmirror, langpacks Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirror…

vue3 脚手架初始化项目生成文件的介绍

文章目录 一、介绍二、举例说明1.src/http/index.js2.src/router/index.js3.src/router/routes.js4.src/stores/index.js5.src/App.vue6.src/main.js7.babel.config.js8.jsconfig.json9.vue.config.js10. .env11.src/mock/index.js12.src/mock/mock-i18n.js13.src/locales/en.j…

ubuntu 20.04 编译和运行A-LOAM

1.搭建文件目录和clone代码 mkdir -p A-LOAM/src cd A-LOAM/src git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM cd .. 2.修改代码文件 2.1 由于PCL版本1.10&#xff0c;将CMakeLists.txt中的C标准改为14&#xff1a; set(CMAKE_CXX_FLAGS "-stdc14"…

【教程】MacBook 安装 VSCode 并连接远程服务器

目录 需求步骤问题处理 需求 在 Mac 上安装 VSCode&#xff0c;并连接跳板机和服务器。 步骤 Step1&#xff1a;从VSCode官网&#xff08;https://code.visualstudio.com/download&#xff09;下载安装包&#xff1a; Step2&#xff1a;下载完成之后&#xff0c;直接双击就能…

LabVIEW 长期项目开发

LabVIEW 凭借其图形化编程的独特优势&#xff0c;在工业自动化、测试测量等领域得到了广泛应用。对于长期运行、持续迭代的 LabVIEW 项目而言&#xff0c;其开发过程涵盖架构设计、代码管理、性能优化等多个关键环节&#xff0c;每个环节都对项目的成功起着至关重要的作用。下面…

用matlab搭建一个简单的图像分类网络

文章目录 1、数据集准备2、网络搭建3、训练网络4、测试神经网络5、进行预测6、完整代码 1、数据集准备 首先准备一个包含十个数字文件夹的DigitsData&#xff0c;每个数字文件夹里包含1000张对应这个数字的图片&#xff0c;图片的尺寸都是 28281 像素的&#xff0c;如下图所示…

Go 语言语法精讲:从 Java 开发者的视角全面掌握

《Go 语言语法精讲&#xff1a;从 Java 开发者的视角全面掌握》 一、引言1.1 为什么选择 Go&#xff1f;1.2 适合 Java 开发者的原因1.3 本文目标 二、Go 语言环境搭建2.1 安装 Go2.2 推荐 IDE2.3 第一个 Go 程序 三、Go 语言基础语法3.1 变量与常量3.1.1 声明变量3.1.2 常量定…

如何选择优质的安全工具柜:材质、结构与功能的考量

在工业生产和实验室环境中&#xff0c;安全工具柜是必不可少的设备。它不仅承担着工具的存储任务&#xff0c;还直接影响工作环境的安全和效率。那么&#xff0c;如何选择一个优质的安全工具柜呢&#xff1f;关键在于对材质、结构和功能的考量。 01材质&#xff1a;耐用与防腐 …

系统与网络安全------Windows系统安全(11)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 制作U启动盘 U启动程序 下载制作U启程序 Ventoy是一个制作可启动U盘的开源工具&#xff0c;只需要把ISO等类型的文件拷贝到U盘里面就可以启动了 同时支持x86LegacyBIOS、x86_64UEFI模式。 支持Windows、L…

【5】搭建k8s集群系列(二进制部署)之安装master节点组件(kube-controller-manager)

注&#xff1a;承接专栏上一篇文章 一、创建配置文件 cat > /opt/kubernetes/cfg/kube-controller-manager.conf << EOF KUBE_CONTROLLER_MANAGER_OPTS"--logtostderrfalse \\ --v2 \\ --log-dir/opt/kubernetes/logs \\ --leader-electtrue \\ --kubeconfig/op…

C#里第一个WPF程序

WPF程序对界面进行优化,但是比WINFORMS的程序要复杂很多, 并且界面UI基本上不适合拖放,所以需要比较多的时间来布局界面, 产且需要开发人员编写更多的代码。 即使如此,在面对诱人的界面表现, 随着客户对界面的需求提高,还是需要采用这样的方式来实现。 界面的样式采…

createContext+useContext+useReducer组合管理React复杂状态

createContext、useContext 和 useReducer 的组合是 React 中管理全局状态的一种常见模式。这种模式非常适合在不引入第三方状态管理库&#xff08;如 Redux&#xff09;的情况下&#xff0c;管理复杂的全局状态。 以下是一个经典的例子&#xff0c;展示如何使用 createContex…

记一次常规的网络安全渗透测试

目录&#xff1a; 前言 互联网突破 第一层内网 第二层内网 总结 前言 上个月根据领导安排&#xff0c;需要到本市一家电视台进行网络安全评估测试。通过对内外网进行渗透测试&#xff0c;网络和安全设备的使用和部署情况&#xff0c;以及网络安全规章流程出具安全评估报告。本…