不多bibi,直接上代码,播放pcm,亲测有效;
与渲染像素数据结合,就可实现音视频播放器,qt实现渲染rgb或yuv参考:
https://blog.youkuaiyun.com/qq_40179343/article/details/118554221?spm=1001.2014.3001.5501
#ifndef AUDIOPLAYER_H
#define AUDIOPLAYER_H
#include <QIODevice>
#include <QAudioDeviceInfo>
#include <QAudioOutput>
#include <QThread>
class AudioPlayer : public QObject
{
Q_OBJECT
private:
QAudioFormat audioFormat;
QAudioOutput* audioOutput;
QIODevice* audioIO;
public:
AudioPlayer();
~AudioPlayer();
public slots:
void slotInitAudioPlayer(int sampleRate,int channels,int sampleSize);
void slotWriteData(char* data,int len);
};
#endif // AUDIOPLAYER_H
#include "audioplayer.h"
#include <QDebug>
AudioPlayer::AudioPlayer()
{
}
AudioPlayer::~AudioPlayer()
{
}
void AudioPlayer::slotWriteData(char* data,int len)
{
// qDebug() << "slotWriteData len " << len;
this->audioIO->write(data,len);
}
void AudioPlayer::slotInitAudioPlayer(int sampleRate,int channels,int sampleSize)
{
// qDebug() << "slotInitAudioPlayer deviceName " <<QAudioDeviceInfo::defaultOutputDevice().deviceName();
this->audioFormat.setSampleRate(sampleRate);
this->audioFormat.setChannelCount(channels);
this->audioFormat.setSampleSize(sampleSize);
this->audioFormat.setCodec("audio/pcm");
this->audioFormat.setByteOrder(QAudioFormat::LittleEndian);
this->audioFormat.setSampleType(QAudioFormat::SignedInt);//QAudioFormat::SignedInt
this->audioOutput = new QAudioOutput(this->audioFormat, 0);
this->audioIO = this->audioOutput->start();
}