java音频剪切_Java使用IO流实现音频的剪切和拼接

article/2025/5/8 23:09:09

需求:使用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

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();

}

}

}

}

获取音频文件比特率的方式:

6e96fb2a077279d453981c1653d70032.png

运行结果:

74d01d3e700e8471d5a8ba918a719f96.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


http://chatgpt.dhexx.cn/article/QsZTUtax.shtml

相关文章

怎么裁剪音频?这个方法建议收藏备用

如今已然发展成了一个自媒体时代&#xff0c;短视频用户急速剧增&#xff0c;这也使不少人加入了创作视频的队伍。但录制视频容易&#xff0c;后期制作可没那么容易了&#xff0c;例如我们需要为其添加一段背景音乐&#xff0c;但是找不到一首歌的节奏能刚好跟视频中的卡点相结…

音频裁剪软件有哪些?来看看这几个实用软件

在剪辑视频的时候&#xff0c;我们通常会添加一段音乐来丰富视频的内容&#xff0c;但是我们可能只需要音频其中的一小段&#xff0c;剩下的音频需要被裁剪掉。那你们知道怎么裁剪音频&#xff1f;今天我来教你两个简单的音频裁剪技巧&#xff0c;你们走过路过&#xff0c;不要…

android音频裁剪(2)——Wav裁剪

原创不易&#xff0c;请尊重每一位原创&#xff0c;让我们更有分享的动力&#xff0c;转载请注明 转载链接 在android音频裁剪&#xff08;1&#xff09;——MP3裁剪一文中我分享了对mp3文件裁剪方法。在本文中我将分享对另外一种音频格式——wav格式音频的裁剪。不同于mp3格…

音视频系列--音频基本操作(音频裁剪,音频和音频混合,音频和视频混合)

前面介绍了音频的基本原理&#xff0c;这篇文章继续来总结下音频的基本操作&#xff0c;包括裁剪&#xff0c;混音和音频和视频的混合操作。 一、裁剪 下面Demo将一段输入mp3文件&#xff0c;根据startTime和endTime&#xff0c;进行裁剪&#xff0c;先解码成PCM文件,然后转码…

android音频资源,android音频编辑之音频裁剪的示例代码

前言 本篇开始讲解音频编辑的具体操作&#xff0c;从相对简单的音频裁剪开始。要进行音频裁剪&#xff0c;我的方案是开启一个Service服务用于音频裁剪的耗时操作&#xff0c;主界面发送裁剪命令&#xff0c;同时注册EventBus接受裁剪的消息(当然也可以使用广播接受的方式)。因…

android裁剪控件,Android 仿抖音音频裁剪控件

效果图 QQ图片20201126164657.jpg 功能要求:绘制音频效果,音乐播放后进度滚动,控件可拖动,拖动后获取新的起始时间 (后期会加入根据音乐各个时段分贝大小来动态显示音律线的长短) 控件功能实现具体代码: package com.cj.customwidget.widget import android.content.Conte…

如何剪切音乐的一部分?来试试这个方法

音频剪切和合并是音频编辑中常见的操作&#xff0c;它可以用来去除不必要的部分或者将多个音频片段组合成一个完整的作品。在今天的数字化时代&#xff0c;有许多软件和工具可以帮助我们完成这个任务。 那你们知道具体的音频剪切合并的方法是什么吗&#xff1f;如果还不太清楚…

如何裁剪音频文件?裁剪音频的方法有什么?

通常我们在剪辑视频时&#xff0c;为了让视频更加有感染力&#xff0c;我们会加上各种各样的音频丰富视频的内容&#xff0c;而且在选取音频时&#xff0c;一般都是会采用它的高潮部分。那么如何裁剪音频文件来达到想要的效果呢&#xff1f;裁剪音频的方法又有什么&#xff1f;…

常用停用词表整理(哈工大停用词表,百度停用词表等)

辣鸡CSDN https://github.com/goto456/stopwords https://zhuanlan.zhihu.com/p/30002654 转载于:https://www.cnblogs.com/0n-the-way/p/10544285.html

文本分析--停用词集合(结合哈工大停用词表、四川大学机器智能实验室停用词库、百度停用词表等)

