QT QMediaPlayer网路拉流
本文用于介绍如何通过Qt提供的一个跨平台媒体播放器类QMediaPlayer实现网络拉流。我用的是海康摄像头在萤石云的链接。
一、安装解码库LAVFilters解码库
下载地址:https://github.com/Nevcairiel/LAVFilters/releases
下载LAVFilters-0.77.1-Installer.exe
下载后直接运行安装即可。
二、示例程序
在.pro文件中添加
QT += multimedia multimediawidgets
以下是.h文件和.cpp文件
代码如下(示例):
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtMultimedia/QMediaPlayer>
#include <QtMultimedia/QMediaPlaylist>
#include <QtMultimediaWidgets/QVideoWidget>
#include <QMainWindow>
#include<QDebug>
#include<QVBoxLayout>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QHBoxLayout *m_layout= new QHBoxLayout(this);
QMediaPlayer *m_player = new QMediaPlayer(this);
m_player->setMedia(QMediaContent(QUrl("https://xxxx")));//我这里的拉流地址是萤石云flv流畅格式的
QVideoWidget *m_videoW = new QVideoWidget(this);
m_videoW->resize(500,800);
m_layout->addWidget(m_videoW);
this->setLayout(m_layout);
m_player->setVideoOutput(m_videoW);
m_videoW->show();
m_player->play();
}
MainWindow::~MainWindow()
{
delete ui;
}