Qt直接播放音频数据(完整的音频数据,不是文件)
小猫儿钓鱼 2015-10-21 10:45:27 项目有个播放音频数据的需求,用QMediaplayer实现了一个,在PC机上很OK,但在android上就有一些问题,播放后播放状态为PlayingState,但没有声音,一直发送positionChanged信号不停止,取出来的duration及position全部为0,各位大神帮看看啥情况,代码实现如下:
void MPlayer::playData(const QByteArray &data)
{
qWarning()<<"---------playData="<<data.size();
if( !m_buffer )
m_buffer = new QBuffer(this);
m_buffer->close();
if( !m_barray )
m_barray = new QByteArray();
m_barray->clear();
m_barray->append(data);
if( m_buffer->buffer().isEmpty() )
m_buffer->setBuffer(m_barray);
if( m_buffer->open(QIODevice::ReadOnly) )
{
QMediaResource mr(QUrl(),"audio/mpeg");
mr.setChannelCount(2);
mr.setSampleRate(11025);//44100);
mr.setDataSize((qint64)m_barray->size());
mr.setAudioBitRate(32000);//128000);
m_mc = QMediaContent(mr);
m_player->setMedia(m_mc,m_buffer);
}
}