「 PCM 形式とは」も参照してください。
PCM (パルス符号変調) は非圧縮オーディオ形式です。PCM データを保持 (保持) する Wav ファイルを取得します。やり方を見る Wavファイルとは?メソッド AudioCompressionManager.GetWaveFormat は、オーディオ形式の調査に役立ちます。
- FormatTag = 1 は PCM です。
- チャネル = シングルチャネル (モノラル)、2 チャネル (ステレオ)、7.1 サラウンド サウンド用に 8 (左、右、中央、左サラウンド、右サラウンド、左後方、右後方位置)。7.1 システムには、低域用の 1 つのチャネルもあります。通常サブウーファーに送られる周波数効果 (LFE))。
- SamplesPerSec = 1 秒あたりのデジタル化された数量値 (またはサンプリング)。何でもかまいませんが、標準値: 8000 Hz、11025 Hz、12000 Hz、16000 Hz、22050 Hz、24000 Hz、32000 Hz、44100 Hz、48000 Hz。
- BitsPerSample - 最も一般的には、8 ビット (1 バイト) と 16 ビット (2 バイト) を使用します。まれに、24 ビット (3 バイト)、32 ビット (4 バイト)、および 64 ビット (4 バイト)。16ビットを基本と考えると、8ビットは圧縮形式と見なすことができます。サイズは 2 分の 1 になりますが、値のバリエーションは、16 ビットの 216 = 65536 ではなく、28 = 256 しかありません。そのため、8 ビットの音質は 16 ビットに比べて大幅に低下します。
- BlockAlign = Channels * BitsPerSample / 8. ここで、8 は 1 バイトあたりのビット数です。
- AvgBytesPerSec (ビットレート) = Channels * 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);
}
}