qq网页游戏排行榜,重庆seo俱乐部,企业公示信息查询系统广西,wordpress后台导入数据库前文#xff1a; 因为之前听说过#xff0c;QMediaPlayer已经集成了gstreamer#xff0c;但是并没有什么接口来例子来说明#xff0c;根本看不出来有任何gstreamer的形式#xff0c;于是在QT5助手里面搜了一下#xff0c;发现确实有gstreamer的痕迹#xff0c;但是例子写…前文 因为之前听说过QMediaPlayer已经集成了gstreamer但是并没有什么接口来例子来说明根本看不出来有任何gstreamer的形式于是在QT5助手里面搜了一下发现确实有gstreamer的痕迹但是例子写的极其拉胯经过自己尝试终于发现了一种直接使用QMediaPlayer播放gstreamer命令的方式以下是官方截图 以上是官方截图实际测试发现会单独弹出来有点小问题不过我已经解决了说明这种方案确实可行。 步骤
一、pro文件修改 1. 增加QT multimediawidgets
二、 main.cpp文件
记得sink的名字必须是 qtvideosink 比如
mediaPlayer.setMedia(QUrl(gst-pipeline: videotestsrc ! xvimagesink nameqtvideosink));
#include QWidget
#include QUrl
#include QVBoxLayout
#include QtMultimediaWidgets
#include gst/gst.h
#include gst/video/videooverlay.hint 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 nameqtvideosink));mediaPlayer.setMedia(QUrl(gst-pipeline: videotestsrc ! xvimagesink nameqtvideosink));// 连接按钮的点击信号到播放视频的槽函数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,width1920,height1080,framerate30/1\ ! jpegdec ! nvvidconv ! nvv4l2h264enc ! queue ! mpegtsmux ! srtsink urisrt://192.168.1.125:10016?modelistener));