21,464
社区成员
发帖
与我相关
我的任务
分享audioOutput->setBufferSize(data.size());
QIODevice* io = audioOutput->start();
io->write(data);
不重写就OK了

[/quote]
不经常出现的,我跑2个小时都没有问题,一天出现不了几次,但是一定会出现
qint64 MyDevice::readData(char *data, qint64 maxlen) // data为声卡的数据缓冲区地址, maxlen为声卡缓冲区最大能存放的字节数
{
if (len_written >= Data_sum)
{
return 0;
}
//计算未播放的数据的长度
int len = 0;
if((len_written + maxlen) > Data_sum)
len = Data_sum - len_written;
else
len = maxlen;
if(len < 0)
{
len = 0;
}
memcpy(data, (char*)(Data3 + len_written), len); //把要播放的pcm数据存入声卡缓冲区里,Data3 为全局变量uint8_t格式,
len_written = len_written + len; //更新已播放的数据长度
return len;
}