小编Pet*_*ter的帖子

为QAudioDecoder子类化QIODevice

Qt 5.7

根据文档,QAudioDecoder不支持流媒体。但是是接受文件名或QIODevice源。产生了“聪明的主意”:让我们QIODevice创建一个子类来创建流媒体支持。

但是我总是得到一个错误:

无法开始解码过程。流不包含任何数据。

我已经检查并再次检查和调试。无法弄清楚可能是什么问题。

我只是测试它,所以下面的代码绝不是最终的。

标头:

class InputBuffer : public QIODevice
{

public:

    InputBuffer(QString fileName);
    ~InputBuffer();

    qint64 readData(char *data, qint64 maxlen);
    qint64 writeData(const char *data, qint64 len);

    bool   isSequential();
    qint64 bytesAvailable();
    qint64 size();


private:

    char*  bufferRef;
    qint64 length;
    qint64 position;

};
Run Code Online (Sandbox Code Playgroud)

实施:

#include "inputbuffer.h"

InputBuffer::InputBuffer(QString fileName)
{
    QFileInfo fileInfo(fileName);

    length   = fileInfo.size();
    position = 0;

    bufferRef = (char*)malloc(length);

    QFile file(fileName);
    file.open(QFile::ReadOnly);
    file.read(bufferRef, length);
    file.close();

    emit readyRead();
}


InputBuffer::~InputBuffer()
{
    free(bufferRef);
}


qint64 …
Run Code Online (Sandbox Code Playgroud)

c++ audio qt

1
推荐指数
1
解决办法
851
查看次数

标签 统计

audio ×1

c++ ×1

qt ×1