Atitit java播放器调音速率快慢的实现 目录 1.1. 原理 本质上是改变采样率即可 1 2. 使用Java增加/降低AudioInputStream的音频播放速度(Increase/dec
Atitit java播放器调音速率快慢的实现
目录
FloatControl SAMPLE_RATE_control=(FloatControl)sourceDataLine.getControl(FloatControl.Type.SAMPLE_RATE);
SAMPLE_RATE_control.setValue(20000);
sourceDataLine.start();
PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
Exception in thread "main" java.lang.IllegalArgumentException: Unsupported control type: Sample Rate
at com.sun.media.sound.AbstractLine.getControl(AbstractLine.java:150)
at apkg.soundPlay.t(soundPlay.java:55)
at apkg.soundPlay.main(soundPlay.java:32)
只好使用第三方的了。第三方jl库也么有调整采样率的设置,
只好回到使用原生api
看到这个文章有了解决思路
- 使用Java增加/降低AudioInputStream的音频播放速度(Increase/decrease audio play speed of AudioInputStream with Java)
调节里面的 AudioFormat audioFormat2= new AudioFormat( 70000, 16, 2, true, false);速率即可
private static void fastPlay(String file) throws Exception {
AudioFormat audioFormat= new AudioFormat( 20000, 16, 2, true, false);
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
SourceDataLine sourceDataLine = (SourceDataLine) AudioSystem
.getLine(info);
AudioFormat audioFormat2= new AudioFormat( 70000, 16, 2, true, false);
sourceDataLine.open(audioFormat2); //this audioformat can overwrite last DataLine.Info.audioFormat
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(file));
sourceDataLine.start();
int cnt;
// 读取数据到缓存数据
byte[] tempBuffer = new byte[10000] ;
while ((cnt = audioInputStream.read(tempBuffer, 0, tempBuffer.length)) != -1) {
if (cnt > 0) {
// 播放缓存数据
sourceDataLine.write(tempBuffer, 0, cnt);
}
}
// Block等待临时数据被输出为空
sourceDataLine.drain();
sourceDataLine.close();
}
JavaAPI方式语音识别mp3转换为pcm.html
相关文章
- java集合之ArrayList的实现原理
- java concurrent包的实现原理
- 这么说吧,java线程池的实现原理其实很简单
- java实现第五届蓝桥杯奇怪的分式
- Java RMI原理与使用
- Atitit 表达式原理 语法分析 原理与实践 解析java的dsl 递归下降是现阶段主流的语法分析方法
- Atitit. 注册表操作查询 修改 api与工具总结 java c# php js python 病毒木马的原理
- Atitit. Async await 优缺点 异步编程的原理and实现 java c# php
- Atitit.linq java的原理与实现 解释器模式
- atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
- Atitit.java jna 调用c c++ dll的原理与实践 总结 v2 q27
- Atitit.加密算法 des aes 各个语言不同的原理与解决方案java php c#
- Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
- paip.java UrlRewrite 的原理and实现 htaccess正则表达式转换
- Java三大器之拦截器(Interceptor)的实现原理及代码示例
- 理解java注解的实现原理
- Java 泛型之 JDK 的底层实现原理
- java 序列化和反序列化的实现原理
- 自旋锁原理及java自旋锁
- JAVA组成原理及使用方法编辑环境及实现过程
- Java-HashMap实现原理
- Servlet | Servlet原理、开发第一个带有Java小程序Servlet
- 【java】java动态代理实现与原理详细分析
- 【Java 】Java NIO 底层原理
- 【java】Spring Boot -- Spring的IOC实现原理