Gstreamer基础教程+Qt文章目录
第一章 环境配置
前言
Gstreamer是一个支持Windows,Linux,Android, iOS的跨平台的多媒体框架,应用程序可以通过管道(Pipeline)的方式,将多媒体处理的各个步骤串联起来,达到预期的效果。每个步骤通过元素(Element)基于GObject对象系统通过插件(plugins)的方式实现,方便了各项功能的扩展。它与FFMPEG库作用类似,FFMPEG库通过给音视频相关库文件进行音视频操作;GStreamer则是一个音视频框架,只能按照其规范进行操作。本系列文章,按照您已经熟练使用QT进行演示操作。从零开始在QT环境下配置Gstreamer库
一、GStreamer库下载
下载链接:Download GStreamer
页面介绍:1.22.1 runtime installer 为运行版本
1.22.1 development installer 为开发版本
我们需要下载开发版本,下载文件名称:gstreamer-1.0-devel-msvc-x86_64-1.22.1.msi
二、Gstreamer库安装
1.双击 gstreamer-1.0-devel-msvc-x86_64-1.22.1.msi 文件,点击运行
2.点击next,选择change,点击next,等待安装完成即可。
三、在Qt中添加Gstreamer路径
1.路径拷贝
我的安装路径是D:\gstreamer,将D盘下gstreamer整个拷贝到QT工程目录中,路径结构如图所示
2.在QT的pro文件中添加库以及文件路径
1)需要添加三个库gobject-2.0.lib、glib-2.0.lib、gstreamer-1.0.lib;库路径可自己在 gstreamer文件夹中查找;添加方式如下图所示。
LIBS += -LD:/0.Study/1.Gstreamer/QtDemo/GstDemo/gstreamer/1.0/msvc_x86_64/lib/ -lgobject-2.0
LIBS += -LD:/0.Study/1.Gstreamer/QtDemo/GstDemo/gstreamer/1.0/msvc_x86_64/lib/ -lglib-2.0
LIBS += -LD:/0.Study/1.Gstreamer/QtDemo/GstDemo/gstreamer/1.0/msvc_x86_64/lib/ -lgstreamer-1.0
2)包含文件路径
INCLUDEPATH += D:/0.Study/1.Gstreamer/QtDemo/GstDemo/gstreamer/1.0/msvc_x86_64/lib/glib-2.0/include
INCLUDEPATH += D:/0.Study/1.Gstreamer/QtDemo/GstDemo/gstreamer/1.0/msvc_x86_64/include/glib-2.0
INCLUDEPATH += D:/0.Study/1.Gstreamer/QtDemo/GstDemo/gstreamer/1.0/msvc_x86_64/include/gstreamer-1.0
INCLUDEPATH += D:/0.Study/1.Gstreamer/QtDemo/GstDemo/gstreamer/1.0/msvc_x86_64/include/gstreamer-1.0/gst
四、helloworld示例代码
在main.cpp中增加的实例代码
#include <gst/gst.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
GstElement *pipeline;
GstBus *bus;
GstMessage *msg;
/* Initialize GStreamer */
gst_init (&argc, &argv);
/* Build the pipeline */
pipeline =
gst_parse_launch
("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm",
NULL);
/* Start playing */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
/* Wait until error or EOS */
bus = gst_element_get_bus (pipeline);
msg =
gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
GST_MESSAGE_ERROR);
/* See next tutorial for proper error message handling/parsing */
if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR) {
g_error ("An error occurred! Re-run with the GST_DEBUG=*:WARN environment "
"variable set for more details.");
}
/* Free resources */
gst_message_unref (msg);
gst_object_unref (bus);
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
return a.exec();
}
五、示例效果
总结
本篇文章只是在QT下对Gstreamer开发的一些环境配置以及简单示例,后续继续学习更新。