pcm转mp3保姆级教程附源码
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保姆级教程附源码相关推荐
- Java微信公众号发送消息-保姆级教程附源码
目录 1. 概念说明: 2. 开发准备: 3. 测试demo(更改配置信息即可使用) 3.1. 服务器配置 3.1.1.配置填写说明 3.1.2.校验服务器有效性: 3.1.3.URL后端接口代码和校 ...
- java中batch基础_详解Spring batch 入门学习教程(附源码)
详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...
- python 开发视频播放网站_python开发微电影视频网站教程附源码
做为一个合格的Pythoner,只掌握一个框架是不够,如果你有过其它Python框架(例如django)的使用经验,对比不同框架的特性来学习,你将收获更多 当前信息若含有黄赌毒等违法违规不良内容,请点 ...
- 毕业设计-基于SSM框架大学教务管理平台项目开发实战教程(附源码)
文章目录 1.项目简介 2.项目收获 3.项目技术栈 4.测试账号 5.项目部分截图 6.常见问题 毕业设计-基于SSM框架大学教务管理平台项目实战教程-附源码 课程源码下载地址:https://do ...
- Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)
目录 一.新建项目并初始化 二.安装依赖 axios.elementUI 三.Vue代码 四.进行接口联调 五.后端接口优化 六.web页面功能测试 七.总结 八.展望 九.附录(截止发文时的代码) ...
- 微信小程序UI自动化实践:python+minium+PO模式(超详细教程附源码供下载)
文章目录 前言 一.minium介绍 二.安装环境 1. 安装minium doc 2. 安装minium 3. 启动小程序 三.准备知识 1. 启动 2. 配置 3. 命令行运行 4. 元素定位 5 ...
- STM32移植LVGL8.0.2超详细的保姆级教程附移植好的工程文件
文章目录 前言 一.什么是LVGL? 二.先看效果 三.移植前准备工作 1.准备原有工程 2.下载LVGL源码 四.开始移植 1.把源码搬运到工程文件夹里 2.把搬运好的代码添加到keil工程 3.动 ...
- 微信小程序 推送模板教程 附源码
无聊的时候 玩一下小功能踩踩坑 首先模板推送 需要准备一些材料 准备材料:1)公众号|小程序,添加选择的模板消息,2)在设置>开发设置页面,开通消息模板功能:如: 如果还没模板素材的 请新建一 ...
- SpringBoot 和 Vue 前后端分离教程(附源码)
编辑:业余草 来源:https://www.xttblog.com/?p=4851 昨天,一位网友问我要 SpringBoot + Vue 的源码项目.其实网上有很多,我这里分享一个项目的简单教程,授 ...
- 2020最新款影视小程序后端+前端搭建详细教程附源码
准备工作 教程很详细一步步操作都可以上线,教程都是亲自发布的,希望各位要搬运的时候备注来自哪里 购买云服务器:教程等待更新 购买域名+配置ssl证书:教程待更新 常见问题: 问:域名需要备案吗? 回: ...
最新文章
- jieba分词流程及部分源码解读(一)
- ssh 2014-12-10
- JavaScript语言基础.上
- python编程入门经典 评分-《Python编程入门经典》--第二章:数值和运算符
- 用JAVA日志来写诗
- 0点mysql_【转载】MySQL查询当天0点,昨天时间
- python 不执行函数_解决python调用自己文件函数/执行函数找不到包问题
- Java程序员应该收藏的书籍
- postgres xshell copy 命令 内存溢出_良心国产工具,比Xshell好用还免费!
- Android Studio之提示Gradle sync failed: Plugin with id ‘com.novoda.bintray-release‘ not found.
- ​怎么用藏头诗向女友表白......
- 新浪的股票接口 c#
- 软件项目管理案例教程第4版课后习题第二章
- 使用python中的matplotlib绘制路径图
- manjaro踩坑记
- Marr-Hildreth边缘检测器C++实现
- echarts柱形图x轴y轴的字体大小颜色调整
- HTML5 Web Audio Api-2 发声oscillator
- 用myeclipse开发java web教程_转:在MyEclipse下创建Java Web项目 入门(图文并茂)经典教程...
- Identifier ‘XX‘ has already been declared
热门文章
- NFS存储服务器搭建
- html 打开资源管理器,资源管理器怎么打开 教你如何快速打开资源管理器
- Tip | 使用GitHubDesktop提交 本地existing项目
- nvm npm exit status 1:乱码
- 计算机软件it是什么职业,it行业是什么工作做什么的?属于信息技术产业(工资可观)...
- Linux 简介 ------ 带你简单了解Linux
- 《三体1》6.射手和农场主
- 太原今年实施一批大数据重大项目
- ping服务器时显示的ttl是什么意思,ping命令显示的TTL是什么意思?
- android常用快捷键大全,AndroidStudio 快捷键使用总结大全