文本分析过程中&#xff0c;中文文本分析是一个非常重要的环节&#xff0c;而停用词表的选择也是非常关键的&#xff0c;网络流行了多种版本的停用词表&#xff0c;都具有各自的特点&#xff0c;现在对网络流行的多种停用词表继续去重处理&#xff0c;综合实现新的停用词表。 …

【python】构建停用词表(文末附链接)

构建停用词表 构建停用词表是数据预处理的必要步骤&#xff0c;可以减小不必要的开销。 哈工大、百度、川大等停用词表见GitHub链接&#xff1a;https://github.com/goto456/stopwords 经实验和观察证明&#xff0c;’cn_stopwords.txt‘文件的停用词大多是否定词&#xff1…

stopwords.txt中英文数据集,四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表百度网盘下载

今天找stopwords.txt数据集找了好长时间&#xff0c;真是气死了&#xff0c;好多都是需要金币&#xff0c;这数据集不是应该共享的么。故搜集了一些数据集&#xff0c;主要包括四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表和一些其他的stopword.t…

python停用词表整理_python停用词表

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! stop_words:设置停用词表,这样的词我们就不会统计出来(多半是虚拟词,冠词等等),需要列表结构,所以代码中定义了一个函数来处理停用词表...前言前文给大家…

python文本分析--停用词表的使用

之前听说停用词表&#xff0c;没有上手使用过&#xff0c;真正操作的时候发现有很多东西没有学透彻。这里总结一下&#xff0c;去停用词的思想&#xff1a;在原始文本集中去掉不需要的词汇&#xff0c;字符。虽然有通用的停用词表&#xff0c;但是如果想提高后续的分词效果&…

uniapp使用阿里图标

效果图&#xff1a; 前言 随着uniApp的深入人心&#xff0c;我司也陆续做了几个使用uniapp做的移动端跨平台软件&#xff0c;在学习使用的过程中深切的感受到了其功能强大和便捷&#xff0c;今日就如何在uniapp项目中使用阿里字体图标的问题为大家献上我的一点心得&#xff0…

iconfont—阿里图标的使用

阿里图标库为我们提供了许多丰富精美的图标&#xff0c; 可以通过代码引入的方式将图标库引入到我们的项目中&#xff0c;用来美化我们的界面。iconfont 的使用方式有以下几种&#xff1a; 方式一&#xff1a;font-class 在线引入 打开网址进入首页&#xff0c;输入我们想要的…

java前端中的icon_阿里巴巴矢量图标库Iconfont的使用方法

前言 现在网络上有很多矢量图标库&#xff0c;但是能自定义的却很少&#xff0c;不能自定义的体积就很大&#xff0c;造成不必要的浪费。阿里巴巴矢量图标库Iconfont很好的规避了这个问题&#xff0c;能够自定义添加图标到你定义的项目中&#xff0c;运用也很简单。 选择图标 打…

MUI项目中使用阿里巴巴矢量图标库(保姆篇)

话不多说,直接进入主题. 一、要在MUI项目中使用阿里图标库&#xff0c; 就得先进入阿里图标库的官网 这里是官网网址: https://www.iconfont.cn/ 下图是首页的样子 二、使用阿里图标的方法有很多种,&#xff0c;这里就说一下我使用的这种 1.在搜索框中输入关键字&#xff0c;…

微信小程序如何使用阿里妈妈iconfont图标库

1、首先进入iconfont首页&#xff0c;没有账号的先注册账号 http://www.iconfont.cn/ 2、选择需要的图标&#xff0c;加入到你的小车中 3、在这里新建一个项目将图标加进去&#xff0c;这个时候就可以查看并且下载下来了 4、点击download code将图标代码下载下来&#xff0c;…

基于Java的阿里妈妈数据抓取技术

基于Java的阿里妈妈数据抓取技术 前言&#xff1a; 对于需要登录的网站爬虫最大的困难就是需要登录&#xff0c;然后才能获取到数据&#xff0c;如微博&#xff0c;阿里妈妈&#xff0c;webqq等。之前也有看过使用浏览器登录到网站后直接从浏览器中获取cookie的文章&#xff0…