• 音乐播放


    在Qt5中使用Qt Multimedia 模块来实现多媒体应用(音视频播放和控制,相机拍照。收音等)。

    使用多媒体模块时需要在pro文件中添加:

    QT += multimedia

    QMediaPlayer(播放音频)

    不追求低延迟的话使用QMediaPlayer(占用资源少)

    构造函数为:

     常用的函数:

    play()播放
    pause()暂停
    stop()停止
    setMuted(bool)设置是否静音
    setVolume()设置音量
    setPlaybackRate()设置播放速率
    setMedia()设置播放源
    setPlaylist()设置播放列表
    duration() 音频持续时间
    state()音频状态
    position()播放的当前位置
    setVideoOutput()设置视频播放器

    常用的信号:

    audioRoleChanged

    媒体播放器的音频角色已更改

    currentMediaChanged

    当前播放的内容已更改为媒体

    durationChanged

    内容的持续时间已更改为持续时间的信号

    error

    发生了错误情况

    mediaChanged

    媒体源已更改为媒体

    mutedChanged

    已更改为静音

    playbackRateChanged

    速率已更改

    positionChanged

    内容的位置已更改为位置,以毫秒表示

    stateChanged

    播放器对象的状态已更改

    volumeChanged

    播放音量已更改

    QMediaPlayer::Error(错误的种类)

    QMediaPlayer::NoError未发生错误。
    QMediaPlayer::ResourceError无法解析媒体资源。
    QMediaPlayer::FormatError媒体资源的格式不受(完全)支持。播放可能仍然可以,但没有音频或视频组件。
    QMediaPlayer::NetworkError发生网络错误
    QMediaPlayer::AccessDeniedError没有播放媒体资源的适当权限。
    QMediaPlayer::ServiceMissingError找不到有效的播放服务,无法继续播放。

    制作一个带控制页面的播放器:

     在pro文件中添加:

    QT += multimedia

     在widget.h中添加一个QMediaPlayer对象

        QMediaPlayer *player;//需要添加头文件#include<QMediaPlayer>

    在ui界面中添加以下控件:

    lineEdit    label*2    pushButton*3

     构造函数的内容为:

    1. QUrl url("F:/music/That Girl - Olly Murs.mp3");//获取文件路径
    2. player=new QMediaPlayer;
    3. player->setMedia(url);//设置播放对象
    4. ui->lineEdit->setText(url.toString());//设置对象名
    5. connect(ui->pushButton,&QPushButton::clicked,[=]()
    6. {
    7. player->play();//播放
    8. });
    9. connect(ui->pushButton_2,&QPushButton::clicked,[=]()
    10. {
    11. player->pause();//暂停
    12. });
    13. connect(ui->pushButton_3,&QPushButton::clicked,[=]()
    14. {
    15. player->stop();//停止(会重置到开头)
    16. });
    17. connect(player,&QMediaPlayer::durationChanged,[=](){//获取总时间
    18. QTime time;//创建一个时间
    19. time.setHMS(0,0,0,0);//初始化为0
    20. time=time.addMSecs(player->duration());//获取播放的总时间,添加毫秒数
    21. ui->label_2->setText(time.toString("mm:ss:zzz"));//显示总时间
    22. });
    23. connect(player,&QMediaPlayer::positionChanged,[=]()//获取播放时间
    24. {
    25. QTime time1;
    26. time1.setHMS(0,0,0,0);//初始化为0
    27. time1=time1.addMSecs(player->position());//添加毫秒数
    28. ui->label->setText(time1.toString("mm:ss:zzz"));//显示总时间
    29. });

    功能的展示:

    初始状态:

     点击播放:

     点击暂停的话,就是正常的暂停

    点击停止:(音乐回到开头,时间置为0)

    QSoundEffect(低延迟音效)

    QSoundEffect使用低延迟方式来播放为压缩的音频文件,如wav文件,常用于播放用户交互时的音效,弹出框提示音、虚拟键盘敲击声等

    构造函数:

     常用的函数:

    play()开始
    stop()停止
    source()返回资源位置
    stutas()返回当前状态
    setVolume()设置音量(0.0-1.0)
    setSource()设置资源
    setMuted()设置静音
    setLoopCount()设置播放次数

    播放一个音效:

    1. QSoundEffect *Sound=new QSoundEffect(this);
    2. Sound->setSource(QUrl::fromLocalFile("F:/music/y1361.wav"));//设置资源
    3. Sound->setLoopCount(5);
    4. Sound->setVolume(1.0);
    5. Sound->play();//播放

    持续播放一个音效的方法:

    将循环计数设置为 0 或 1 表示声音效果将仅播放一次,传递无限期地重复。可以在播放音效时更改循环计数,在这种情况下,它会将剩余的循环更新为新的循环计数QSoundEffect::Infinite

        Sound->setLoopCount(QSoundEffect::Infinite);

  • 相关阅读:
    CPT205 Lab1 Code Collection
    Win11 22000.1041 RP预览版发布:带来两大功能更新
    url相关知识点
    Google Earth Engine(GEE)——一个简单的时序动画UI
    SAP 电商云 CMSUserGroupRestriction 在 Spartacus 里的 evaluation 问题
    在Photoshop上标小图标的操作记录
    android 11 供第三方应用使用系统so库
    @PropertySource读取自定义配置
    N-羟乙基-1,8-萘二甲酰亚胺四苯乙烯衍生物聚集诱导发光微球/AIE席夫碱化合物的研究制备
    《向量数据库指南》——向量数据库 有必要走向专业化吗?
  • 原文地址:https://blog.csdn.net/qq_45303986/article/details/128052232