【问题标题】:C# mp3 compression 64-bitC# mp3 压缩 64 位
【发布时间】:2013-10-18 23:10:43
【问题描述】:

http://www.codeproject.com/Articles/5901/C-MP3-Compressor 的文章有一个 C# 32 位实现,它封装了 LAME 的 32 位 mp3 音频编码器。我已经尝试下载该源代码并将其转换为 64 位并将其与更新的 LAME 版本一起使用 [例如来自 http://www.rarewares.org/mp3-lame-bundle.php 的 LAME 3.99.5 64bit],但我不断收到错误

算术运算导致溢出。

对于需要对该代码执行哪些操作以使其正常工作,或者可能已经适用于 64 位的替代开源 C# 解决方案有任何想法吗?

【问题讨论】:

  • 您提到的错误是 .NET 异常吗?如果是这样,请查看异常的堆栈跟踪以找出错误发生的位置。
  • 你有没有想过这个问题?我有完全相同的问题。

标签: c# windows audio 64-bit mp3


【解决方案1】:

我遇到了同样的错误,这为我修复了它。将 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 但地址空间太大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2023-04-11
    相关资源
    最近更新 更多