- 编写一个程序将多首mp3歌曲合并成一个mp3文件。
以下演示将 D:\Program Files\CloudMusic\music\G.E.M.邓紫棋 - 来自天堂的魔鬼.mp3 和D:\Program Files\CloudMusic\music\张紫豪 - 可不可以.mp3 这两首歌合并后放入D:\demo\邓紫棋_张紫豪_合集.mp3
先看demo文件夹:
package ex.ex_字节流.ex_11;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author yyh on 2020/4/18 21:15
*/
public class FileTest11 {
public static void main(String[] args) {
try (FileInputStream in = new FileInputStream("D:\\Program Files\\CloudMusic\\music\\G.E.M.邓紫棋 - 来自天堂的魔鬼.mp3");
FileInputStream in2 = new FileInputStream("D:\\Program Files\\CloudMusic\\music\\张紫豪 - 可不可以.mp3");
FileOutputStream out = new FileOutputStream("D:\\demo\\邓紫棋_张紫豪_合集.mp3")
) {
byte[] bytes = new byte[1024*1024];//每次读入1Mb
int length = -1;
while ((length = in.read(bytes)) != -1) {
out.write(bytes, 0, length);
}
byte[] bytes2 = new byte[1024*1024];//每次读入1Mb
length = -1;
while ((length = in2.read(bytes2)) != -1) {
out.write(bytes2, 0, length);
}
System.out.println("读写完成!" );
} catch (FileNotFoundException e) {
e.printStackTrace( );
} catch (IOException e) {
e.printStackTrace( );
}
}
}
运行后,再看一下demo文件夹:
合并成功,点击合集.mp3即可播放这两首歌…
12.如何截取一个MP3文件的一段音频,从此MP3文件的10秒处开始截取,截取紧接着之后20秒内的一段音频?
首先,要知道一下这首歌的码率是多少
以接下来要演示的这首歌 “张紫豪 - 可不可以.mp3” 为例:
如图所示,
它的码率是320kbps,而320kbps = 40kByte/s
所以1s的时长为:40kByte = 40 * 1024 Byte = 40960 Byte
10s的时长为:40960 * 10 byte
20s的时长为:40960 * 20 byte
以下代码表示将 D:\Program Files\CloudMusic\music\张紫豪 - 可不可以.mp3 这首歌截取一段到 D:\demo\张紫豪 - 可不可以.mp3_截20秒.mp3 ,然后看demo文件夹下是否有这首歌,然后播放看看是否有20s。
package ex.ex_字节流.ex_12;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author yyh on 2020/4/19 20:27
*/
public class FileTest12 {
public static void main(String[] args) {
try(FileInputStream in = new FileInputStream("D:\\Program Files\\CloudMusic\\music\\张紫豪 - 可不可以.mp3");
FileOutputStream cutout = new FileOutputStream("D:\\demo\\张紫豪 - 可不可以.mp3_截20秒.mp3");
){
in.skip(40*1024*10);//跳过mp3的前10s
byte[] bytes = new byte[40*1024*20];
int length = -1;
if ((length = in.read(bytes)) != -1) {
cutout.write(bytes,0,length);
}
System.out.println("截取成功!" );
} catch (FileNotFoundException e) {
e.printStackTrace( );
} catch (IOException e) {
e.printStackTrace( );
}
}
}
运行后:
欧克了,嘿嘿,点击那个mp3文件就可以播放了,只有20s哦,多一秒都不行哈,嘻嘻