Java的AudioFormat.isBigEndian和AudioFormat.Encoding.PCM_SIGNED等效的C#

时间:2015-02-14 16:43:56

标签: java c# audio naudio

我很难尝试将一些Java代码移植到C#中,用于我的简单项目。 Java代码使用 format.isBigEndian 并检查音频文件数据是否签名。我的C#项目使用NAudio来处理音频文件。

这是Java代码

 public void LoadAudioStream(AudioInputStream inputStream) {
    AudioFormat format = inputStream.getFormat();
    sampleRate = (int) format.getSampleRate();
    bigEndian = format.isBigEndian();
    AudioFormat.Encoding encoding = format.getEncoding();
    if (encoding.equals(AudioFormat.Encoding.PCM_SIGNED))
        dataIsSigned = true;
    else if (encoding.equals(AudioFormat.Encoding.PCM_UNSIGNED))
        dataIsSigned = false;
}

和我正在使用的C#代码..

     public void LoadAudioStream(WaveFileReader reader)
   {
       var format = reader.WaveFormat;
       sampleRate = format.SampleRate;
       //bigEndian = ??
       var encoding = format.Encoding;
       if (encoding.Equals( /*????*/))
       {
           dataIsSigned = true;
       }
       else if (encoding.Equals( /*?????*/))
       {
           dataIsSigned = false;
       }
   }

如何检查音频文件数据是否为 big-endian ?最后有办法检查AudioFormat是PCM 签名还是无符号

1 个答案:

答案 0 :(得分:0)

PCM WAV文件使用小端。最常见的位深度为16位,这将被签名(即C#中的short或Int16)。