pcm转mp3
你好! 大家好~上次发布了一篇JAVA SpringBoot接科大讯飞TTS语音合成
的文章,然后好多小伙伴发现科大讯飞生成的pcm文件,无法直接用并不是大家熟知的mp3,4这类格式,于是应大家要求我这边发布一篇pcm转mp3的工具类。
废话不说上代码

package com.stla.callCenter.utility;import com.stla.callCenter.bean.WaveHeader;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;/*** PCM 转 MP3** @author laowang* @since 2020-04-02*/
public class PcmToMp3 {/*** @param src    待转换文件路径* @param target 目标文件路径(这个工具是在源文件的基础上再形成一个文件,target样例:D:/landscape/music/25745664665456.mp3,必须写全否则报io‘无法访问错误’)* @throws IOException 抛出异常*/public static String convertAudioFiles(String src, String target) throws IOException {FileInputStream fis = new FileInputStream(src);FileOutputStream fos = new FileOutputStream(target);//计算长度byte[] buf = new byte[1024 * 4];int size = fis.read(buf);int PCMSize = 0;while (size != -1) {PCMSize += size;size = fis.read(buf);}fis.close();//填入参数,比特率等等。这里用的是16位单声道 8000 hzWaveHeader header = new WaveHeader();//长度字段 = 内容的大小(PCMSize) + 头部字段的大小(不包括前面4字节的标识符RIFF以及fileLength本身的4字节)header.fileLength = PCMSize + (44 - 8);header.FmtHdrLeth = 16;header.BitsPerSample = 16;header.Channels = 1;header.FormatTag = 0x0001;header.SamplesPerSec = 16000;header.BlockAlign = (short) (header.Channels * header.BitsPerSample / 8);header.AvgBytesPerSec = header.BlockAlign * header.SamplesPerSec;header.DataHdrLeth = PCMSize;byte[] h = header.getHeader();assert h.length == 44; //WAV标准,头部应该是44字节//write headerfos.write(h, 0, h.length);//write data streamfis = new FileInputStream(src);size = fis.read(buf);while (size != -1) {fos.write(buf, 0, size);size = fis.read(buf);}fis.close();fos.close();System.out.println("PCM Convert to MP3 OK!");return "ok";}public static void main(String[] args) throws IOException {convertAudioFiles("D:\\123123.pcm","D:\\tts_test3.mp3");}
}

接口层
PcmToMp3.convertAudioFiles(“xxx.pcm”,“xxx.mp3”);

pcm转mp3保姆级教程附源码相关推荐

  1. Java微信公众号发送消息-保姆级教程附源码

    目录 1. 概念说明: 2. 开发准备: 3. 测试demo(更改配置信息即可使用) 3.1. 服务器配置 3.1.1.配置填写说明 3.1.2.校验服务器有效性: 3.1.3.URL后端接口代码和校 ...

  2. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  3. python 开发视频播放网站_python开发微电影视频网站教程附源码

    做为一个合格的Pythoner,只掌握一个框架是不够,如果你有过其它Python框架(例如django)的使用经验,对比不同框架的特性来学习,你将收获更多 当前信息若含有黄赌毒等违法违规不良内容,请点 ...

  4. 毕业设计-基于SSM框架大学教务管理平台项目开发实战教程(附源码)

    文章目录 1.项目简介 2.项目收获 3.项目技术栈 4.测试账号 5.项目部分截图 6.常见问题 毕业设计-基于SSM框架大学教务管理平台项目实战教程-附源码 课程源码下载地址:https://do ...

  5. Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)

    目录 一.新建项目并初始化 二.安装依赖 axios.elementUI 三.Vue代码 四.进行接口联调 五.后端接口优化 六.web页面功能测试 七.总结 八.展望 九.附录(截止发文时的代码) ...

  6. 微信小程序UI自动化实践:python+minium+PO模式(超详细教程附源码供下载)

    文章目录 前言 一.minium介绍 二.安装环境 1. 安装minium doc 2. 安装minium 3. 启动小程序 三.准备知识 1. 启动 2. 配置 3. 命令行运行 4. 元素定位 5 ...

  7. STM32移植LVGL8.0.2超详细的保姆级教程附移植好的工程文件

    文章目录 前言 一.什么是LVGL? 二.先看效果 三.移植前准备工作 1.准备原有工程 2.下载LVGL源码 四.开始移植 1.把源码搬运到工程文件夹里 2.把搬运好的代码添加到keil工程 3.动 ...

  8. 微信小程序 推送模板教程 附源码

    无聊的时候 玩一下小功能踩踩坑  首先模板推送 需要准备一些材料 准备材料:1)公众号|小程序,添加选择的模板消息,2)在设置>开发设置页面,开通消息模板功能:如: 如果还没模板素材的 请新建一 ...

  9. SpringBoot 和 Vue 前后端分离教程(附源码)

    编辑:业余草 来源:https://www.xttblog.com/?p=4851 昨天,一位网友问我要 SpringBoot + Vue 的源码项目.其实网上有很多,我这里分享一个项目的简单教程,授 ...

  10. 2020最新款影视小程序后端+前端搭建详细教程附源码

    准备工作 教程很详细一步步操作都可以上线,教程都是亲自发布的,希望各位要搬运的时候备注来自哪里 购买云服务器:教程等待更新 购买域名+配置ssl证书:教程待更新 常见问题: 问:域名需要备案吗? 回: ...

最新文章

  1. jieba分词流程及部分源码解读(一)
  2. ssh 2014-12-10
  3. JavaScript语言基础.上
  4. python编程入门经典 评分-《Python编程入门经典》--第二章:数值和运算符
  5. 用JAVA日志来写诗
  6. 0点mysql_【转载】MySQL查询当天0点,昨天时间
  7. python 不执行函数_解决python调用自己文件函数/执行函数找不到包问题
  8. Java程序员应该收藏的书籍
  9. postgres xshell copy 命令 内存溢出_良心国产工具,比Xshell好用还免费!
  10. Android Studio之提示Gradle sync failed: Plugin with id ‘com.novoda.bintray-release‘ not found.
  11. ​怎么用藏头诗向女友表白......
  12. 新浪的股票接口 c#
  13. 软件项目管理案例教程第4版课后习题第二章
  14. 使用python中的matplotlib绘制路径图
  15. manjaro踩坑记
  16. Marr-Hildreth边缘检测器C++实现
  17. echarts柱形图x轴y轴的字体大小颜色调整
  18. HTML5 Web Audio Api-2 发声oscillator
  19. 用myeclipse开发java web教程_转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程...
  20. Identifier ‘XX‘ has already been declared

热门文章

  1. NFS存储服务器搭建
  2. html 打开资源管理器,资源管理器怎么打开 教你如何快速打开资源管理器
  3. Tip | 使用GitHubDesktop提交 本地existing项目
  4. nvm npm exit status 1:乱码
  5. 计算机软件it是什么职业,it行业是什么工作做什么的?属于信息技术产业(工资可观)...
  6. Linux 简介 ------ 带你简单了解Linux
  7. 《三体1》6.射手和农场主
  8. 太原今年实施一批大数据重大项目
  9. ping服务器时显示的ttl是什么意思,ping命令显示的TTL是什么意思?
  10. android常用快捷键大全,AndroidStudio 快捷键使用总结大全