使用ffmpeg准备pcm音频数据
ffmpeg -i 1080.mp4 -f s16le out.pcm
ffmpeg -i 1080.mp4 -f u8 out.pcm
使用QtCreate创建项目,并在生成项目的pro文件中添加multimedia库
QT += multimedia
配置QAudioOutput播放参数
QAudioFormat fmt;
fmt.setSampleRate(44100);
fmt.setSampleSize(16);
fmt.setByteOrder(QAudioFormat::LittleEndian);
fmt.setSampleType(QAudioFormat::SignedInt);
fmt.setChannelCount(2);
fmt.setCodec("audio/pcm");
QAudioOutput * out = new QAudioOutput(fmt);
setSampleType的设置在Ubuntu中需匹配setSampleSize的设置大小
- QAudioFormat::UnSignedInt 无符号整形数据,样本大小为8。
- QAudioFormat::SignedInt 有符号整形数据,样本大小为16。
开始播放,并返回QIODevice
QIODevice * io = out->start();
读取文件,并播放,播放完成后释放资源
FILE * fp = fopen("../../raw/out.pcm", "rb");
while (!feof(fp))
{
if (out->bytesFree() < size)
{
QThread::msleep(1);
continue;
}
int len = fread(buf, 1, size, fp);
if (len <= 0) break;
io->write(buf, len);
}
fclose(fp);
delete[] buf;
buf = 0;