Java使用IO流实现音频的剪切和拼接
发布时间 - 2026-01-11 01:42:08 点击率:次需求: 使用IO流将指定目录下的若干个音频文件的高潮部分,进行剪切,并重新拼接成一首新的音频文件

思路(以两首歌为例):
第一首歌有一个输入流对象bis1。第二首歌有一个输入流对象bis2,他们公用一条输出流对象bos(在选择构造方法的时候选择含有布尔类型参数的那个),待第一首歌剪切完成后,在此基础上追加第二首歌的“高潮部分”。
实现代码:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* 音乐剪切和拼接(音乐串烧)
* @author
*
*/
public class CutMusic {
public static void main(String[] args) {
//f1,f2分别为需要剪切的歌曲路径
File f1 = new File("E:\\CutMusicTest\\残酷月光(Cover:林宥嘉).mp3");
File f2 = new File("E:\\CutMusicTest\\慢慢.mp3");
//f为合并的歌曲
File f = new File("E:\\CutMusicTest\\MergeMusic.mp3");
cut1(f1,f2,f);
}
public static void cut1(File f1,File f2,File f){
BufferedInputStream bis1 = null;
BufferedInputStream bis2 = null;
BufferedOutputStream bos = null;
//第一首歌剪切部分起始字节
int start1 = 2375680;//320kbps(比特率)*58s*1024/8=2375680 比特率可以查看音频属性获知
int end1 = 4915200;//320kbps*120s*1024/8=4915200
//第二首歌剪切部分起始字节,计算方式同上
int start2 = 3686400;
int end2 = 5324800;
int tatol1 = 0;
int tatol2 = 0;
try {
//两个输入流
bis1 = new BufferedInputStream(new FileInputStream(f1));
bis2 = new BufferedInputStream(new FileInputStream(f2));
//缓冲字节输出流(true表示可以在流的后面追加数据,而不是覆盖!!)
bos = new BufferedOutputStream(new FileOutputStream(f,true));
//第一首歌剪切、写入
byte[] b1= new byte[512];
int len1 = 0;
while((len1 = bis1.read(b1))!=-1){
tatol1+=len1; //累积tatol
if(tatol1<start1 ){ //tatol小于起始值则跳出本次循环
continue;
}
bos.write(b1); //写入的都是在我们预先指定的字节范围之内
if(tatol1>=end1 ){ //当tatol的值超过预先设定的范围,则立刻刷新bos流对象,并结束循环
bos.flush();
break;
}
}
System.out.println("第一首歌剪切完成!");
//第二首歌剪切、写入,原理同上
byte[] b2= new byte[512];
int len2 = 0;
while((len2 = bis2.read(b2))!=-1){
tatol2 += len2;
if(tatol2 < start2){
continue;
}
bos.write(b2);
if(tatol2>=end2){
bos.flush();
break;
}
}
System.out.println("第二首歌剪切完成!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {//切记要关闭流!!
if(bis1!=null) bis1.close();
if(bis2!=null) bis2.close();
if(bos!=null) bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
获取音频文件比特率的方式:
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java音频剪切拼接
# IO流音频剪切
# IO流音频拼接
# java中怎么将多个音频文件拼接合成一个
# 首歌
# 比特率
# 有一个
# 都是
# 一首
# 布尔
# 分别为
# 为例
# 在此基础上
# 大家多多
# 可以查看
# 串烧
# 范围之内
# 若干个
# 而不是
# 两首歌
# 完成后
# 目录下
# public
# CutMusic
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用免费手机建站系统零基础打造专业网站?
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
大学网站设计制作软件有哪些,如何将网站制作成自己app?
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何快速生成凡客建站的专业级图册?
无锡营销型网站制作公司,无锡网选车牌流程?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
详解CentOS6.5 安装 MySQL5.1.71的方法
Android okhttputils现在进度显示实例代码
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
免费网站制作appp,免费制作app哪个平台好?
Laravel如何保护应用免受CSRF攻击?(原理和示例)
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
EditPlus 正则表达式 实战(3)
简单实现jsp分页
深圳网站制作平台,深圳市做网站好的公司有哪些?
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何用VPS主机快速搭建个人网站?
Laravel Docker环境搭建教程_Laravel Sail使用指南
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何在阿里云ECS服务器部署织梦CMS网站?
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
nodejs redis 发布订阅机制封装实现方法及实例代码
网站制作软件有哪些,制图软件有哪些?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
微信小程序 闭包写法详细介绍
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Android中AutoCompleteTextView自动提示
iOS UIView常见属性方法小结
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
如何在橙子建站上传落地页?操作指南详解
Laravel如何使用Service Container和依赖注入?(代码示例)
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Python并发异常传播_错误处理解析【教程】
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
企业网站制作这些问题要关注
Laravel如何为API编写文档_Laravel API文档生成与维护方法
Laravel如何发送系统通知?(Notification渠道示例)
如何打造高效商业网站?建站目的决定转化率

