我试着写了一个播放声音文件的程序,但是到目前为止没有成功。我无法理解代码的某些部分:
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 methodAudioFormat的构造函数中,我如何预先知道样本率、文件大小、通道是什么,以及最终的两个布尔变量?length)的值?发布于 2011-07-28 17:53:22
除了编码之外,音频格式还包括进一步指定数据的确切排列的其他属性。这包括通道数、采样率、样本大小、字节顺序、帧速率和帧大小。声音可能有不同数量的音频通道:一个用于单声道,两个用于立体声。采样率测量每个声道每秒拍摄多少“快照”(样本)的声压。(如果声音是立体声,而不是单声道,则在每一时刻实际测量两个样本:一个用于左通道,另一个用于右声道;然而,采样率仍然测量每个频道的数目,因此无论频道数如何,采样率都是相同的。这是这个词的标准用法。)样本大小指示用于存储每个快照的位数;8和16是典型值。对于16位样本(或任何大于字节的其他样本大小),字节顺序很重要;每个示例中的字节以“小端”或“大端”的方式排列。对于PCM这样的编码,帧由给定时间点上的所有通道的样本集组成,因此帧的大小(以字节为单位)总是等于采样(以字节为单位)乘以通道数的大小。但是,对于其他类型的编码,一个帧可以包含一系列样本的压缩数据,以及其他的非样本数据。对于这样的编码,采样率和样本大小指的是被解码成PCM后的数据,因此它们与帧速率和帧大小完全不同。
链接
https://stackoverflow.com/questions/6863384
复制相似问题