C语言多媒体框架GStreamer入门和概述

目录
  • 一.概述
  • 二.Gstreamer 的特点:
  • 三.Gstreamer源码下载地址:
  • 四.Gstreamer二进制发布库:
  • 五.Gstreamer命令行显示

一.概述

在音视频领域接触最多实现的方案通常是通过ffmpeg(PC和sever端居多)或者硬件厂家的的SDK实现特定硬件的编解码功能(机顶盒,电视等嵌入式设备)。这里我们介绍一个在国内不太常用的解决方案----gstreamer媒体库

二.Gstreamer 的特点:

gstreamer跟ffmpeg一样,也是一个媒体框架,可以实现采集,编码,解码,渲染,滤镜等一条龙的媒体解决方案。

  • 跟ffmpeg一样,也是有命令行工具进行测试验证。同时还可以通过代码框架直接封装命令来做工程开发,这一点ffmpeg是不具备的,ffmpeg需要学习API才能做工程开发,就算你会ffplay.exe或ffmpeg.exe验证某些需求,但要集成到代码,需要学习API来实现。而gstreamer只要知道的命令行实现方式,就可以马上命令行集成到代码中进行使用,当然你想代码优雅一点或者你是熟手也可以使用API来实现。
  • Gstreamer是glib实现的,跨平台的实现,windows,linux,androd,ios,macos官方原生支持,而且官方发布了windows,linux,androd,ios包,如果没有特别需求,可以直接拿发布包集成使用。而ffmpeg想支持android,ios,就需要自己做交叉编译了。
  • Gstreamer采用插件实现方式,根据业务需要可以灵活裁剪插件,可以将发布包做的非常小,特别适合在嵌入式和移动端等应用领域,而ffmpeg比较大,在嵌入领域需要自己做代码级裁剪。
  • Gstreamer 采用glib实现,用C语言来实现面向对象思维,完全不是标准C++那一套逻辑,由于要跨平台,原生的系统API都是适配封装了一套,甚至自己实现队列,MAP,容器,协程,线程,异步操作,不熟悉glib 的API话,代码理解比较困难,用惯了C++,STL,boost,感觉得这是gstream最让人反感的一点,不合主流,搞的我又要学一套API。
  • Gstreamer采用插件管理各个模块,软件框架比较复杂,采用了异步,协程编程模型,进一步增加了理解难度。

一言蔽之,与ffmpeg相比,gstreamer用起来简单,但二次开发难度大,因为框架,异步,协程等没有像ffmpeg 代码用起来那么直接和简单。而ffmpeg要理解API才能使用,用起来比较费劲,好在代码理解比较容易,不过容易和简单只是相对的,用久了深入了就容易了。

三.Gstreamer源码下载地址:

Index of /src ,

由于gstreamer采用插件方法,可以根据需要安装自己需要插件,包含很多插件库。但最以下2个库是必须的。

核心库:gstreamer    支持gstreamer核心框架的

基本库:gst-plugins-base  支持gstreamer最基本功能

在开发阶段建议还安装gst-plugins-good库(常用稳定的库),后面根据业务需要再做裁剪或者安装其他库。

四.Gstreamer二进制发布库:

Download GStreamer

包含windows,android,ios,macos的发布库下载,其中Linux版本在各个Linux发行版本的包安装管理器中下载

下载安装后以下目录(windows为例) :

其中exe就是命令行工具,dll库就是相关插件。

五.Gstreamer命令行显示

下面是命令播放视频文件的命令

gst-launch-1.0.exe playbin uri=file:///D:\\videos\\hevcdemo.ts

如果我们需要D3D 渲染采用d3dsink

gst-launch-1.0 filesrc location=D:\\videos\\test.ts ! decodebin  ! d3dvideosink

如我们需要opengl渲染采用glimagesink

gst-launch-1.0 filesrc location=D:\\videos\\test.ts ! decodebin  ! glimagesink

总之gstreamer插件丰富,用起来灵活,简单,后面再具体展开。

