【问题标题】:Strategies for playing (long) audio files from disk从磁盘播放(长)音频文件的策略
【发布时间】:2014-12-20 14:59:09
【问题描述】:

我想在这个问题上发起一个线程。很多人想知道如何在特定的上下文或使用特定的语言来做到这一点,但我想知道一般来说最好的策略是什么

我看到了两种主要做法:

  • 在缓冲区中加载文件的小块(如 2048 个样本)。这似乎是最简单的,但它涉及到大量使用磁盘,所以我怀疑它不是最好的。

  • 将所有文件加载到一个大缓冲区中。使用硬盘更温和,但如果您使用多个长文件,则需要大量内存。如果你的文件很长,或者有很多通道,我想索引变量可能会损坏。例如,如果它是一个 16 位整数,它可能无法到达文件末尾(或者我是不是偏执狂?)

我正在考虑混合的东西,比如:

  • 使用非常大的缓冲区而不加载整个文件

  • 将文件以自定义格式存储在硬盘上,以一种针对快速访问而优化的方式。

那么,你怎么看,你如何处理这个? 我真的不在乎什么是“最好的”,我更想知道每个人的优缺点。

【问题讨论】:

    标签: buffering audio-player


    【解决方案1】:

    回答我自己问题的一部分(关于混合解决方案的部分)。

    Audacity 使用自定义 BlockFiles 格式进行存储和播放。它封装了大约 1Mb 的大(比回调)缓冲区的想法和自定义文件类型(.aup)的想法。

    “块文件平衡了两种相互冲突的力量。我们可以插入和删除音频而无需过度复制,并且在播放过程中,我们保证每次请求磁盘时都能获得相当大的音频块。块越小,潜在的磁盘请求就越多获取相同数量的音频数据;块越大,插入和删除的复制越多。” (来自:http://www.aosabook.org/en/audacity.html

    根据我的阅读,它主要是为加快超长文件的编辑速度而设计的(例如,在开头插入数据而无需在之后移动所有内容)。 但是对于播放相对较短的音频数据(

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多