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

        最近在学习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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值