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完成。

命令行打开播放文件

shell 复制代码
gst-launch-1.0.exe playbin uri=file:///<你的视频>

命令行打开usb摄像头

shell 复制代码
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

相关推荐
长沙红胖子Qt8 小时前
GStreamer开发笔记(三):测试gstreamer/v4l2+sdl2/v4l2+QtOpengl打摄像头延迟和内存
流媒体·性能·gstreamer·实时性·延迟与内存
林政硕(Cohen0415)1 个月前
RK3568 基于Gstreamer的多媒体调试记录
linux·rk3568·多媒体·gstreamer
芝麻别开门2 个月前
gstreamer之GstVideoDecoder源码剖析
gstreamer
信必诺2 个月前
GStreamer —— 2.2、Windows下Qt加载GStreamer库后运行 - “教程2:GStreamer 概念“(附:完整源码)
qt·gstreamer
张三和李四的家2 个月前
GStreamer源码安装1.24版本
gstreamer
程序猿玖月柒3 个月前
常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)
ffmpeg·音视频·gstreamer·openmax·directshow·avfoundation
芥末的无奈4 个月前
GStreamer 简明教程(九):插件开发,以一个音频特效插件为例
音视频·gstreamer
、、、、南山小雨、、、、4 个月前
打包arm gstreamer镜像
gstreamer
skynetkang5 个月前
摄像头原始数据读取——gstreamer(gst_parse_launch)
linux·c++·音视频·gstreamer