bubbbbbai 2024-08-23 15:14 采纳率: 0%
浏览 24

Linux qt 使用QSoundEffect播放短音频会有一秒没声音

Linux qt 使用QSoundEffect播放短音频会有一秒没声音

我把0.5s左右的点击音效音频绑定在了按钮上
隔几秒不点按钮后 ,再点按钮就会有一秒没有声音,继续连着点又有声音了
像是在缓冲还是解析音频文件一样
但是找不到解决方法


```c++

    m_soundqrcode = new QSoundEffect();
    m_soundqrcode->setSource(QUrl::fromLocalFile(":/sound/sound/qrcode.wav"));
    m_soundqrcode->setLoopCount(1.0f);

      //点击时播放
    m_soundqrcode->play();

  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-08-23 17:13
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    这个问题可能是由于音频文件的缓冲导致的。你可以尝试在播放音频之前预加载音频文件,以确保音频数据已经准备好。你可以使用QSoundEffect::setBuffer()方法来实现这一点。以下是一个示例:

    #include <QSoundEffect>
    #include <QUrl>
    #include <QFile>
    #include <QByteArray>
    
    // ...
    
    m_soundqrcode = new QSoundEffect();
    QString filePath = ":/sound/sound/qrcode.wav";
    QUrl url(filePath);
    QFile file(url.toLocalFile());
    if (file.open(QIODevice::ReadOnly)) {
        QByteArray data = file.readAll();
        file.close();
        m_soundqrcode->setSource(QUrl::fromLocalFile(filePath));
        m_soundqrcode->setLoopCount(1.0f);
        m_soundqrcode->setBuffer(data); // 预加载音频数据
    } else {
        qDebug() << "Failed to open file:" << filePath;
    }
    
    // 点击时播放
    m_soundqrcode->play();
    

    这样,当你点击按钮时,音频数据应该已经准备好并立即播放,不会出现延迟。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月23日