Java 了解AudioFormat、AudioInputStream和启动方法的构造

Java 了解AudioFormat、AudioInputStream和启动方法的构造,java,audio,javasound,Java,Audio,Javasound,我曾尝试编写一个播放声音文件的程序,但到目前为止都没有成功。 我无法理解代码的某些部分: InputStream is = new FileInputStream("sound file"); AudioFormat af = new AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian); // I don't understand it's

我曾尝试编写一个播放声音文件的程序,但到目前为止都没有成功。 我无法理解代码的某些部分:

InputStream is = new FileInputStream("sound file");
   AudioFormat af = new AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian); // I don't understand it's constructor
   long length ; // length in sample frames
   // how cani i know the length of frames ?
   AudioInputStream ais = new AudioInputStream( is , af , length );
   // open ( ais );
   // start playing by invoking start method
  • AudioFormat
    的构造函数中,如何预先知道采样率、文件大小、通道以及最后的2个布尔变量
  • 如何获取示例帧(
    长度
    )的值
  • 还有,如何调用start方法?我不希望数据来自任何一行,而是来自保存在文件夹(即剪辑)中的文件
除了编码之外,音频格式还包括其他 属性,进一步指定数据的精确排列。 这些包括通道数、采样率、采样大小、字节数 订单、帧速率和帧大小。声音可能有不同的数字 音频通道:一个用于单声道,两个用于立体声。抽样率 测量声压的“快照”(样本)数量 每秒,每个频道拍摄。(如果声音是立体声而不是 实际上,在每一时刻测量两个样本:一个 对于左通道,另一个用于右通道;但是 采样率仍然测量每个通道的数量,因此速率是 无论通道数多少,都是相同的。这是 术语。)样本大小表示用于存储的位数 每个快照;8和16是典型值。对于16位样本(或任何 其他样本量大于一个字节),字节顺序很重要;这个 每个示例中的字节以“小尾端”或 “大端”风格。对于PCM之类的编码,帧由 给定时间点上所有通道的采样集,因此 帧的大小(以字节为单位)始终等于样本的大小(以字节为单位) 字节)乘以通道数。然而,与一些其他类型的 对帧进行编码可以包含整个帧的压缩数据包 系列样本以及附加的非样本数据。为了这样 编码、采样率和样本大小是指编码后的数据 被解码到PCM中,因此它们与 帧速率和帧大小


可能更好的方法是按照页面中显示的“播放
剪辑”源代码进行操作。它使大多数问题变得多余(因为在使用
剪辑时,我们不需要担心细节)


如果您在尝试源代码后有任何进一步的问题,请告诉我。

什么是小端、大端?8和16有何不同?提示:在“ClassName+6”上搜索通常会让你找到Java 6 JavaDocs(好吧,如果它是一个像
Thread
)这样的通用类名,那么在搜索中添加“javadoc”)。我不想从URL播放声音文件。为了停止浪费你的时间和耐心,请返回并阅读该源代码的所有25行,但特别是第一条单行评论。为了向我证明你确实这么做了,请引用那条评论。
//getAudioInputStream()也接受文件或InputStream
1)请不要包含指向代码的链接。编辑你的问题。2) 在我提到的源代码中总共有4行注释,答案就在最后两行注释中。