全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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


相关文章: 公司网站设计制作厂家,怎么创建自己的一个网站?  如何在云主机快速搭建网站站点?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  购物网站制作公司有哪些,哪个购物网站比较好?  成都网站制作报价公司,成都工业用气开户费用?  香港服务器如何优化才能显著提升网站加载速度?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  小型网站建站如何选择虚拟主机?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Thinkphp 中 distinct 的用法解析  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  代刷网站制作软件,别人代刷火车票靠谱吗?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  网站制作的步骤包括,正确网址格式怎么写?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何快速建站并高效导出源代码?  如何快速生成可下载的建站源码工具?  网站制作网站,深圳做网站哪家比较好?  网站制作报价单模板图片,小松挖机官方网站报价?  常州企业网站制作公司,全国继续教育网怎么登录?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  成都网站制作公司哪家好,四川省职工服务网是做什么用?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  ,如何利用word制作宣传手册?  如何用PHP快速搭建高效网站?分步指南  重庆网站制作公司哪家好,重庆中考招生办官方网站?  实例解析Array和String方法  如何用花生壳三步快速搭建专属网站?  如何选择高性价比服务器搭建个人网站?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  TestNG的testng.xml配置文件怎么写  全景视频制作网站有哪些,全景图怎么做成网页?  音乐网站服务器如何优化API响应速度?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  存储型VPS适合搭建中小型网站吗?  如何通过VPS建站无需域名直接访问?  完全自定义免费建站平台:主题模板在线生成一站式服务  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  如何选购建站域名与空间?自助平台全解析  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何快速搭建支持数据库操作的智能建站平台?  香港网站服务器数量如何影响SEO优化效果?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  建站之星代理平台如何选择最佳方案? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。