gstreamer使用总结
使用gstreamer显示H264数据流:
1、选择合适的gstreamer插件。
由于CPU的不同,在解码H264数据流时使用的插件也是不同的,以i.MX系列CPU为例,可以使用插件gst-fsl-plugins。
下面是gst-fsl-plugins在github上的链接:https://github.com/genesi/gst-fsl-plugins
2、使用appsrc接收数据:
(1)建立pipeline和appsrc:
pipeline = gst_pipeline_new (“pipeline”);
appsrc = gst_element_factory_make (“appsrc”, “source”);
(2)设置caps:
GstCaps *h264_caps = gst_caps_new_simple (“video/x-h264”,
“stream-format”, G_TYPE_STRING, “byte-stream”,
“alignment”, G_TYPE_STRING, “au”,
“profile”, G_TYPE_STRING, “baseline”,
“width”, G_TYPE_INT, 800,
“height”, G_TYPE_INT, 480,
“framerate”, GST_TYPE_FRACTION, 30, 1, NULL);
(3)调用:
g_signal_connect (appsrc, “need-data”, G_CALLBACK (cb_need_data), NULL);
g_signal_connect (appsrc, “enough-data”, G_CALLBACK (cb_enough_data), NULL);
在程序执行cb_need_data回调后,即可开始向appsrc发送数据,发送数据时使用:
g_signal_emit_by_name (g_ssp_appsrc, “push-buffer”, buffer, &ret);
(4)设置其他一些属性,具体可参考gstreamer官网上的文档。
https://gstreamer.freedesktop.org/documentation/app/appsrc.html?gi-language=c#appsrc
3、使用合适的解码插件解码,例如:可以选择mfw_h264decoder。
parser = gst_element_factory_make (“h264parse”, “h264parse”);
decoder = gst_element_factory_make (“mfw_h264decoder”, “decoder”);
4、使用合适的videosink播放视频数据,例如:可以选择mfw_v4lsink。
videosink = gst_element_factory_make (“mfw_v4lsink”, “videosink”);
5、连接各个插件,设置PLAYING状态
gst_bin_add_many (GST_BIN(pipeline), appsrc, parser, decoder, videosink, NULL);
gst_element_link_many (appsrc, parser, decoder, videosink, NULL);
gst_element_set_state (pipeline, GST_STATE_PLAYING);
6、g_main_loop_run (loop);
7、当需要退出的时候,执行g_main_loop_quit (loop);
8、释放资源:
gst_object_unref (bus);
gst_element_set_state (pipeline, GST_STATE_NULL);
g_main_loop_unref (loop);
gstreamer使用总结相关推荐
- 多平台Gstreamer Multiplatform
多平台Gstreamer Multiplatform GStreamer可在所有主要操作系统上运行,例如Linux,Android,Windows,Max OS X,iOS,以及大多数BSD,商业Un ...
- GStreamer 1.18.4稳定的错误修复版本
GStreamer 1.18.4稳定的错误修复版本 GStreamer团队宣布最喜欢的跨平台多媒体框架的稳定的1.18版本系列中的另一个错误修复版本! 此版本仅包含错误修复和重要的安全修复程序,并且从 ...
- 什么是GStreamer?
什么是GStreamer? GStreamer是用于创建流媒体应用程序的框架.基本设计来自俄勒冈大学研究生院的视频管道以及DirectShow的一些想法. GStreamer的开发框架使编写任何类型的 ...
- gst-crypto GStreamer插件
gst-crypto GStreamer插件 内容 • 1. gst-crypto概述 o 1.1gst-crypto GStreamer插件功能 o 1.2用例范例 • 2. GStreamer插件 ...
- GStreamer跨平台多媒体框架
GStreamer跨平台多媒体框架 Gstreamer基本概念 GStreamer是用于构造媒体处理组件图的库.它支持的应用程序范围从简单的Ogg / Vorbis回放,音频/视频流到复杂的音频(混合 ...
- GStreamer 1.0 series序列示例
GStreamer 1.0 series序列示例 OpenEmbedded layer for GStreamer 1.0 这layer层为GStreamer 1.0框架提供了非官方的支持,用于Ope ...
- 【GStreamer】官网基本教程学习(basic-tutorial)
目录 下载和编译 basic-tutorial-1.c 直接创建管道播放视频 basic-tutorial-2.c 创建元件-->装入管道-->连接元件 0.gstreamer 函数调用顺 ...
- 【GStreamer】使用capsfilter设置x264enc中的profile级别
1.问题描述 在[GStreamer]在x264enc中设置profile级别中,通过设置x264enc的属性,只将profile由high级别切换到main,但是在切换到baseline时,失败了. ...
- 【GStreamer】在x264enc中设置profile级别
1.问题描述 在使用GStreamer生成h.264的rtmp流时,不知道怎么设置h.264的profile级别.默认一直是"high": video/x-h264, ... pr ...
- 【GStreamer】gstreamer工具详解之:gst-discoverer-1.0
四.gst-discoverer-1.0 1.简介 gst-discoverer-1.0用于显示文件元数据和流信息,它可以运行在单独的文件或整个目录(递归到子目录中). 2.命令格式: gst-dis ...
最新文章
- linux DNS配置详解
- python pyOpenGL安装
- php-fmp开机启动,php-fpm设置成服务并开机自动启动
- exchange 只发送邮件 不能登录_springboot + rabbitmq发送邮件
- 飞飞php2.8采集失败_飞飞影视系统火车头采集器采集发布免登录接口
- supervisor 守护多个进程_supervisor管理守护进程
- 聊聊一致性Hash在负载均衡中的应用
- Blockchair首席开发者质疑闪电网络能够扩展比特币:可锁定大部分闪电网络的流动性来破坏闪电网络
- 算法面试题_求给定字符串的排列、组合、八皇后问题
- 开放封闭原则_开放/封闭原则
- 9个比赛7进top10,阿里天池大数据竞赛思路分享
- MacOS 更新系统或XCode终端Git报错
- Java 中怎么打印数组?
- /*	题目: * 打印出所有的	 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和	 	等于该数本身。 	例如:	 	153 是一个 水仙花数
- 把excel转换成html格式的文件,极强PDF转换器将Excel表格转换成HTML网页格式的方法...
- CS229part3广义线性模型
- 取消SIM卡槽,eSIM为防盗带来新转机,手机防盗终极大招
- Autoit 3 涉及中文内容程序失效的处理办法
- 快捷方式图标变白完美解决方法
- java“小白上楼梯”
热门文章
- 视频教程-网站与APP中的版式设计、色彩搭配和创意思维-UI
- Quora上How important is deep learning in autonomous driving?答案的搬运
- 贪心算法--牛牛的朋友
- TVM Developer Tutorial
- 高德js版地图在iOS15 beta版本卡死的问题
- 根号算法——暴力美学
- python爬虫,爬取起点网站小说
- python strftime格式化显示_Python strftime日期格式化
- 3、MySQL 高级-用户与权限管理
- 微信小程序 打开小程序设置页(wx.openSetting)接口调整官方