当前位置: 首页 > news >正文

QT播放gstreamer命令(三)---使用QMediaPlayer

前文:

        因为之前听说过,QMediaPlayer已经集成了gstreamer,但是并没有什么接口来例子来说明,根本看不出来有任何gstreamer的形式,于是在QT5助手里面搜了一下,发现确实有gstreamer的痕迹,但是例子写的极其拉胯,经过自己尝试,终于发现了一种直接使用QMediaPlayer播放gstreamer命令的方式,以下是官方截图:

        以上是官方截图,实际测试发现,会单独弹出来,有点小问题,不过我已经解决了,说明这种方案确实可行。

步骤:

一、pro文件修改

        1. 增加QT       +=  multimediawidgets

二、

        main.cpp文件:

记得,sink的名字必须是 qtvideosink !!! 比如:

mediaPlayer.setMedia(QUrl("gst-pipeline: videotestsrc ! xvimagesink name=qtvideosink"));

#include <QWidget>
#include <QUrl>
#include <QVBoxLayout>
#include <QtMultimediaWidgets>
#include <gst/gst.h>
#include <gst/video/videooverlay.h>int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget window;QVBoxLayout layout(&window);QVideoWidget *videoWidget = new QVideoWidget;QPushButton playButton1("Play");QPushButton playButton2("Stop");QMediaPlayer mediaPlayer;mediaPlayer.setVideoOutput(videoWidget);// 设置视频源
// mediaPlayer.setMedia(QUrl::fromLocalFile("/home/enpht/Videos/1080.mp4"));//mediaPlayer.setMedia(QUrl("gst-pipeline: v4l2src device=/dev/video0 ! videoconvert ! xvimagesink name=qtvideosink"));mediaPlayer.setMedia(QUrl("gst-pipeline: videotestsrc ! xvimagesink name=qtvideosink"));// 连接按钮的点击信号到播放视频的槽函数QObject::connect(&playButton1, &QPushButton::clicked, [&mediaPlayer]() {mediaPlayer.play();});QObject::connect(&playButton2, &QPushButton::clicked, [&mediaPlayer]() {mediaPlayer.stop();});layout.addWidget(videoWidget);layout.addWidget(&playButton1);layout.addWidget(&playButton2);window.show();return app.exec();
}

经过我的继续测试,发现了这种用法一些很牛逼的用法,比如封装头文件,使用提升等等,具体就不透露了哈,偷偷用就行。

同时这种方法看似方便,底层有一些问题需要解决,以后会继续更新。

更新:

1.甚至可以推流,以及设置caps:

mediaPlayer.setMedia(QUrl("gst-pipeline: v4l2src ! capsfilter caps=\"image/jpeg,width=1920,height=1080,framerate=30/1\" ! jpegdec ! nvvidconv ! nvv4l2h264enc ! queue ! mpegtsmux ! srtsink uri=srt://192.168.1.125:10016?mode=listener"));

http://www.lryc.cn/news/292919.html

相关文章:

  • Ubuntu22扩大分区
  • 数据结构篇-05:哈希表解决字母异位词分组
  • 添加了gateway之后远程调用失败
  • C#,哥伦布数(Golomb Number)的算法与源代码
  • JVM学习
  • Visual Studio 20XX中utf-8中文在控制台显示乱码
  • 拥抱个人成长与社会进步:自我认知与开放心态的相互影响
  • 【PostgreSQL内核学习(二十五) —— (DBMS存储空间管理)】
  • 2024年 复习 HTML5+CSS3+移动web 笔记 之CSS遍 第5天
  • SpringBoot使用Kafka详解含完整代码
  • 解决:java -jar 在cmd中运行 程序卡顿,卡死的 问题。BIO和NIO案例保存
  • LeetCode第824题 - 山羊拉丁文
  • [Python] 什么是逻辑回归模型?使用scikit-learn中的LogisticRegression来解决乳腺癌数据集上的二分类问题
  • 那些不输于乙游男主人设的国漫男主
  • Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询
  • 关于华为应用市场上架,申请权限未告知目的被驳回问题的简单处理方式
  • 【ElasticSearch】概述
  • 十进制转十六进制 C/C++蓝桥杯基础试题BASIC-10
  • 【LVGL环境搭建】
  • 【c语言】简单贪吃蛇的实现
  • 2023年09月CCF-GESP编程能力等级认证Python编程六级真题解析
  • Flink中StateBackend(工作状态)与Checkpoint(状态快照)的关系
  • 【C语言刷题系列】喝汽水问题
  • [C++] C++ 11的functional模块介绍和使用案例
  • kubernetes基本概念和操作
  • 20240128周报-网络太杂,Tomcat太难
  • DES加密原理
  • react 之 useCallback
  • OfficeWeb365 Readfile 任意文件读取漏洞复现
  • UnityShader(十三)Unity内置的函数