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

更多内容:公众号关注迅为电子

迅为IMX8MM开发板Yocto系统使用Gstarwmra(一)相关推荐

  1. 迅为IMX8MM开发板Yocto系统使用Gstarwmra播放音频和视频

    Gplay 是基于 Gstreamer 实现的音视频播放器,他能够自动根据硬件自动选择合适的插件进行音视频 播放,运行也十分简单,我们输入以下命令播放 mp4 视频. gst-play-1.0 /gs ...

  2. 迅为RK3568开发板Android12 系统功能测试-有线网测试

    首先准备一个路由器,一根网线,如下图所示,这俩个网口都可以连接外网,将网口通过 网线连接到路由器的千兆口. 安卓 12 系统是 DHCP 的,开发板连接到路由器可以自动获取 IP 地址,然后就可以打开 ...

  3. 迅为RK3568开发板Android12系统功能测试-开机启动

    烧写安卓 12 系统镜像,安卓 12 系统镜像在网盘资料"iTOP-3568 开发板\01_[iTOP-RK3568开发板]基础资料\011_iTOP-RK3568 开发板 Android1 ...

  4. 迅为RK3399开发板Linux系统TFTP传输文件服务器测试

    本机测试:在/var/tftpboot 下面建立一个文件 test,在里面输入 hello world,然后保存该文件,如下图 再启动另一个终端,然后输入 tftp 127.0.0.1,如下图. 输入 ...

  5. 迅为iTOP3399开发板QT系统PCIE 4G移植-编译程序

    配套资料在网盘资料"iTOP-3399 开发资料汇总(不含光盘资料)\10_iTOP-3399 开发板 Linux 系统开发 \PCIE 4G 模块测试.zip"目录下. 45.1 ...

  6. linux imx6 书籍,迅为iMX6开发板-Linux系统-TFTP使用文档

    TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于 UDP 协议实 现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大.不复杂的应用 ...

  7. 迅为4418开发板Linux系统修改和固定MAC地址

    本文介绍如何修改 Qt 系统的 MAC 等网络参数,Qt 系统的修改方法和根文件系统一模一样,可以通用. 在将 Qt 系统或者根文件系统烧写到开发板之后,启动开发板,如下图所示,只需要修改这个配置文件 ...

  8. 迅为IMX6开发板QT系统LVDS和HDMI双屏异显和同显

    本文档介绍如何在 iMX6 开发板下,QtE 系统中,实现 LVDS 和 HDMI 的双屏异显和同显. 首先开发板分别连接 9.7 寸屏和 HDMI 显示器,然后使用 MfgTool 工具烧写 QT ...

  9. 迅为RK3568开发板Linux_NVR_SDK系统开发-查看NPU/GPU/CPU频率使用率

    iTOP-RK3568 开发板烧写 Linux_NVR_SDK 镜像,在串口终端输入以下命 令查看 NPU/GPU/CPU 频率使用率. 1 输入以下命令挂载 debug,只有挂载 debug 才可以 ...

最新文章

  1. R语言可视化学习笔记之ggridges包
  2. 不丹的启示:用国民幸福总值替代GDP
  3. 报错:ModuleNotFoundError: No module named ‘cv_bridge‘,以及在ROS是如何安装cv_bridge库包
  4. CakePHP 2.x CookBook 中文版 第五章 控制器 之 组件
  5. 一些很有用的技术工具
  6. 【面试招聘】不要忽视实习面试失败对校招的影响
  7. Android 文件的存储和加载
  8. jenkins的JAVA简单顺序配置git仓库
  9. 服务器邮件权限的开放,企业邮件服务器收发邮件权限
  10. 为什么腾讯视频下载不了_腾讯视频如何设置背景
  11. php用a什么软件来下载,AMQB官方PHP库
  12. 绝地求生2月19服务器维护,绝地求生2月19日停机维护几点结束_2020绝地求生2月19日开服时间介绍_求知软件网...
  13. BiLSTM+CRF医学病例命名实体识别项目
  14. 中国人上淘宝喜欢干啥 你知道吗?
  15. 计算机搜索栏历史记录,如何打开搜索历史记录
  16. 网格计算, 云计算, 集群计算, 分布式计算, 超级计算
  17. 【MySQL】用假期时间学习数据库,稳赚不亏(存储、视图、事务、优化、安全)
  18. Android下红包雨的实现
  19. 【spark】八 自己实现 RDD中 某列 累计百分比确定阈值
  20. POI 导出Excel

热门文章

  1. 佳能Canon FAX-L150 打印机驱动
  2. c语言标准库详解(七):字符串函数string.h
  3. 【题解】【AcWing】1587. 链表重复数据删除
  4. Androistudio打不开Missing essential plugins:com.android.tools.designorg.jetbrains.android Pleas
  5. aspose处理doc转图片,导致图片显示乱码等
  6. VTK学习笔记(九)VTK中的各个模块
  7. 创意矢量扁平化商务PPT模板
  8. 使用谷歌浏览器调试手机网页
  9. #第23篇分享:一个北京二手房价格数据挖掘实例(python语言:sklearn随机森林)
  10. t1登录显示连接服务器失败,t1客户端登录不到服务器