音视频开发系列(18):利用qt界面使用ffmpeg进行推流

上次分享了使用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();
	}

}

用到的类在之前都有进行分享,这边就不进行分享了。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值