Gstreamer基础教程+Qt

Gstreamer基础教程+Qt文章目录

第一章  环境配置

文章目录

目录

Gstreamer基础教程+Qt文章目录

文章目录

前言

一、GStreamer库下载

二、Gstreamer库安装

1.双击 gstreamer-1.0-devel-msvc-x86_64-1.22.1.msi 文件,点击运行

2.点击next,选择change,点击next,等待安装完成即可。

三、在Qt中添加Gstreamer路径

1.路径拷贝

2.在QT的pro文件中添加库以及文件路径

四、helloworld示例代码

五、示例效果

总结


前言

        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基础教程+Qt_第1张图片

 

二、Gstreamer库安装

1.双击 gstreamer-1.0-devel-msvc-x86_64-1.22.1.msi 文件,点击运行

 

Gstreamer基础教程+Qt_第2张图片

2.点击next,选择change,点击next,等待安装完成即可。

Gstreamer基础教程+Qt_第3张图片

Gstreamer基础教程+Qt_第4张图片

 

三、在Qt中添加Gstreamer路径

1.路径拷贝

我的安装路径是D:\gstreamer,将D盘下gstreamer整个拷贝到QT工程目录中,路径结构如图所示

Gstreamer基础教程+Qt_第5张图片

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 

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();
}

 五、示例效果

Gstreamer基础教程+Qt_第6张图片 


 

总结

      本篇文章只是在QT下对Gstreamer开发的一些环境配置以及简单示例,后续继续学习更新。

你可能感兴趣的:(GStreamer,音视频)