扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
现在的主流播放器都可以播放wav格式的,比如天天动听,酷狗,QQ音乐。
十载的简阳网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整简阳建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“简阳网站设计”,“简阳网站推广”以来,每个客户项目都认真落实执行。
天天动听(TTPOD)是上海水渡石信息技术有限公司开发音乐播放器,是一款功能强大、完全免费的音乐播放软件。支持歌词和歌曲图片下载,皮肤随心更换,更有炫丽震撼的可视化效果,同时预置丰富的均衡器效果,支持音效增强,简洁人性化的操作,给追求音乐品质的你带来了手机听歌的全新体验。目前有Android,iOS,Windows Phone,Symbian,pc客户端以及网页版。
全面支持APE、FLAC、MP3、AAC、M4A、WMA、 ALAC、WAV等各种音频格式
祝福首先百度搜索AMRPlayer,找到之后点击下载。然后下载会出现下面的添加需要转换的amr格式文件。然后再点击上面的amrtowav。这时候弹出另存为,选择桌面。然后点击确定,这时候文件就转换为wav格式了
下面这个方法就是如何读取一个WAV文件的头部:
private static final String RIFF_HEADER = "RIFF";
private static final String WAVE_HEADER = "WAVE";
private static final String FMT_HEADER = "fmt ";
private static final String DATA_HEADER = "data";
private static final int HEADER_SIZE = 44;
private static final String CHARSET = "ASCII";
/* ... */
public static WavInfo readHeader(InputStream wavStream) throws IOException,
DecoderException {
ByteBuffer buffer = ByteBuffer.allocate(HEADER_SIZE);
buffer.order(ByteOrder.LITTLE_ENDIAN);
wavStream.read(buffer.array(), buffer.arrayOffset(), buffer.capacity());
buffer.rewind();
buffer.position(buffer.position() + 20);
int format = buffer.getShort();
checkFormat(format == 1, "Unsupported encoding: " + format); // 1 means
// Linear
// PCM
int channels = buffer.getShort();
checkFormat(channels == 1 || channels == 2, "Unsupported channels: "
+ channels);
int rate = buffer.getInt();
checkFormat(rate = 48000 rate = 11025, "Unsupported rate: " + rate);
buffer.position(buffer.position() + 6);
int bits = buffer.getShort();
checkFormat(bits == 16, "Unsupported bits: " + bits);
int dataSize = 0;
while (buffer.getInt() != 0x61746164) { // "data" marker
Log.d(TAG, "Skipping non-data chunk");
int size = buffer.getInt();
wavStream.skip(size);
buffer.rewind();
wavStream.read(buffer.array(), buffer.arrayOffset(), 8);
buffer.rewind();
}
dataSize = buffer.getInt();
checkFormat(dataSize 0, "wrong datasize: " + dataSize);
return new WavInfo(new FormatSpec(rate, channels == 2), dataSize);
}
上面的代码中,缺少的部分应该是显而易见的。正如你所看到的,仅仅支持16位,但在你可以修改代码以支持8位(AudioTrack不支持任何其他分辨率的)。
下面这个方法,则是用来读取文件剩余的部分 – 音频数据。
public static byte[] readWavPcm(WavInfo info, InputStream stream)
throws IOException {
byte[] data = new byte[info.getDataSize()];
stream.read(data, 0, data.length);
return data;
}
我们读取的WavInfo结构体,包含采样率,分辨率和声道数已经足够让我们去播放我们读取的音频了。
如果我们不需要将全部音频数据一次性放入内存中,我们可以使用一个InputStream,一点一点地读取。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流