"); //-->
1 Gstreamer 的特点
gstreamer 是一个媒体框架,可以实现采集,编码,解码,渲染,滤镜等一条龙的媒体解决方案。
用命令行工具进行测试验证,还可以通过代码框架直接封装命令来做工程开发,这一点 ffmpeg 是不具备的
Gstreamer 是 glib 实现的,跨平台的实现,windows,linux,androd,ios,macos 官方原生支持,而且官方发布了 windows,linux,androd,ios 二进制包,如果没有特别需求,可以直接拿发布二进制包集成使用。而 ffmpeg想支持 android,ios,就需要自己做交叉编译了。
Gstreamer 采用插件实现方式,根据业务需要可以灵活裁剪插件,可以将发布包做的非常小,特别适合在嵌入式和移动端等应用领域。
Gstreamer 采用 glib 实现,用 C 语言来实现面向对象思维,完全不是标准 C++那一套逻辑,由于要跨平台,原生的系统 API 都是适配封装了一套,甚至自己实现队列,MAP,容器,协程,线程,异步操作,不熟悉 glib 的 API 话,代码理解比较困难
Gstreamer 采用插件管理各个模块,软件框架比较复杂,采用了异步,协程编程模型,进一步增加了理解难度。
gstreamer 用起来简单,但二次开发难度大,因为框架,异步,协程等没有像 ffmpeg 代码用起来直接和简单。
2 gst-inspect-1.0 测试
gstreamer 开发中,一般开发思路为:寻找命令行实现--命令行验证--将命令行集成到代码中---代码工程化。当然如果你要代码更优雅一点,可以用命令行用对应的 API 来实现。本节来总结一下 gstreamer 的常用使用过程。
gst-inspect 可以查看插件或者元素,输入以下命令查看所有元素
gst-inspect-1.0

查看并过滤相关元素,输入以下命令,如下图所示:
gst-inspect-1.0 |grep xxxx
查看某一个元素,输入以下命令,如下图所示:
gst-inspect-1.0 xxx
输入以下命令查看黑名单元素,通常某些插件的依赖库不存在,gstreamer 会将它列入黑名单,不可使用,通过该命可以追踪某些异常的插件。
gst-inspect-1.0 -b
3 gstreamer 日志级别设置
gst 的日志等级分为 none(0)error(1) warning(2) info(3) debug(4) log(5)。默认 gst 的日志等级为 1,即 error打印,出错时会打印。
1)全局日志级别设置
如果需要更高级别打印,修改环境变量 GST_DEBUG 即可。如需要 warning 级别打印,配置 exportGST_DEBUG=2 ,如图所示,在使用 gstreamer 会有 warning 日志产生。


2)某个插件日志级别设置
set GST_DEBUG=GST_AUTOPLUG:5,GST_ELEMENT_*:4,d3dvideosink:3即自动插件为 5,所有元素默认为 4,d3dvideosink 元素为 3。
3)日志打印函数
日志打印函数 GST_ERROR(),GST_WARNING(),GST_INFO(),GST_LOG()和 GST_DEBUG()宏。它们就像 printf 一样可以接受一些参数并且它们是使用默种类的
4)日志另存为文件,配置环境变量 GST_DEBUG_FILE=文件路径。如:Set GST_DEBUG_FILE = C:\\test.log。日志就重定向到 C:\\test.log 文件里。
5)GST_REGISTRY_UPDATE 环境变量用来查找插件是否更新,即是否重新扫描去更新 cache 内容,将这个环境变量的值设置成”no”,这样 gstreamer 框架在初始化的时候就不会检查 plugin 的更新,这样可以加速启动。
输入以下命令:
Set GST_REGISTRY_UPDATE=”no”4 播放音频和视频
Gplay 是基于 Gstreamer 实现的音视频播放器,他能够自动根据硬件自动选择合适的插件进行音视频播放,运行也十分简单,我们输入以下命令播放 mp4 视频。
gst-play-1.0 /gstreamer/video/1080p_30fps_h265.mp4

