首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解AudioFormat、AudioInputStream和start方法的构造函数

理解AudioFormat、AudioInputStream和start方法的构造函数
EN

Stack Overflow用户
提问于 2011-07-28 17:49:42
回答 2查看 6.6K关注 0票数 8

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

代码语言:javascript
复制
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的构造函数中,我如何预先知道样本率、文件大小、通道是什么,以及最终的两个布尔变量?
  • 如何获得示例帧(length)的值?
  • 另外,我如何调用start方法?我不需要任何行的数据,而是保存在文件夹(即剪辑)中的文件。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-28 17:53:22

除了编码之外,音频格式还包括进一步指定数据的确切排列的其他属性。这包括通道数、采样率、样本大小、字节顺序、帧速率和帧大小。声音可能有不同数量的音频通道:一个用于单声道,两个用于立体声。采样率测量每个声道每秒拍摄多少“快照”(样本)的声压。(如果声音是立体声,而不是单声道,则在每一时刻实际测量两个样本:一个用于左通道,另一个用于右声道;然而,采样率仍然测量每个频道的数目,因此无论频道数如何,采样率都是相同的。这是这个词的标准用法。)样本大小指示用于存储每个快照的位数;8和16是典型值。对于16位样本(或任何大于字节的其他样本大小),字节顺序很重要;每个示例中的字节以“小端”或“大端”的方式排列。对于PCM这样的编码,帧由给定时间点上的所有通道的样本集组成,因此帧的大小(以字节为单位)总是等于采样(以字节为单位)乘以通道数的大小。但是,对于其他类型的编码,一个帧可以包含一系列样本的压缩数据,以及其他的非样本数据。对于这样的编码,采样率和样本大小指的是被解码成PCM后的数据,因此它们与帧速率和帧大小完全不同。

链接

票数 3
EN

Stack Overflow用户

发布于 2011-07-28 19:17:19

解决这一问题的更好方法可能是按照Java声音信息。页面中显示的“播放一个Java声音信息。”源代码的思路。这使得大多数问题变得多余(因为我们在使用Clip时不需要担心细节)。

如果你在试过消息来源后还有其他问题,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6863384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档