QMediaPlayer pause()过后获取的position是精确的

如题,其position就是准确的position,这里我给出测试代码:(大概原理就是有两个timer,一个timer会让QMediaPlayer在某个时候pause(),并在pause()之后输出一个pause完毕的瞬间获取的position;另一个timer则高频率获取QMediaPlayer的position(),这样子对比pause完毕的瞬间输出的position和后续高频率timer输出的position就可以知道pause()后的position还有没有变化,如果没有变化那么pause()后瞬间获取的position就是准确的)

    QMediaPlayer *player = new QMediaPlayer;
    QAudioOutput *audioOutput = new QAudioOutput;
    audioOutput->setVolume(0.5);
    player->setAudioOutput(audioOutput);
    player->setSource(QUrl::fromLocalFile("C:/Users/me/Music/1.flac"));


    QTimer *timer_10s = new QTimer;
    timer_10s->setSingleShot(true);
    timer_10s->setTimerType(Qt::PreciseTimer);
    timer_10s->setInterval(16350);

    QTimer *timer_1ms = new QTimer;
    timer_1ms->setSingleShot(false);
    timer_1ms->setTimerType(Qt::PreciseTimer);
    timer_1ms->setInterval(1);

    QObject::connect(timer_10s, &QTimer::timeout, [=](){
        player->pause();
        qDebug() << "paused pos:" <<  player->position();
    });

    QObject::connect(timer_1ms, &QTimer::timeout, [=](){
        qDebug() << "pos:" <<  player->position();
        // if(!player->isPlaying())
        //     timer_1ms->stop();
    });

    player->play();
    timer_10s->start();
    timer_1ms->start();

注意包含一下头文件:

#include <QMediaPlayer>
#include <QAudioOutput>
#include <QDebug>
#include <QTimer>

输出如下

pos: 16213
pos: 16213
pos: 16213
paused pos: 16213
pos: 16213
pos: 16213
pos: 16213
pos: 16213

所以pause()过后获取的position是精确的

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