參見What is a PCM format?
PCM(脈衝編碼調製)是未壓縮的音頻格式。我們得到Wav文件,它維護(保存)PCM數據。看怎麼做什麼是Wav文件?方法AudioCompressionManager.GetWaveFormat有助於調查音頻格式。
- FormatTag = 1是PCM。
- 通道=用於單通道(單聲道),雙通道(立體聲),8用於7.1環繞聲(左,右,中央,左環繞,右環繞,左後,右後方7.1系統也有1低頻效果通道(LFE)通常發送到超低音揚聲器)。
- SamplesPerSec =每秒(或採樣)的數字化數量值。可以是任何東西,但是標準值:8000Hz,11025Hz,12000Hz,16000Hz,22050Hz,24000Hz,32000Hz,44100Hz,48000Hz。
- BitsPerSample - 最常見的使用8位(1字節)和16位(2字節)。很少24位(3字節),32位(4字節)和64位(4字節)。如果我們認爲16位是基本的,那麼8位可以被認爲是壓縮格式。它的大小減少了兩倍,但是對於16位,值的變體可以只有28 = 256而不是216 = 65536。這就是爲什麼8位音質將明顯低於16位。
- BlockAlign = Channels * BitsPerSample/8.其中8是每個字節的位數。
- AvgBytesPerSec(比特率)=通道* SamplesPerSec * BitsPerSample/8.
可以使用下面的代碼來分析PCM音頻格式中更特別。
private void WhatIsPcmFormat(string fileName)
{
WaveReader wr = new WaveReader(File.OpenRead(fileName));
IntPtr format = wr.ReadFormat();
wr.Close();
WaveFormat wf = AudioCompressionManager.GetWaveFormat(format);
if (wf.wFormatTag == AudioCompressionManager.PcmFormatTag)
{
int bitsPerByte = 8;
Console.WriteLine("Channels: {0}, SamplesPerSec: {1}, BitsPerSample: {2}, BlockAlignIsEqual: {3}, BytesPerSecIsEqual: {4}",
wf.nChannels, wf.nSamplesPerSec, wf.wBitsPerSample,
(wf.nChannels * wf.wBitsPerSample)/bitsPerByte == wf.nBlockAlign,
(int)(wf.nChannels * wf.nSamplesPerSec * wf.wBitsPerSample)/bitsPerByte == wf.nAvgBytesPerSec);
}
}
該鏈接是史詩般的,謝謝:) – Tevis 2013-03-19 21:23:39
該鏈接已死亡,一個很好的例子說明爲什麼只有鏈接的答案沒有幫助。 – miken32 2016-12-20 18:04:39
以上第二個想法 – Fer 2017-07-25 21:07:21