代码之家  ›  专栏  ›  技术社区  ›  Nathan user12821433

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

  •  0
  • Nathan user12821433  · 技术社区  · 11 年前

    我很难为我的简单项目将一些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;
           }
       }
    

    如何检查音频文件数据是否 大端序 还是不?最后,有没有办法检查AudioFormat是否为PCM 签署 无符号的 ?

    1 回复  |  直到 11 年前
        1
  •  0
  •   Mark Heath    11 年前

    PCM WAV文件使用小端序。最常见的位深度是16位,这将是有符号的(即C#中的short或Int16)。