风暴俱乐部|gstreamer(一)入门概述
一.概述
在音视频领域接触最多实现的方案通常是通过ffmpeg(PC和sever端居多)或者硬件厂家的的SDK实现特定硬件的编解码功能(机顶盒 , 电视等嵌入式设备) 。 这里我们介绍一个在国内不太常用的解决方案----gstreamer媒体库
gstreamer
二.Gstreamer 的特点:
gstreamer跟ffmpeg一样 , 也是一个媒体框架 , 可以实现采集 , 编码 , 解码 , 渲染 , 滤镜等一条龙的媒体解决方案 。
1) 跟ffmpeg一样 , gsteamer也是有命令行工具进行测试验证,同时还可以通过代码框架直接封装命令来做工程开发 , 这一点ffmpeg是不具备的 , ffmpeg需要学习API才能做工程开发 , 就算你会ffplay.exe或ffmpeg.exe验证某些需求 , 但要集成到代码 , 需要学习API来实现 。 而gstreamer只要知道的命令行实现方式 , 就可以马上命令行集成到代码中进行使用 , 当然你想代码优雅一点或者你是熟手也可以使用API来实现 。
2) Gstreamer是glib实现的 , 跨平台的实现 , windows,linux,androd,ios , macos官方原生支持 , 而且官方发布了windows,linux,androd,ios二进制包 , 如果没有特别需求 , 可以直接拿二进制发布包集成使用 。 而ffmpeg想支持android,ios , 就需要自己做交叉编译了 。
3) Gstreamer采用插件实现方式 , 根据业务需要可以灵活裁剪插件 , 可以将发布包做的非常小 , 特别适合在嵌入式和移动端等应用领域 , 而ffmpeg比较大 , 在嵌入领域需要自己做代码级裁剪 , 瘦身难度大 。
4) Gstreamer 采用glib实现 , 用C语言来实现面向对象思维 , 完全不是标准C++那一套逻辑 , 由于要跨平台 , 原生的系统API都是适配封装了一套 , 甚至自己实现队列 , MAP , 容器 , 协程 , 线程 , 异步操作 , 不熟悉glib 的API话 , 代码理解比较困难 , 用惯了C++ , STL , boost , 感觉得这是gstream最让人反感的一点 , 不合主流 , 搞的我又要学一套API 。
5) Gstreamer采用插件管理各个模块 , 软件框架比较复杂 , 采用了异步 , 协程编程模型 , 进一步增加了理解难度 。
一言蔽之 , 与ffmpeg相比 , gstream用起来简单 , 但二次开发难度大 , 因为框架 , 异步 , 协程等没有像ffmpeg 代码用起来直接和简单 , 而ffmpeg要理解API才能使用 , 用起来比较费劲 , 好在代码理解比较容易 , 不过容易和简单只是相对的 , 用久了深入了就容易了 。
三.Gstreamer源码下载地址:
,
由于gstreamer采用插件方法 , 可以根据需要安装自己需要插件 , 包含很多插件库 。 但最以下2个库是必须的 。
核心库:gstreamer 支持gstreamer核心框架的
基本库:gst-plugins-base 支持gstreamer最基本功能
在开发阶段建议还安装gst-plugins-good库(常用稳定的库) , 后面根据业务需要在做裁剪或者安装其他库 。
gstreamer插件库
四.Gstreamer二进制发布库:
包含windows,android,ios,macos的二进制发布库下载 , 其中Linux版本在各个Linux发行版本的包安装管理器中下载
下载安装后以下目录(windows为例) :
gstreamer安装库结构
其中exe就是命令行工具 , dll库就是相关插件 。
五.Gstreamer命令行显示
推荐阅读
- 巴萨俱乐部|英媒:梅西对未来没有表态 曼城冬窗计划1500万镑报价梅西
- 七号人称说科技|华为始料未及?台积电又成了“炮灰”?新风暴说来就来
- 王者荣耀|Hero久竞 1-0 QGhappy:风暴龙王团战致胜Hero先下一城
- 附魔|DNF:0成本打造风暴大奶,白嫖各种附魔宝珠,团长抢着要
- 肺结核|江苏师大肺结核疫情“风暴眼”:79人班级只剩30多人上课
- 广州恒大|广州恒大又一功勋成离队热门,已消失很久,俱乐部早想让他走
- 猫神|Alan再曝猫神内幕:是猫神让我去打比赛,跟俱乐部没关系
- 沙尔克04足球俱乐部|1-1 柏林联拿下赛季第一分,沙尔克04
- 体育先生V|现役只有他最有机会吗?,詹姆斯加入4冠+4MVP俱乐部第四人
- 姬甲风暴减脂增肌系统减肥塑身打造马甲线、柯基臀、小蛮腰
