使用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使用总结相关推荐

  1. 多平台Gstreamer Multiplatform

    多平台Gstreamer Multiplatform GStreamer可在所有主要操作系统上运行,例如Linux,Android,Windows,Max OS X,iOS,以及大多数BSD,商业Un ...

  2. GStreamer 1.18.4稳定的错误修复版本

    GStreamer 1.18.4稳定的错误修复版本 GStreamer团队宣布最喜欢的跨平台多媒体框架的稳定的1.18版本系列中的另一个错误修复版本! 此版本仅包含错误修复和重要的安全修复程序,并且从 ...

  3. 什么是GStreamer?

    什么是GStreamer? GStreamer是用于创建流媒体应用程序的框架.基本设计来自俄勒冈大学研究生院的视频管道以及DirectShow的一些想法. GStreamer的开发框架使编写任何类型的 ...

  4. gst-crypto GStreamer插件

    gst-crypto GStreamer插件 内容 • 1. gst-crypto概述 o 1.1gst-crypto GStreamer插件功能 o 1.2用例范例 • 2. GStreamer插件 ...

  5. GStreamer跨平台多媒体框架

    GStreamer跨平台多媒体框架 Gstreamer基本概念 GStreamer是用于构造媒体处理组件图的库.它支持的应用程序范围从简单的Ogg / Vorbis回放,音频/视频流到复杂的音频(混合 ...

  6. GStreamer 1.0 series序列示例

    GStreamer 1.0 series序列示例 OpenEmbedded layer for GStreamer 1.0 这layer层为GStreamer 1.0框架提供了非官方的支持,用于Ope ...

  7. 【GStreamer】官网基本教程学习(basic-tutorial)

    目录 下载和编译 basic-tutorial-1.c 直接创建管道播放视频 basic-tutorial-2.c 创建元件-->装入管道-->连接元件 0.gstreamer 函数调用顺 ...

  8. 【GStreamer】使用capsfilter设置x264enc中的profile级别

    1.问题描述 在[GStreamer]在x264enc中设置profile级别中,通过设置x264enc的属性,只将profile由high级别切换到main,但是在切换到baseline时,失败了. ...

  9. 【GStreamer】在x264enc中设置profile级别

    1.问题描述 在使用GStreamer生成h.264的rtmp流时,不知道怎么设置h.264的profile级别.默认一直是"high": video/x-h264, ... pr ...

  10. 【GStreamer】gstreamer工具详解之:gst-discoverer-1.0

    四.gst-discoverer-1.0 1.简介 gst-discoverer-1.0用于显示文件元数据和流信息,它可以运行在单独的文件或整个目录(递归到子目录中). 2.命令格式: gst-dis ...

最新文章

  1. linux DNS配置详解
  2. python pyOpenGL安装
  3. php-fmp开机启动,php-fpm设置成服务并开机自动启动
  4. exchange 只发送邮件 不能登录_springboot + rabbitmq发送邮件
  5. 飞飞php2.8采集失败_飞飞影视系统火车头采集器采集发布免登录接口
  6. supervisor 守护多个进程_supervisor管理守护进程
  7. 聊聊一致性Hash在负载均衡中的应用
  8. Blockchair首席开发者质疑闪电网络能够扩展比特币:可锁定大部分闪电网络的流动性来破坏闪电网络
  9. 算法面试题_求给定字符串的排列、组合、八皇后问题
  10. 开放封闭原则_开放/封闭原则
  11. 9个比赛7进top10,阿里天池大数据竞赛思路分享
  12. MacOS 更新系统或XCode终端Git报错
  13. Java 中怎么打印数组?
  14. /* 题目: * 打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和 等于该数本身。 例如: 153 是一个 水仙花数
  15. 把excel转换成html格式的文件,极强PDF转换器将Excel表格转换成HTML网页格式的方法...
  16. CS229part3广义线性模型
  17. 取消SIM卡槽,eSIM为防盗带来新转机,手机防盗终极大招
  18. Autoit 3 涉及中文内容程序失效的处理办法
  19. 快捷方式图标变白完美解决方法
  20. java“小白上楼梯”

热门文章

  1. 视频教程-网站与APP中的版式设计、色彩搭配和创意思维-UI
  2. Quora上How important is deep learning in autonomous driving?答案的搬运
  3. 贪心算法--牛牛的朋友
  4. TVM Developer Tutorial
  5. 高德js版地图在iOS15 beta版本卡死的问题
  6. 根号算法——暴力美学
  7. python爬虫,爬取起点网站小说
  8. python strftime格式化显示_Python strftime日期格式化
  9. 3、MySQL 高级-用户与权限管理
  10. 微信小程序 打开小程序设置页(wx.openSetting)接口调整官方