代码拉取完成,页面将自动刷新
#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);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。