2013-10-18 50 views
1

http://www.codeproject.com/Articles/5901/C-MP3-Compressor的文章有一個C#32位實現,它包裝LAME的32位mp3音頻編碼器。我試圖下載該源代碼,並將其轉換爲64位,並使用它與更多的最新版本LAME [如LAME 3.99.5 64位來自http://www.rarewares.org/mp3-lame-bundle.php],但我不斷收到錯誤C#mp3壓縮64位

算術運算導致在溢出。

在將需要做的是代碼如何得到它的工作,或者替代性的開源C#的解決方案,已經爲64位工作任何想法?

+0

是您提到.NET異常的錯誤嗎?如果是這樣,請查看異常的堆棧跟蹤以找出錯誤發生的位置。 – elgonzo

+0

你能想出來嗎?我有完全一樣的問題。 –

回答

0

我遇到了這個相同的錯誤,這個問題解決了我的問題。在Lame.cs文件EncodeChunk方法改成這樣:

public static uint EncodeChunk(uint hbeStream, byte[] buffer, int index, uint nBytes, byte[] pOutput, ref uint pdwOutput) { 
    uint res; 
    GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned); 
    try { 
     IntPtr ptr = (IntPtr)(handle.AddrOfPinnedObject() + index); 
     res = beEncodeChunk(hbeStream, nBytes/2/*Samples*/, ptr, pOutput, ref pdwOutput); 
    } finally { 
     handle.Free(); 
    } 
    return res; 
} 

它被強制轉換爲Int32但地址空間過大。