利用i/o流来合成自己喜欢的铃声

来源:互联网 发布:网页游戏数据修改 编辑:程序博客网 时间:2024/06/09 20:22

        最近在学习java的Io流,根据老师的思路,觉得可也用io流来截取自己喜欢的歌曲中高潮的部分,或者是截取几首歌后再合成一首新的歌曲.

1.mp3的截取

由于MP3文件是由字节组成的,所以可以选择用FileInputStream 来从文件系统中的某个文件中获取输入字节.

import java.io.*;public class CutMp3{public static void main(String args[]){try{FileInputStream fis1=new FileInputStream("E:\\我的音乐\\苏打绿 - 小情歌.mp3");//读取字节.                       fis.skip(2000000);//跳过这n个字节,根据文件的大小合理选择要跳过的字节数.byte by1[]=new byte[1000000];fis1.read(by1);//写入by1.length个字节.FileOutputStream fos=new FileOutputStream("我的铃声.mp3",true);fos.write(by1);fis1.close();fos.close();}catch(Exception e){e.printStackTrace();}}}



2.将几个截取后的MP3文件合成一个新的MP3,这个新的MP3包含了所有截取的歌曲.

在io流中可以用FileOutputStream来写字节流文件,当然为了提高效率也可以使用BufferOutputStream.

代码如下:

//FileInputStream 从文件系统中的某个文件中获取输入字节import java.io.*;public class CutMp3{public static void main(String args[]){try{FileInputStream fis1=new FileInputStream("E:\\我的音乐\\苏打绿 - 小情歌.mp3");FileInputStream fis2=new FileInputStream("E:\\我的音乐\\筷子兄弟 - 老男孩.mp3");FileInputStream fis3=new FileInputStream("E:\\我的音乐\\邓丽君 - 我只在乎你.mp3");fis1.skip(1500000);//跳过前面的n个字节.byte by1[]=new byte[1000000];fis1.read(by1);//写入by1.length个字节.fis2.skip(2000000);byte by2[]=new byte[2000000];fis2.read(by2);fis3.skip(2000000);byte by3[]=new byte[2000000];fis3.read(by3);FileOutputStream fos=new FileOutputStream("我的铃声.mp3",true);//true是为了前面写入的不被覆盖.fos.write(by1);fos.write(by2);fos.write(by3);fis1.close();fis2.close();fis3.close();fos.close();}catch(Exception e){e.printStackTrace();}}}

这样就可以得到自己喜欢的铃声了.在读写前已经知道了MP3有多少字节了,所以可以根据实际情况跳过n个字节后在读取.


1 0
原创粉丝点击