我们也可以使用 gst-launch 工具播放音视频,gst-launch 是开发者在开发阶段常用的调试工具,相比Gplay 而言,它更加灵活
我们使用以下命令播放音频,此时我们插上耳机可以听到音乐。
gst-launch-1.0 filesrc location=/gstreamer/audio/test.mp3 ! id3demux ! queue ! mpegaudioparse ! decodebin !
audioconvert ! audioresample ! pulsesink
我们输入以下命令播放视频(没有音频播放)
gst-launch-1.0 filesrc location=/gstreamer/video/1080p_30fps_h265.mp4 typefind=true ! \
video/quicktime ! aiurdemux ! queue max-size-time=0 ! vpudec ! imxvideoconvert_g2d ! \
video/x-raw, format=RGB16, width=1024, height=600 ! waylandsink
我们也可以使用 gst-launch 工具播放音视频,gst-launch 是开发者在开发阶段常用的调试工具,相比Gplay 而言,它更加灵活
我们使用以下命令播放音频,此时我们插上耳机可以听到音乐。
gst-launch-1.0 filesrc location=/gstreamer/audio/test.mp3 ! id3demux ! queue ! mpegaudioparse ! decodebin !
audioconvert ! audioresample ! pulsesink
我们输入以下命令播放视频(没有音频播放)
gst-launch-1.0 filesrc location=/gstreamer/video/1080p_30fps_h265.mp4 typefind=true ! \
video/quicktime ! aiurdemux ! queue max-size-time=0 ! vpudec ! imxvideoconvert_g2d ! \
video/x-raw, format=RGB16, width=1024, height=600 ! waylandsink

我们同时播放音频和视频,输入以下命令:
gst-launch-1.0 filesrc location=/gstreamer/video/1080p_30fps_h265.mp4 typefind=true ! \
video/quicktime ! aiurdemux name=demux demux. ! queue max-size-buffers=0 \
max-size-time=0 ! vpudec ! imxvideoconvert_g2d ! video/x-raw, format=RGB16, width=1024, \
height=600 ! waylandsink demux. ! queue max-size-buffers=0 max-size-time=0 \
! decodebin ! audioconvert ! audioresample ! pulsesink
更多内容:公众号关注迅为电子
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
出一个全新正点原子STM32战舰开发板,全新板二手价
利用PIC24F Curiosity开发板简化设计
AM3359支持WINCE7.0
AN2131开发板原理图.rar
米尔出席2025安路科技FPGA技术沙龙
国产FPGA SoC芯选择,米尔安路飞龙核心板重磅发布
米尔-瑞萨RZ/G2L核心板开发板的系统启动时间优化应用笔记
ARM嵌入式系统开发板三星S3C44B0X的完整Protel电路图.rar
SL811HS开发板原理图.rar
51单片机开发板
NEC MCU 78F0513D开发板使用教程
单片机开发板
在米尔FPGA上实现Tiny YOLO V4,助力AIoT应用
Badge USB OCD 与 78F0513D 使用演示视频
莱迪思联手英伟达推出 Sensor Bridge 方案 加速边缘 AI 产品落地
CY7C68013开发板原理图.rar
GWEVB_XC蓝牙设备开发板
3G高分辨率平板开发板设计方案
Jobs芯科EFR32xG24 Dev Kit开发板开箱视频
米尔出席openEuler Summit 2024,携全志T536和RK3562核心模组亮相
建议王总组织个开发板的捐赠活动
(已送出,结贴)送一块51开发板,你出邮费
Microchip PIC24FJ256DA210开发板在图形显示上的应用
CFUMEVK-KIT开发板设计方案
Kinetis K60系列MCU开发板CFUMEVK-KIT
拆解:树莓派5 8 GB AI 套件
当6 TOPS不再是极限:米尔RK3576 + Hailo-8,让高帧率摄像头真正“实时”
慕尼黑电子展上展出的开发板(还有3D 打印机等~)
6TOPS算力驱动30亿参数LLM,米尔RK3576部署端侧多模态多轮对话
12路1080P高清视频流,米尔RK3576开发板重塑视频处理极限