#include "widget.h"
#include "ui_widget.h"
/*
* 设置QT界面的样式
*/
void Widget::SetStyle(const QString &qssFile) {
QFile file(qssFile);
if (file.open(QFile::ReadOnly)) {
QString qss = QLatin1String(file.readAll());
qApp->setStyleSheet(qss);
QString PaletteColor = qss.mid(20,7);
qApp->setPalette(QPalette(QColor(PaletteColor)));
file.close();
}
else
{
qApp->setStyleSheet("");
}
}
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
/*基本设置*/
// this->SetStyle(":/images/blue.css"); //设置样式表
this->setWindowIcon(QIcon(":/main.ico")); //设置图标
this->setWindowTitle("网络摄像头(建议最大分辨率为720P-->1280x720)");
//设置单行编辑框的背景提示
ui->lineEdit_rtmp_url->setPlaceholderText("请在这里输入rtmp/rtsp地址");
ui->lineEdit->setPlaceholderText("请在这里输入视频保存地址");
//设置日志窗口为只读状态
ui->plainTextEdit_log->setReadOnly(true);
//默认情况下按钮的状态
ui->pushButton_start_save->setEnabled(false);
ui->pushButton_stop_save->setEnabled(false);
//构建默认地址
QStringList listyear;
listyear<<"rtmp://10.0.0.13:8888/live/video"
<<"rtmp://58.200.131.2:1935/livetv/cctv14"
<<"rtsp://admin:vioovi2021@10.0.0.2:554/cam/realmonitor?channel=1&subtype=0"
; //列表
QCompleter *year = new QCompleter(listyear);//构建自动补全器
ui->lineEdit_rtmp_url->setCompleter(year); //设置自动补全器功能
//连接拉流线程的图像输出信号
connect(&thread_laliu,SIGNAL(VideoDataOutput(QImage )),this,SLOT(VideoDataDisplay(QImage )));
//连接拉流线程的日志信息
connect(&thread_laliu,SIGNAL(LogSend(QString)),this,SLOT(Log_Display(QString)));
//连接拉流线程的运行状态
connect(&thread_laliu,SIGNAL(s_run_state(int)),this,SLOT(slot_run_state(int)));
//绑定线程信号
connect(&pull_pthread, SIGNAL(LogSend(QString)), this, SLOT(Log_Display(QString)));
connect(&pull_pthread, SIGNAL(s_run_state(bool)), this, SLOT(slot_run_state(bool)));
connect(this, SIGNAL(s_ExitProcess()), &pull_pthread, SLOT(slot_ExitProcess()));
//载入配置
read_config();
//默认显示的画面
ui->stackedWidget->setCurrentIndex(0);
movie = new QMovie(":/images/load.gif");
ui->label_gif->setMovie(movie);
movie->start();
//录制视频的定时器
connect(&timer, SIGNAL(timeout()), this, SLOT(update_timer()));
QDesktopWidget *desktop = QApplication::desktop();
move((desktop->width()-this->width())/2,(desktop->height()-this->height())/2);
}
Widget::~Widget()
{
delete ui;
}
//视频刷新显示
void Widget::VideoDataDisplay(QImage image)
{
//如果是每次拉流的一次
if(video_get_state)
{
video_get_state=0;
ui->pushButton_start_save->setEnabled(true);
ui->pushButton_stop_save->setEnabled(true);
//默认显示的画面
ui->stackedWidget->setCurrentIndex(0);
}
ui->widget_display->slotGetOneFrame(image);
}
/*日志显示*/
void Widget::Log_Text_Display(QPlainTextEdit *plainTextEdit_log,QString text)
{
plainTextEdit_log->insertPlainText(text);
//移动滚动条到底部
QScrollBar *scrollbar = plainTextEdit_log->verticalScrollBar();
if(scrollbar)
{
scrollbar->setSliderPosition(scrollbar->maximum());
}
}
//日志显示
void Widget::Log_Display(QString text)
{
Log_Text_Display(ui->plainTextEdit_log,text);
}
//开始拉流
void Widget::on_pushButton_start_clicked()
{
QString rtmp_addr=ui->lineEdit_rtmp_url->text();
if(!rtmp_addr.isEmpty())
{
//默认显示的画面
ui->stackedWidget->setCurrentIndex(1);
//停止拉流
on_pushButton_stop_play_clicked();
//设置地址
thread_laliu.SetRTMPAddr(ui->lineEdit_rtmp_url->text());
//开始运行线程
thread_laliu.start();
//设置拉流按钮状态不能连续点击,防止卡死
ui->pushButton_start->setEnabled(false);
video_get_state=1;
//默认情况下按钮的状态
ui->lineEdit_rtmp_url->setEnabled(false);
}
else
{
Log_Display("请输入流媒体地址.\n");
}
}
/*
工程: ffmpeg_Laliu
日期: 2021-07-30
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 停止播放
*/
void Widget::on_pushButton_stop_play_clicked()
{
//如果线程正在运行
if(thread_laliu.isRunning())
{
thread_laliu.Exit_process();
thread_laliu.quit();
Log_Display("正在等待线程结束,回收资源,请耐心等待.....\n");
thread_laliu.wait();
on_pushButton_stop_save_clicked();
// //设置画面黑色
// QImage image=QImage(320,240,QImage::Format_RGB888);
// image.fill(QColor(Qt::black));
// ui->widget_display->slotGetOneFrame(image);
}
}
/*
工程: ffmpeg_Laliu
日期: 2021-07-30
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 隐藏日志窗口
*/
void Widget::on_pushButton_no_display_clicked()
{
log_widge_state=!log_widge_state;
ui->groupBox->setVisible(log_widge_state);
}
/*
工程: ffmpeg_Laliu
日期: 2021-07-30
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 窗口关闭
*/
void Widget::closeEvent(QCloseEvent *event) //窗口关闭事件
{
int ret = QMessageBox::question(this, tr("ECRS网络摄像头"),
tr("是否需要退出?\n(退出会释放内存,请稍等片刻...)"),
QMessageBox::Yes | QMessageBox::No);
if(ret==QMessageBox::Yes)
{
//保存配置
write_config();
on_pushButton_stop_play_clicked();
on_pushButton_stop_save_clicked();
event->accept(); //接受事件
}
else
{
event->ignore(); //清除事件
}
}
/*
工程: ffmpeg_Laliu
日期: 2021-07-31
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 拉流线程运行状态
*/
void Widget::slot_run_state(int run)
{
//默认情况下按钮的状态
ui->pushButton_start_save->setEnabled(false);
ui->pushButton_stop_save->setEnabled(false);
ui->lineEdit_rtmp_url->setEnabled(true);
//恢复拉流按钮状态
ui->pushButton_start->setEnabled(true);
Log_Text_Display(ui->plainTextEdit_log,QString("本次播放结束,运行状态:%1\n").arg(run));
//默认显示的画面
ui->stackedWidget->setCurrentIndex(0);
}
/*
工程: ffmpeg_Laliu
日期: 2021-07-31
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 清空日志
*/
void Widget::on_pushButton_clear_clicked()
{
ui->plainTextEdit_log->clear();
}
/*
工程: ffmpeg_Laliu
日期: 2021-07-31
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 拉流保存状态
*/
void Widget::slot_run_state(bool run)
{
timer.stop();
ui->lineEdit->setEnabled(true);
ui->pushButton_start_save->setEnabled(true);
Log_Text_Display(ui->plainTextEdit_log,QString("视频录制状态:%1\n").arg(run));
if(run)
{
QMessageBox::information(this,"温馨提示","视频保存路径:"+ui->lineEdit->text(),
QMessageBox::Ok,QMessageBox::Ok);
}
else
{
QMessageBox::information(this,"温馨提示","视频保存失败:失败原因请看日志提示.",
QMessageBox::Ok,QMessageBox::Ok);
Log_Text_Display(ui->plainTextEdit_log,"1. 如果是互联网流,请录制时间大于5~10秒后再停止录制,否则视频无�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是 基于FFMPEG设计的流媒体播放器(完整源码),FFMPEG版本是FFMEPG4.2.2。 将工程下载下来之后,要解压到英文目录下打开项目。 (这是最新优化的Demo代码--2023) 这份播放器项目使用场景: 摄像头监控。 设计这份播放器的初衷,用来播放rtsp/rtmp流,主要是查看摄像头监控画面。 实时性很强,局域网内播放视频直播画面,可以达到实时效果(RTSP)。 其他的播放器,比如: VLC、MPV、potplayer等播放器将延迟配置到最低也达不到这个效果。 不过当前的播放器没有其他附加功能,核心功能就一个:实时播放rtmp、rtsp流。 运行之后,不理解的地方可以私信询问
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/JPG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 42 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
- xuqingping07042024-04-23资源很实用,对我启发很大,有很好的参考价值,内容详细。
- 2301_768119552023-06-22支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
![avatar](https://profile-avatar.csdnimg.cn/2677fa666c7b42949624a5882eda167c_xiaolong1126626497.jpg!1)
DS小龙哥
- 粉丝: 4w+
- 资源: 573
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 打包和分发Rust工具.pdf
- SQL中的CREATE LOGFILE GROUP 语句.pdf
- C语言-leetcode题解之第172题阶乘后的零.zip
- C语言-leetcode题解之第171题Excel列表序号.zip
- C语言-leetcode题解之第169题多数元素.zip
- ocr-图像识别资源ocr-图像识别资源
- 图像识别:基于Resnet50 + VGG16模型融合的人体细胞癌症分类模型实现-图像识别资源
- C语言-leetcode题解之第168题Excel列表名称.zip
- C语言-leetcode题解之第167题两数之和II-输入有序数组.zip
- C语言-leetcode题解之第166题分数到小数.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)