当前位置: 首页 >Java技术 > 无音频头音频数组,转写成可播放音频文件

无音频头音频数组,转写成可播放音频文件

前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i

需求:将一段没有音频头的byte数组,转写成可播放的WAV文件

功能实现:

1.获取不包含音频头的音频数组

2.设置所需音频格式信息(.WAV)

2.设置文件存储路径,获取File对象

3.传入音频数组、音频格式、File对象参数生成文件

设置音频格式信息:AudioFormat 对象介绍:

对象可以包括属性的集合。属性是一个键值对:键属于 String 类型,相关属性值可为任意对象。属性指定其他格式规范,如压缩格式的比特率。属性主要用作传送往返于服务提供程序的其他音频格式信息的方法。

 1/** 2  * 音频数组生成WAV音频文件 3  * @param byteAudio 无音频头音频数组 4  */ 5 public void outAudioFile(byte[] byteAudio){ 6 //设置音频格式 7 AudioFormat audioFormat = new AudioFormat( 8 AudioFormat.Encoding.PCM_SIGNED,//音频编码方式 9 8000,//音频采样率10 16,//音频采样位数11 1,//音频通道数12 2 * 2,//字节为单位的帧大小13 8000,//每秒为单位的帧速率14 false);15 try {16 //生成临时文件17 File srcFile = File.createTempFile("E:\\audionfile" + System.currentTimeMillis(), ".wav");18 //调用生成音频文件方法19 encodeDstFile(srcFile, byteAudio, audioFormat);20 }catch (IOException e){21 log.debug("文件生成失败");22 }23 24 }

将文件转写到磁盘:AudioSystem介绍:

AudioSystem 类充当取样音频系统资源的入口点。此类允许查询和访问安装在系统上的混频器。AudioSystem 包括许多在不同格式间转换音频数据的方法,以及在音频文件和流之间进行转换的方法。

 /** * . * 将文件转写到磁盘中 * * @param dstFile  目标文件 * @param pcmBytes 字符数组 * @param format文件格式 * @throws IOException IO异常 */public static void encodeDstFile(final File dstFile,final byte[] pcmBytes,final AudioFormat format)throws IOException {AudioInputStream audioInputStream = new AudioInputStream(new ByteArrayInputStream(pcmBytes),format,pcmBytes.length / format.getFrameSize());AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, dstFile);}

 效果展示:

无音频头音频数组,转写成可播放音频文件 _ JavaClub全栈架构师技术笔记

 

 

本人亲测!!!按照步骤完成以上代码即可生成WAV音频文件,音频文件正常播放!

 

总语

我是南国以南i记录点滴每天成长一点点,学习是永无止境的!转载请附原文链接!!!

作者:南国以南i
来源链接:https://www.cnblogs.com/bgyb/p/13640349.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/java/117198.html

分享给朋友:

“无音频头音频数组,转写成可播放音频文件” 的相关文章

Linux使用yum命令安装jdk1.8 2022年05月15日 09:16:48
yum安装步骤(网络下载安装) 2022年05月15日 10:23:29
SpringBoot 如何进行参数校验 2022年05月16日 19:52:41
网络协议 2022年05月16日 20:32:41
一文搞懂“网络协议” 2022年05月16日 20:33:35
网络协议栈基本知识 2022年05月16日 20:33:52
网络协议极简总结 2022年05月16日 20:34:14
SpringCloud基本原理 2022年05月16日 20:38:15