1 Star 1 Fork 1

Devin / XPlay3

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
XPlay3.cpp 2.95 KB
一键复制 编辑 原始数据 按行查看 历史
伊兴龙 提交于 2022-09-14 16:29 . 增加了推流
#include "XPlay3.h"
#include "ui_XPlay3.h"
#include <QFileDialog>
#include <QStackedLayout>
#include <QtOpenGL>
#include <QDebug>
#if _MSC_VER >= 1600 //MSVC2010后的版本才支持设置字符集
#pragma execution_character_set("utf-8")
#endif
XPlay3::XPlay3(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::XPlay3)
{
ui->setupUi(this);
//创建底层
m_pxVideoWidget = new XVideoWidget(this);
//创建上层
m_pxPlayCtrl = new XPlayCtrl(this);
m_pxOpenUrl = new XOpenUrl(this);
m_pxPushStream = new XOpenUrl(this);
QStackedLayout *pqstkLayout = new QStackedLayout(this);
pqstkLayout->setStackingMode(QStackedLayout::StackAll);
pqstkLayout->addWidget(m_pxVideoWidget);
pqstkLayout->addWidget(m_pxPlayCtrl);
//设置上层页面为透明图片
pqstkLayout->setCurrentWidget(m_pxPlayCtrl);
ui->verticalLayout->addLayout(pqstkLayout);
m_pxDemuxThread = new XDemuxThread();
}
XPlay3::~XPlay3()
{
delete ui;
}
bool XPlay3::Open(QString _qstrUrl)
{
if(m_pxDemuxThread == nullptr)
{
qDebug("m_xDemuxThread == nullptr");
return false;
}
if(!m_pxDemuxThread->Open(_qstrUrl, m_pxVideoWidget))
{
qDebug("m_xDemuxThread Open error");
return false;
}
if(!m_pxDemuxThread->Start())
{
qDebug("m_xDemuxThread Start error");
return false;
}
return true;
}
void XPlay3::on_actionOpenLocal_triggered()
{
qDebug()<<"打开本地文件";
QString strFileName = QFileDialog::getOpenFileName(this, "Open File", "",
tr("mp4(*.mp4)"), 0, QFileDialog::DontResolveSymlinks);
/* 如上,父组件为this;窗口名称为"Open File";
""和"."都是默认打开工程目录;
"exe(*.exe)"代表只允许选择exe类型的文件;
第四个参数可以不写,但是为了设置第五个参数,这里设为0;
第五个参数是QFileDialog::DontResolveSymlinks,这里用为即使选中的文件为快捷方式或链接,路径也只显示现有路径而不会跳转;QFileDialog::ShowDirsOnly表示只显示文件夹;*/
//如果需要以我们常见的windows路径表示出来,需要转换一下
strFileName = QDir::toNativeSeparators(strFileName);//Linux斜杠转Windows反斜杠
if(strFileName.isEmpty())
{
return;
}
qDebug()<<"==yxl==::strFileName == "<<strFileName;
Open(strFileName);
}
void XPlay3::on_actionOpenUrl_triggered()
{
m_pxOpenUrl->exec();
QString strFileName = m_pxOpenUrl->GetUrl();
qDebug()<<"==yxl==::strFileName == "<<strFileName;
if(strFileName.isEmpty())
{
return;
}
Open(strFileName);
}
void XPlay3::on_actionPushStream_triggered()
{
m_pxPushStream->exec();
QString strFileName = m_pxPushStream->GetUrl();
qDebug()<<"==yxl==::strFileName == "<<strFileName;
if(strFileName.isEmpty())
{
return;
}
m_pxDemuxThread->OpenPushStream(strFileName);
}
1
https://gitee.com/yixinglong/xplay3.git
git@gitee.com:yixinglong/xplay3.git
yixinglong
xplay3
XPlay3
master

搜索帮助