上次分享了使用XController类来进行封装控制进行音视频频推流,并对整个项目类之间的关系进行了说明,这次主要要分享一下利用qt设计界面后,用界面的方式来进行视频推流。
最后的运行效果大致如图所示,做的比较简陋,大家可以自己进行改造。
主要功能就是通过点击开始按钮就开始进行视频推流,再点击一次就停止视频推流
这边改变界面主要是通过改变界面的样式表
QLabel
{
color: rgb(255, 255, 255);
font: 75 12pt "黑体";
}
QWidget
{
background-color: rgb(53, 53, 53);
}
QPushButton:hover
{
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(120, 120, 120, 255), stop:0.495 rgba(39, 39, 39, 255), stop:0.495 rgba(39,39, 39, 255), stop:1 rgba(120, 120,120, 255));
border: none;
border-radius:15px;
color: rgb(255, 255, 255);
font: 75 12pt "黑体";
}
QPushButton:!hover
{
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(39, 39, 39, 255), stop:0.505 rgba(120, 120, 120, 255), stop:0.505 rgba(120,120, 120, 255), stop:1 rgba(39, 39,39, 255));
border: none;
border-radius:15px;
color: rgb(255, 255, 255);
font: 75 12pt "黑体";
}
QLineEdit
{
border-radius:10px;
background-color: rgb(255, 255, 255);
font: 75 12pt "黑体";
}
QComboBox
{
background-color: rgb(255, 255, 255);
font: 75 12pt "黑体";
}
然后分享一下对应界面的.h和.cpp文件
xrtmpstreamer.h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_xrtmpstreamer.h"
class XRtmpStreamer : public QWidget
{
Q_OBJECT
public:
XRtmpStreamer(QWidget *parent = Q_NULLPTR);
public slots:
void on_startbutton_click();
private:
Ui::XRtmpStreamerClass ui;
};
xrtmpstreamer.cpp
#include "xrtmpstreamer.h"
#include <iostream>
#include "XController.h"
using namespace std;
static bool isStream = false;
XRtmpStreamer::XRtmpStreamer(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
void XRtmpStreamer::on_startbutton_click()
{
cout << "Stream" << endl;
if (isStream)
{
isStream = false;
ui.startButton->setText(QString::fromLocal8Bit("开始"));
XController::Get()->Stop();
}
else
{
isStream = true;
ui.startButton->setText(QString::fromLocal8Bit("停止"));
QString url = ui.inUrl->text();
bool ok = false;
int camIndex = url.toInt(&ok);
if (ok)
{
XController::Get()->camIndex = camIndex;
}
else
{
XController::Get()->inUrl = url.toStdString();
}
XController::Get()->outUrl = ui.outUrl->text().toStdString();
XController::Get()->Set("d", (ui.face->currentIndex() + 1) * 3);
XController::Get()->Start();
}
}
用到的类在之前都有进行分享,这边就不进行分享了。