到此这篇关于gstreamer(一)入门和概述的文章就介绍到这了,更多相关C语言多媒体框架GStreamer内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Gstreamer基础知识教程

    目录 一.Gstreamer整体框架 二.Gstreamer基础概念 由于deepstream是基于gstreamer的,所以要想在deepstream上做拓展,需要对gstreamer有一定的认识.以下主要介绍Gstreamer整体框架和Gstreamer基础概念. 一.Gstreamer整体框架 gstreamer是一个用于开发流式多媒体应用的开源框架.本身这个框架是为了更好的处理音视频而设计开发的,但gstreamer不限于处理音视频,只要是有明显的数据流特征的应用,gstreamer都能

  • python gstreamer实现视频快进/快退/循环播放功能

    Gstreamer到底是个啥? GStreamer 是一个 基于pipeline的多媒体框架,基于GObject,以C语言写成. 应用GStreamer这个这个多媒体框架,你可以写出任意一种流媒体的应用来如:meidaplayer.音视频编辑器.VOIP.流媒体服务器.音视频编码等等. 关于视频快进/快退/循环播放的知识总结: 1.本地视频时长获取: Gst.Pad.query_duration官方函数介绍: def Gst.Pad.query_duration (self, format):

  • C语言多媒体框架GStreamer使用教程深讲

    目录 1.GStreamer简介 2.GStreamer基本概念 2.1.元件(Element) 2.2.箱柜(Bin) 2.3.管道(Pipeline) 2.4.衬垫(Pad) 2.5.能力集(Caps) 2.6.幽灵pad(ghost pad) 2.7.Bus 2.8.缓冲区(Buffer) 2.9.插件(Plugin) 3.GStreamer基本架构 4.GStreamer通信机制 4.1.Message 4.2.Event 4.3.Signal 4.4.Probe 4.5.Quary 5

  • C语言多媒体框架GStreamer入门和概述

    目录 一.概述 二.Gstreamer 的特点: 三.Gstreamer源码下载地址: 四.Gstreamer二进制发布库: 五.Gstreamer命令行显示 一.概述 在音视频领域接触最多实现的方案通常是通过ffmpeg(PC和sever端居多)或者硬件厂家的的SDK实现特定硬件的编解码功能(机顶盒,电视等嵌入式设备).这里我们介绍一个在国内不太常用的解决方案----gstreamer媒体库 二.Gstreamer 的特点: gstreamer跟ffmpeg一样,也是一个媒体框架,可以实现采集

  • 基于Bootstrap框架菜鸟入门教程(推荐)

    Bootstrap菜鸟入门教程 Bootstrap简介 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. 一.栅格系统 栅格系统的工作原理: "行(row)"必须包含在 .container (固定宽度)或 .container-fluid (100% 宽度)中,以便为其赋予合适的排列(aligment)和内补(padding). 通过"行(ro

  • 深入理解bootstrap框架之入门准备

    一.bootstrap框架简介 Bootstrap是最流行的前端开发框架. 什么是框架:开发过程的半成品. bootstrap具有以下重要特性: (1)完整的CSS样式插件 (2)丰富的预定义样式表 (3)基于jQuery的插件集 (4)灵活的栅格系统 以下将简单介绍对bootstrap可能用到的知识进行梳理. 二.新手入门 笔者使用版本是3.3.x 在bootstrap中文官网可以找到以下界面 本书采用预编译的版本进行学习 三. 文件结构 生产环境使用bootstrap.min.css和boo

  • python框架flask入门之路由及简单实现方法

    路由 简单来说,路由就是一个url到函数的映射,通过路由规则,可以使得url被指定的函数进行处理解析. 我们都知道现在的web系统的URL都是可以自定义的,也就是我们可以指定url和具体的业务控制器相关联,而这些就是通过路由来实现的. flask中集成了路由处理模块,我们只需要简单地使用route装饰器就可以实现路由匹配. @app.route('/') def index(): return 'Index Page' @app.route('/hello') def hello(): retu

  • python框架flask入门之环境搭建及开启调试

    传说中的python web开发有2大宝器,一个是倚天剑,一个就是屠龙刀.django作为倚天剑已经被大众所熟知,今天我们就来看看flask这把屠龙宝刀. 简介 Flask 是依赖Jinja模板引擎和 WerkzeugWSGI 套件的一套web微框架. 它是小巧的,它是符合wsgi标准的,它是优雅的,也是容易上手的框架,可以说谁掌握了flask这把屠龙刀,谁就可以号令python的web江湖. 安装 包管理工具的出现使得软件安装变得异常简单和容易.python中的包管理工具是pip.一般这个工具

  • GO语言gin框架实现管理员认证登陆接口

    后台用户登录验证功能是很多项目的必须要有的逻辑 , 也是常见的技术需求 . 要实现这个逻辑首先要有数据库表结构如下: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `password` varchar(50) NOT NULL DEFAULT '', `nickname` varchar(50) NOT NULL DEFAULT '', `cr

  • python flask框架快速入门

    Flask 本身相当于一个内核,比如可以用 Flask 扩展加入ORM.窗体验证工具,文件上传.身份验证等.Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL. 其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2.这两个也是 Flask 框架的核心. Flask常用扩展包: Flask-SQLalchemy:操作数据库: Flask-script:插入脚本: Flask-migrate:管理迁移数据库: Flask-Session:S

  • Java持久层框架Mybatis入门详细教程

    mybatis介绍 mybatis它是轻量级持久层框架,由ibatis演化而来.它自动连接数据库,将数据库的结果集封装到对象中POJO. POJO: 一个简单的Java类,这个类没有实现/继承任何特殊的java接口或者类,不遵循任何主要java模型,约定或者框架的java对象.在理想情况下,POJO不应该有注解. JavaBean: JavaBean是可序列化的,实现了serializable接口 具有一个无参构造器 有按照命名规范的set和gett,is(可以用于访问布尔类型的属性)方法 My

  • C语言结构体简单入门讲解

    结构体 定义:用于存储不同的数据类型,存储在同一块内存空间里面 关键字 struct 标签 结构体名称 成员 例如: struct student { char name[20]: char sex; int age; float grade; }: 结构体后面不要忘记加分号 结构体至少需要一个标签,证明身份 结构体的使用 .访问指针 →访问 #include <stdio.h> #include <string.h> struct student { char name[20];

随机推荐