自动压缩多个 MP3 的最佳过程
Posted
技术标签:
【中文标题】自动压缩多个 MP3 的最佳过程【英文标题】:Best process for auto-zipping of multiple MP3s 【发布时间】:2010-09-21 16:02:42 【问题描述】:我有一个需要相当复杂过程的项目,我想确保我知道执行此操作的最佳方法。我正在使用带有 Adobe Flex 3 的 ASP.net C#。应用程序服务器是 Mosso(云服务器),文件存储服务器是 Amazon S3。现有网站可以在NoiseTrade.com查看
我需要这样做:
允许用户上传 MP3 文件到 专辑“小部件” 在用户上传他们的 专辑/小工具,我需要 自动压缩 mp3(对于其他 用户下载)并上传 与 mp3 曲目一起压缩到 亚马逊 S3我实际上已经有这个工作(在 Flex 中使用客户端处理),但由于 Adobe 的 flash 10“安全”更新,这不再工作。所以现在我需要实现这个服务器端。
我的想法是:
将 mp3 存储在临时文件夹中 在应用服务器上 当艺术家“发布”创建一个 压缩该文件夹中的文件 使用 c# 库 启动亚马逊 S3 上传过程(zip 和 mp3s) 并在发送时向用户发送电子邮件 完成(以及删除 临时文件夹)我看到这种方法的主要问题是,如果用户稍后删除或添加曲目,我将不得不更新 zip 文件,但临时文件将不再存在。
我不知道执行此操作的最佳方法,如果您有任何建议,我将不胜感激。
谢谢!
【问题讨论】:
感谢大家的投入!澄清一下,压缩是必不可少的,因为这是艺术家的粉丝在通过小部件“注册”时将下载的内容。要查看我所说的小部件,请访问noisetrade.com。 【参考方案1】:如果用户添加或删除曲目,则有关更新 zip 但没有临时文件的问题让我怀疑您想要构建包含多个曲目的 zip,可能是完整的专辑。如果这是不正确的,并且您只是在每个 zip 中放入一个 mp3,那么 StingyJack 是正确的,您可能最终会使文件(稍微)更大,而不是通过压缩来缩小。
如果我的解释是正确的,那么你很幸运。命令行 zip 工具通常具有可用于将文件添加到现有 zip 存档或从现有 zip 存档中删除文件的标志。您没有说明您使用哪个库或其他方法进行压缩,但我希望它也可能具有此功能。
【讨论】:
是的,zip 文件几乎总是包含一个以上的 mp3(大多数时候它们是完整的专辑)。修改现有 zip 文件的问题是没有文件驻留在实际的应用程序服务器上。由于带宽成本,它们都存储在 Amazon S3 中。 即便如此...您建议如何修改驻留在不同服务器上的文件(压缩或非压缩)?除非 S3 服务器具有“修改 zip 文件”API,否则您当然必须下载旧版本的副本,修改它,然后上传新版本。没办法,真的。 是的,目前我正在将所有曲目流式传输回内存(使用闪存),然后将它们压缩并发送回去。我想每次需要新的 zip 文件时,我都必须将曲目流式传输到服务器内存中。这不会很有趣:/【参考方案2】:MP3 被压缩。为什么要拉上拉链?
【讨论】:
因为您可以通过这种方式将多个文件组合在一起,但实际上您只能获得与更简单的 .tar 格式相同的功能。 是的,压缩是为了为艺术家的粉丝提供简单的一键下载,而不是逐个曲目。 哦...我读到“我需要自动压缩 mp3”,所以我以为我们在谈论单个文件。【参考方案3】:我会说没有必要压缩压缩文件格式,您只需将文件大小减少 5%,或多或少。 Mp3 本质上并没有真正压缩,而是已经压缩了大部分可能的数据。
【讨论】:
【参考方案4】:DotNetZip 可以从 C#/ASP.NET 压缩文件。我同意之前关于 MP3 可压缩性的海报。 DotNetZip 将自动跳过 MP3 压缩,并仅存储文件,正是出于这个原因。除了压缩之外,使用 zip 作为打包/存档容器仍然可能很有趣。
如果您稍后更改 zip 文件(用户添加曲目),您可以从 S3 获取 .zip 文件,然后更新它。 DotNetZip 也可以更新 zip 文件。但在这种情况下,您必须支付进出 S3 的传输费用。
DotNetZip 可以通过在内存中处理 zip 来完成所有这些工作 - 尽管这对于具有大量 MP3 和大量并发用户的大型档案来说可能是不可行的。
【讨论】:
以上是关于自动压缩多个 MP3 的最佳过程的主要内容,如果未能解决你的问题,请参考以下文章