2012-02-06 53 views
0

當從服務器解壓Mp3幀時,上述異常發生在Mp3播放10到15秒之後。我的應用程序是一個客戶端/服務器應用程序。我通過編寫發送Mp3幀Mp3數據包並通過網絡流進行序列化。我使用NAudio開放源代碼API對於壓縮和解壓縮幀和播放Mp3.I使用堆棧跟蹤獲得以下例外。ACM Stream轉換異常顯示AcmNotPossible

NAudio.MmException.Try(MmResult結果,字符串功能)

在NAudio.Wave.Compression.AcmStreamHeader.Convert(的Int32 bytesToConvert,的Int32 & sourceBytesConverted)

在NAudio.Wave .Compression.AcmStream.Convert(Int32 bytesToConvert,Int32 & sourceBytesConverted)

at NAudio.Wave.AcmMp3FrameDecompressor.DecompressFrame(Mp3Frame frame,B YTE [] DEST,的Int32 destOffset)

在Client.Audio.SoundPlayer.StreamMP3(對象狀態)

回答

1

AcmNotPossible是由acmStreamConvert視窗函數返回一個錯誤碼,該調用到MP3 ACM編解碼器。此錯誤可能表示無效的MP3幀,或者您一次傳入太多幀。你是如何確定你獲得整個MP3幀?通過將收到的數據寫入MP3文件然後檢查可以按預期播放,調試這樣的問題是一個好主意。

+0

正如您所報告的那樣,可能存在無效幀。請讓我談談Naudio API。當您使用Naudio解析Mp3Frame時,只有在正確的Mp3幀從Stream.there返回時才能解析它。第二個概率,因爲在一個實例中,一個幀正在寫入流中。 – Samie 2012-02-07 07:35:29

+1

這個框架有什麼奇怪的地方嗎?它是單聲道而其他是立體聲?對其他人是不同的採樣率? – 2012-02-07 07:49:54

+0

你能告訴我關於單聲道和立體聲幀嗎?不!所有幀的採樣率都是一樣的 – Samie 2012-02-07 12:31:57