利用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個字節後在讀取.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章