2015-09-14 71 views
2

我有一個MemoryStream從在線讀取音頻,然後將其保存到FileStream。音頻播放可以很好地解決一個問題,即在每個分割開始時,剪輯的前30-40毫秒是死音並保持沉默。這是有問題的,因爲我需要將音頻剪輯分成多個文件,以便以後無縫播放。 mp3數據中是否存在某個字節或十六進制數字,指示某幀的MP3開始/結束嘗試並將其拆分到正確的位置?這在代碼中看起來如何?在MemoryStream中分離MP3音頻的正確方法是什麼?

在這個簡單的FileStream保存在這裏,你可以看到,在我的實驗中,即使我試圖在開始時刪除死點,它仍然會創建死區 - 導致我認爲我將聲音文件拆分爲不正確位置,然後玩家不能讀取該幀 - 但我怎麼能克服這一點?

byte[] byteArray = ms.ToArray(); 
using (FileStream fs = new FileStream(destPath + filename + ".mp3", FileMode.Create)) 
{ 
     fs.Write(byteArray, 0, byteArray.Length); 
} 

剪輯回試,並在一開始只是測試擺脫死角:

byte[] oldArray = ms.ToArray(); 
byte[] newArray = new byte[oldArray.Length - 1000]; 
Array.Copy(oldArray, 1000, newArray, 0, newArray.Length); 
using (FileStream fs = new FileStream(destPath + filename + ".mp3", FileMode.Create)) 
{ 
     fs.Write(newArray, 0, newArray.Length); 
} 

enter image description here

檢查的MP3的字節數組被保存,有數據存在當我將它轉換爲文本時,即使在死空間中也能保存,但由於某些原因,它不能播放。正如我所說,我猜測這是關於文件被錯誤地分割成一個聲音框架或一些東西的事情?對不起,如果我使用了不正確的術語。

enter image description here

回答

相關問題