Qt 实现简易的视频播放器,功能选择视频,播放,暂停,前进,后退,进度条拖拉,视频时长显示

这篇具有很好参考价值的文章主要介绍了Qt 实现简易的视频播放器,功能选择视频,播放,暂停,前进,后退,进度条拖拉,视频时长显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.效果图

Qt 实现简易的视频播放器,功能选择视频,播放,暂停,前进,后退,进度条拖拉,视频时长显示,Qt学习笔记,qt,音视频,开发语言

2.代码实现

2.1 .pro文件

QT       += core gui multimedia multimediawidgets

2.2 .h文件

#ifndef VIDEOPLAYING_H
#define VIDEOPLAYING_H

#include <QWidget>
#include<QFileDialog>

#include<QMediaPlayer>
#include<QMediaRecorder>
#include<QVideoWidget>

#include <QWidget>
#include <QHBoxLayout>  //水平布局
#include <QVBoxLayout>  //垂直布局
#include <QVideoWidget> //显示视频
#include <QMediaPlayer> //播放声音
#include <QPushButton>  //按钮
#include <QSlider>      //滑动条
#include <QStyle>       //设置图标
#include <QFileDialog>  //选择文件/文件夹
#include<QAudioOutput>
namespace Ui {
class VideoPlaying;
}

class VideoPlaying : public QWidget
{
    Q_OBJECT

public:
    explicit VideoPlaying(QWidget *parent = nullptr);
    ~VideoPlaying();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_5_clicked();


    void updateSliderPosition();

    void on_horizontalSlider_sliderPressed();

    void on_horizontalSlider_sliderMoved(int position);

    void on_horizontalSlider_sliderReleased();


private:
    Ui::VideoPlaying *ui;
    QVideoWidget * m_videoWidget;//输出设备
    QMediaPlayer * m_player; // 声明 QMediaPlayer 对象
    QString m_video_filePath;
    // 设置音频角色为视频
    QAudioOutput* m_audioOutput;// 创建音频输出对象

    qint64 m_time;

    bool is_play;
    bool is_slider;

    QString getTime(qint64 time);
};

#endif // VIDEOPLAYING_H

2.3 .cpp文件文章来源地址https://www.toymoban.com/news/detail-849141.html

#include "videoplaying.h"
#include "ui_videoplaying.h"

VideoPlaying::VideoPlaying(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::VideoPlaying)
{
    ui->setupUi(this);

    m_player = new QMediaPlayer(this); // 初始化 QMediaPlayer 对象
    m_videoWidget = new QVideoWidget(this);
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(m_videoWidget);
    ui->widget->setLayout(layout);
    m_player->setVideoOutput(m_videoWidget);
    m_audioOutput=new QAudioOutput(this);
    m_player->setAudioOutput(m_audioOutput); // 设置音频输出
    connect(m_player, &QMediaPlayer::positionChanged, this, &VideoPlaying::updateSliderPosition);


}

VideoPlaying::~VideoPlaying()
{
    delete ui;
}

//选择视频
void VideoPlaying::on_pushButton_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this, "选择视频", "", "Video Files (*.mp4 *.avi *.mkv)");

    if (!filename.isEmpty()) {
        qDebug() << "选择的视频文件路径:" << filename;
        m_video_filePath=filename;
        m_player->setSource(m_video_filePath);
        m_time= m_player->duration(); // 获取视频时长,单位为毫秒
        ui->lineEdit->setText(m_video_filePath);
        ui->label_all->setText(getTime(m_time));
        ui->label_now->setText("00:00:00");
    }

}

//播放
void VideoPlaying::on_pushButton_2_clicked()
{
    if (!m_video_filePath.isEmpty()) {
        QUrl videoUrl = QUrl::fromLocalFile(m_video_filePath);
        m_player->play(); // 开始播放视频
    } else {
        qDebug() << "请先选择视频文件";
    }

}

//暂停
void VideoPlaying::on_pushButton_3_clicked()
{
    // m_player->stop();
    m_player->pause(); // 暂停播放

}

//前进
void VideoPlaying::on_pushButton_4_clicked()
{
    qint64 position = m_player->position();  // 获取当前播放位置
    position += 5000;  // 向后退5秒(单位为毫秒)

    if (position < 0) {
        position = 0;  // 不能倒退到负值
    }

    m_player->setPosition(position);  // 设置视频播放位置

}

//后退
void VideoPlaying::on_pushButton_5_clicked()
{
    qint64 position = m_player->position();  // 获取当前播放位置
    position -= 5000;  // 向后退5秒(单位为毫秒)

    if (position < 0) {
        position = 0;  // 不能倒退到负值
    }

    m_player->setPosition(position);  // 设置视频播放位置

}


void VideoPlaying::updateSliderPosition()
{

    qint64 duration = m_player->duration(); // 视频总时长
    qint64 position=m_player->position();//当前时长

    if (duration > 0) {
        int sliderPosition = static_cast<int>(position * 100 / duration);
        if(!is_slider){
            ui->horizontalSlider->setValue(sliderPosition);  // 更新滑块的位置
        }

        ui->label_now->setText(getTime(position));  // 更新当前播放时间
    }
}

QString VideoPlaying::getTime(qint64 time)
{
    int hours = (time / (1000 * 60 * 60)) % 24;
    int minutes = (time / (1000 * 60)) % 60;
    int seconds = (time / 1000) % 60;
    qDebug() << "视频时长:" << hours << "小时" << minutes << "分钟" << seconds << "秒";

    QString allTime=QString::number(hours)+":"+QString::number(minutes)+":"+QString::number(seconds);
    return allTime;
}


