Java 文件流读取音频文件播放,从音频文件中获取字节流?

Is there any way to get audio stream from an audio file (wav file in particular) in Java?

I am trying to get the stream of a particular interval i.e from startTime to endTime where startTime is not zero. For example, to get the audio stream from 5 sec to 10 sec (5 sec duration) of a 20 sec long audio file.

How to do that?

解决方案

You can do this with the standard Java sound library: javax.sound.sampled.

Reading .wav files has been well covered here, as well as how to convert bytes to the corresponding frames. If you check the "Related" on the right, you will find info on how to read audio data, one buffer's worth at a time, and how to iterate through those buffers and convert the bytes to PCM data.

Assuming you know the frame rate (e.g., 44100 fps) it then just becomes a matter of counting bytes or frames of audio data. At stereo, 16-bit encoding at 44100 fps, for example, each frame consists of 4 bytes, so byte (5 * 4 * 44100) would be the start of the 5 second point, and (10 * 4 * 44100) would be the 10 second spot.

The java sound tutorials are a tough read. The following link has a very useful code example under the header "Reading Sound Files".

http://docs.oracle.com/javase/tutorial/sound/converters.html

There's a comment line that reads

"// Here, do something useful with the audio data that's now in the audioBytes array..."

That's where you would count your bytes, and assemble the PCM data from bytes.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值