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)