前言

  当前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可以无缝地整合新的插件模块。但由于模块化和强大的功能往往以更高的复杂性为代价,因此编写新的应用程序并不总是那么容易。

 

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。

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

  1. cocos2d-x学习笔记(18)--游戏打包(windows平台)

    cocos2d-x学习笔记(18)--游戏打包(windows平台)           之前做好的游戏,都是在vs2008下编译执行的.假设说想把游戏公布到网上或者和其它人一起分享游戏,那就得对游戏 ...

  2. Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE

    Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE Windows平台下安装Arduino IDE Windows操作系统下可以使用安装向导和压缩包形式安装.下面详细讲解这 ...

  3. 在Windows平台下安装与配置Memcached及C#使用方法

    1.在Windows下安装Memcached 资料来源:http://www.jb51.net/article/30334.htm 在Windows平台下安装与配置Memcached的方法,Memca ...

  4. Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core

    第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用. 官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutori ...

  5. 如何在Windows平台下安装配置Memcached

    Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一 ...

  6. Windows 平台下安装Cygwin后,sshd服务无法启动

    Windows 平台下安装Cygwin后,sshd服务无法启动 系统日志记录信息: 事件 ID ( 0 )的描述(在资源( sshd )中)无法找到.本地计算机可能没有必要的注册信息或消息 DLL 文 ...

  7. windows平台mongoDB安装配置

    一.首先安装mongodb 1.官网下载mongoDB:http://www.mongodb.org/downloads,选择windows平台.安装时,一路next就可以了.我安装在了F:\mong ...

  8. (转)在Windows平台上安装Node.js及NPM模块管理

    本文转载自:http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 之前9月份的时候我写了一篇关于如何在Windows平台上手工管理 ...

  9. 获取Windows平台下 安装office 版本位数信息

    最近在处理客户端安装程序过程,有一个需求:需要检测Windows平台下安装office 版本信息以及获取使用的office是32 位还是64 位: 当检测出office 位数为64位时,提示当前off ...

  10. FFmpeg开发笔记(二)搭建Windows系统的开发环境

    由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的.不过若有已经 ...

随机推荐

  1. Java集合容器面试题

    Java常用集合类有哪些?Collection接口的子接口包括:Set接口和List接口Map接口的实现类主要有:HashMap.TreeMap.Hashtable.ConcurrentHashMap ...

  2. html页面滚动时元素错位解决方案

    一个布局较复杂的页面,在手机浏览器上运行时,部分配置比较差的手机会出现滚动滚动条后,页面正常滚动,但部分元素却出现类似position:fixed一般悬浮在页面上,然后再滚动.看上去有点像视差滚动,但 ...

  3. bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩

    最近项目要用到定期批量将文件及文件夹下的文档打包,所以想到要写脚本来实现,然后做Windows定期任务调用.bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩. 调用WinRAR来实现 因 ...

  4. C++:异常处理

    C++的异常处理机制是由三部分组成:检查(try).抛出(throw)和捕获(catch).需要检查的语句放到try中:throw用来当出现异常时发出一个异常信息:catch用来捕获异常信息,且处理它 ...

  5. playwright相关

    Playwright 介绍 Playwright 是一个用于自动化浏览器操作的开源工具,由 Microsoft 开发和维护.它支持多种浏览器(包括 Chromium.Firefox 和 WebKit) ...

  6. ctfshow--web6 sql注入空格绕过

    这道题目空格被过滤了,那么我们可以用/**/来替换空格 'union/**/select/**/1,(select/**/database()),3# //查看数据库名名字为web2 查看web2下的 ...

  7. 2025春秋杯DAY2DAY3部分wp

    2025春秋杯DAY2DAY3部分wp DAY2 WEB easy_ser 源码如下 <?php //error_reporting(0); function PassWAF1($data){ ...

  8. 硬件设计:POE--POE受电设备(PD)电路工作原理

    参考资料:解决POE PD设计挑战的有效的解决方案 POE电源模块的介绍特性和芯片的详细资料概述 如何应对PoE受电设备设计挑战 以太网供电中受电设备的芯片设计与研究 以太网供电检测和分级接口电路设计 ...

  9. flutter-解决长按TextField出现英文(复制粘贴)问题

    第一步 引入依赖 dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter 第二步 在main.dart中添加代码 ...

  10. 我的世界服务端插件安装 Vault经济前置插件安装(商店,圈地等需要该前置插件)

    Minecraft服务端插件安装-Vault用户登录插件安装 需要准备Vault插件 Vault.jar经济前置插件 Minecraft Vault插件是一款用于Minecraft服务器的多功能经济. ...