void VideoPlaying::on_horizontalSlider_sliderPressed()
{
    is_slider=true;


}


void VideoPlaying::on_horizontalSlider_sliderMoved(int position)
{
    if(is_slider) {
        qint64 duration = m_player->duration(); // 视频总时长,单位为毫秒
        qint64 newPos = position * duration / 100; // 根据滑块位置计算当前播放位置,单位为毫秒
        m_player->setPosition(newPos); // 设置视频播放位置
        ui->label_now->setText(getTime(newPos)); // 更新当前播放时间
    }

}


void VideoPlaying::on_horizontalSlider_sliderReleased()
{

    is_slider=false;

}




到了这里,关于Qt 实现简易的视频播放器,功能选择视频,播放,暂停,前进,后退,进度条拖拉,视频时长显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • QT5.9实现一个视频播放器播放 暂停进度条

    QT5.9实现一个视频播放器播放 暂停进度条

    参考博主 1https://blog.csdn.net/liji_digital/article/details/83691035 参考博主2https://blog.csdn.net/qq_41071706/article/details/89855986 通过选择按钮选择本地视频文件 点击播放按钮播放文本框中的文件(不支持其他类型文件的异常检测) 支持mp4 avi等等 如果不支持见参考博主2的内容 点击暂停按钮

    2023年04月22日
    浏览(15)
  • C#制作简易视频播放器

    C#制作简易视频播放器

    1.打开vs2019新建一个窗体项目,选用框架.net framework4.7.2 2.在【工具箱】里随便选中一个控件,右键单击它 看到图片中的【选择项】了嘛,单击它,打开添加组件的一个窗体 在添加组件窗体中的【COM组件】中找到【Window Media Player】组件并勾选,然后【确定】 3.可以看到我们的

    2024年02月12日
    浏览(18)
  • linux系统中QT里面的视频播放器的实现方法

    linux系统中QT里面的视频播放器的实现方法

          大家好,今天主要和大家聊一聊,如何使用QT中视频播放器的方法。   目录 第一:视频播放器基本简介 第二:视频播放器头文件说明  第三:源文件的具体实现方法 第四:运行效果显示        与音乐播放器一样使用 QMediaPlayer 类,不同的是需要使用 setVideoOutput(QVi

    2024年02月04日
    浏览(20)
  • 测试C#调用Aplayer播放视频(3:编写简易播放器)

    测试C#调用Aplayer播放视频(3:编写简易播放器)

      学习了参考文献1中的示例代码,也找出了前一篇文章中自己测试控件但无法播放视频的问题(没有将解码库文件复制到可执行程序所在的codecs文件夹内),本文基于APlayer组件编写简单的视频播放器,主要实现以下功能: 序号 功能 说明 1 自定义logo 调用SetCustomLogo函数设

    2024年02月05日
    浏览(22)
  • 【Harmony OS】【ArkUI】ets开发 简易视频播放器

    前言:这一次我们来使用ets 的Swiper 组件、List 组件和Video 组件制作一个简易的视频播放器。本篇是以HarmonyOS 官网的codelab 简易视频播放器(eTS )为基础进行编写。本篇最主要的内容就是一个主界面包括顶部的视频海报轮播,中部的视频播放列表,以及点击海报和播放列表进

    2023年04月27日
    浏览(11)
  • 038-第三代软件开发-简易视频播放器-自定义Slider (二)

    038-第三代软件开发-简易视频播放器-自定义Slider (二)

    : Qt 、 Qml 、 3 、 4 、 5 欢迎来到我们的 QML C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。 在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。

    2024年02月07日
    浏览(18)
  • QT简单的视频播放器

    QT简单的视频播放器

    1.功能 选择路径下的固定视频格式文件播放,对应的音频和视频同步播放 2.新建一个不含UI界面的QT工程 特别注意:QT中的路径名不能含中文   设置一个不含UI界面的工程 取消构建目录 因为要引入视频播放器的模块,我们在pro中引入对应的模块 因为要引入布局格式,所以我们

    2024年02月03日
    浏览(14)
  • PyQt5实现简易音乐播放器

    PyQt5实现简易音乐播放器

    环境 vscode python 3.10.0 PyQt5 5.15.4 功能目标 能够读取本地的音乐文件,并实现播放的开关、曲目的切换和音量的加减 具体实现 新建一个文件夹,在文件夹下再新建一个文件夹,命名为music,将歌曲放入其中。在vscode中打开该文件夹。 在QtDesigner中搭建出UI界面,并使用pyuic工具转

    2024年02月13日
    浏览(7)
  • 浏览器网页内嵌Qt-C++音视频播放器的实现,支持软硬解码,支持音频,支持录像截图,支持多路播放等,提供源码工程下载

    浏览器网页内嵌Qt-C++音视频播放器的实现,支持软硬解码,支持音频,支持录像截图,支持多路播放等,提供源码工程下载

        在浏览器中实现播放RTSP实时视频流,⼤体上有如下⼏个⽅案: ⽅案一:浏览器插件⽅案 ActiveX、NPAPI、PPAPI     ActiveX插件适用于IE浏览器,NPAPI与PPAPI插件适用于谷歌浏览器,不过这些插件都已经不被浏览器所支持。 ⽅案二:先转码再转流⽅案     ⼯作原理是架设一

    2024年01月17日
    浏览(49)
  • Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)

    Qt音视频开发41-文件推流(支持网页和播放器播放并切换进度)

    本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒

    2024年02月01日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包