本文主要是介绍如何合并两首.mp3类型的歌或者截取一首.mp3类型歌曲中的一段,例如跳过歌曲的前10s,截取紧接着之后的20s那一部分然后播放??,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 编写一个程序将多首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];//每次读入1Mbint length = -1;while ((length = in.read(bytes)) != -1) {out.write(bytes, 0, length);}byte[] bytes2 = new byte[1024*1024];//每次读入1Mblength = -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的前10sbyte[] 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哦,多一秒都不行哈,嘻嘻
这篇关于如何合并两首.mp3类型的歌或者截取一首.mp3类型歌曲中的一段,例如跳过歌曲的前10s,截取紧接着之后的20s那一部分然后播放??的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!