Java混剪音频
分享一个之前看过的程序,可以用来剪辑特定长度的音频,将它们混剪在一起,思路如下:
1.使用 FileInputStream 输入两个音频
2.使用 FileInputStream的skip(long n) 方法跳过特定字节长度的音频文件,比如说:输入 skip(1024*1024*3),这样就能丢弃掉音频文件前面的 3MB 的内容。
3.截取中间特定长度的音频文件:每次输入 8KB 的内容,使用 count 记录输入次数,达到设置的次数就终止音频输入。比如说要截取 2MB 的音频,每次往输入流中输入 8KB 的内容,就要输入 1024*2/8 次。
4.往同一个输出流 FileOutputStream 中输出音频,并生成文件,实现音频混合。
相关代码:
public class MusicCompound
{
public static void main(String args[])
{
FileOutputStream fileOutputStream = null;
FileInputStream fileInputStream = null;
String fileNames[] = {"D:/01.mp3","D:/02.mp3"};
//设置byte数组,每次往输出流中传入8K的内容
byte by[] = new byte[1024*8];
try
{
fileOutputStream = new FileOutputStream("D:/合并音乐.mp3");
for(int i=0;i<2;i++)
{
int count = 0;
fileInputStream = new FileInputStream(fileNames[i]);
//跳过前面3M的歌曲内容
fileInputStream.skip(1024*1024*3);
while(fileInputStream.read(by) != -1)
{
fileOutputStream.write(by);
count++;
System.out.println(count);
//要截取中间2MB的内容,每次输入8k的内容,所以输入的次数是1024*2/8
if(count == (1024*2/8))
{
break;
}
}
}
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
finally
{
try
{
//输出完成后关闭输入输出流
fileInputStream.close();
fileOutputStream.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
}
Java混剪音频的更多相关文章
- Processing与Java混编初探
Processing其实是由Java开发出的轻量级JAVA开发语言,主要用于做原型,有setup.draw两个主接口和几个消息相应接口 Processing和Java混编很简单...在Java中引入外 ...
- Java & 混型
1.C++ & 混型 C++能够记住其模板参数的类型,对于混型来说,使用参数化类型更加优雅. #include <string> #include <ctime> #i ...
- JAVA混型和潜在类型机制
一.混型 ①.定义 二.利用JAVA如何实现混型 ①.代理 ②.装饰器模式 ③.动态代理模式 ④.装饰器模式与代理模式的区别 三.潜在类型机制 ①.定义 四.JAVA的潜在类型机制的补偿 ① ...
- Java 获取amr音频格式的音频长度
import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class GetAm ...
- java两个音频进入巩固期 玩的同时类似的伴奏
/** * * @param partsPaths 阵列要合成音频路径 * @param unitedFilePath 输入合并结果数组 */ public void uniteWavFile(Str ...
- java 访问剪切板(读取与设置)
设置文本到剪切板 public void setIntoClipboard(String data) { Clipboard clipboard = Toolkit.getDefaultToolkit ...
- [java,2017-12-01] 播放音频文件
废话不多说,直接上代码 jar包 <!-- 2017-12-01音频播放jar包 --> <dependency> <groupId>javazoom</gr ...
- groovy && java 混编 gradle 配置
参考配置: apply plugin: "application" apply plugin: "java" apply plugin: "groov ...
- 三、使用maven创建scala工程(scala和java混一起)
本文先叙述如何配置eclipse中maven+scala的开发环境,之后,叙述如何实现spark的本地运行.最后,成功运行scala编写的spark程序. 刚开始我的eclipse+maven环境是配 ...
随机推荐
- 从零单排Hadoop——1.搭建Hadoop开发环境
Hadoop环境准备:ubuntu 12.05.Hadoop 2.4 一.安装ssh 由于hadoop可以配置为集群运行,因此系统需要安装ssh工具保证集群中各节点可以互相访问. 获取ssh软件: s ...
- JavaScript 金额、数字、千分位、千分位、保留几位小数、舍入舍去、支持负数
JavaScript 金额.数字 千分位格式化.保留指定位数小数.支持四舍五入.进一法.去尾法 字段说明: number:需要处理的数字: decimals:保留几位小数,默认两位,可不传: dec_ ...
- sicily 1500. Prime Gap
Description The sequence of n ? 1 consecutive composite numbers (positive integers that are not prim ...
- cbow&&skipgram详细
前面:关于层次huffman树和负例采样也要知道的,这里就不详细写了 来源于:https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=224 ...
- android studio实现Intent通信-------牛刀小试
概述: 本博文实现一种小程序,两个Activity单向通信,主从关系,MainActivty 页面布局一个EditText+Button,实现逻辑是单击按钮将信息发送给另外一个DisplayMessa ...
- 洛谷P3367并查集
传送门 #include <iostream> #include <cstdio> #include <cstring> #include <algorith ...
- Codeforces 981D Bookshelves(按位贪心+二维DP)
题目链接:http://codeforces.com/contest/981/problem/D 题目大意:给你n本书以及每本书的价值,现在让你把n本书放到k个书架上(只有连续的几本书可以放到一个书架 ...
- C++ 实现memcpy和strcpy
/** * @Method: Memcpy * @Access: public * @Return: void * * @Param : dst - 目的起始地址 * @Param : src - 源 ...
- MySQL 5.1完全卸载
第一步:控制面板里的增加删除程序内进行删除 第二步:删除MySQL文件夹下的my.ini文件,如果备份好,可以直接将文件夹全部删除 第三步:regedit进入注册表 HKEY_LOCAL_MACHIN ...
- SP_attach_db 添加数据库文件
SP_attach_db 用法如下: EXEC SP_attach_db @dbname = N'目标数据库名', //这是你要引入后的数据库名. ...