使用QAudioFormat类中的一些必备音频知识

从官方的文档,我们可以知道,这个类是用来提供音频流的一些信息(参数);使用很简单,无非是 1、创造对象2、设定有关参数。

设定参数是有一定讲究的,这个类里面只提供了六个变量的设定接口。

 (1)setByteOrder

这个是用来设定高低位的,分为LittleEndian(低位优先)/LargeEndian(高位优先),这个我没有找到相关很精确的资料,实际使用中LittleEndian在我的 win8-64bit Qt5.3环境中可以正常工作,据说这个参数设定和操作系统或平台本身有关,希望高手帮忙解答。

(2)setChannelCount

这个是用来设定声道数目,mono(平声道)的声道数目是1;stero(立体声)的声道数目是2。

(3)setCodec

这个用来设置编码器,"audio/pcm"在所有的平台都支持,也就相当于音频格式的WAV,以线性方式无压缩的记录捕捉到的数据。如想使用其他编码格式 ,可以通过QAudioDeviceInfo::supportedCodecs()来获取当前平台支持的编码格式。

(4)setSampleRate/setSampleSize

这两个我准备放在一块说。它们都和采样精度有关。采样率是每秒钟对声音的采样次数,越大当然越精细,常用的即为44100HZ(标准CD级),做我这一块的音视频传输,为了网络通畅,不要求那么高的精确度,我暂时使用的是8000HZ(对于人说话的声音已足够)的采样率(每秒钟采集8000个声波的点);采样位数呢,就是将声音振幅量子化(好吧,电脑里面的东西都是一份份的),QAudioFormat支持的有8/16bit,即将声音振幅化为256/64k个等级。多说一句,可能有人会疑惑,声音不是还有个比特率吗?如我们日常所见的128 k/196k,其实它们表示压缩格式的传输速率,和我们这一节提到的单纯声音参数关系不大,相关内容我会在以后的流媒体传送中详述。

(5)setSampleType

用来设置采样类型,分为QAudioFormat::SignedInt/QAudioFormat::UnSignedInt/QAudioFormat::Float,这个需要根据采样位数来设定,如果是平声道(8bit),QAudioFormat::UnSignedInt已足够。

这次写的差不多了,源码我不会放出,只是为了遏制抄代码风的弥漫,欢迎任何学术交流。

email:[email protected]


2014/12/12日补充:

对于pcm,我想多提两句,如下面两图:



你可能感兴趣的:(音视频传输)