0

我现在使用了两个包装器来尝试提取 ISO 文件。但没有成功

我已经尝试过SevenzipsharpC-NET-Interface-for-7-Zip-Archive-DLLs但它们都给出了同样的异常。ISO 文件包含 .vob 文件(电影),ISO 文件的总大小为 4.35GB。当我尝试从中提取 1GB 的单个 .vob 文件时,出现内存不足异常。

我实际上想提取 .vob 文件,然后通过 Upnp/DLNA 流式传输它们

    SevenZipExtractor Extractor;
    try
      {
         String[] FileNames = RawFileExtractor(path, out Extractor);
         Extractor.ExtractFile(FileNames[8], ms) //the 1GB file: exception is here
      }
    catch{}
    Extractor.Dispose();
4

1 回答 1

0
     Extractor.ExtractFile(FileNames[8], ms)

看不到“ms”,但可以在 MemoryStream 中猜测。这确实不适用于 jiggabyte 文件。 当您的程序作为 32 位进程运行时,很可能会出现 OutOfMemoryException。很容易修复你的机器,你有马力。项目 + 属性,构建选项卡,选择 AnyCPU 并取消勾选“首选 32 位”,如果你看到它。

如果他没有 64 位操作系统,仍然非常浪费并且不能完全保证在您的用户的机器上工作。很不清楚你实际上在用那个 MemoryStream 做什么,你很可能应该使用 FileStream 来代替它,以便将它直接提取到磁盘。您将使用 4096 字节而不是 jiggabyte。视频播放器不关心它是从内存还是磁盘播放。还要回顾压缩视频的智慧,它已经被编码器压缩了。

于 2013-11-20T14:24:43.487 回答