【问题标题】:Buffering wave files / sample management缓冲波形文件/样本管理
【发布时间】:2014-12-09 06:32:12
【问题描述】:

简而言之:我想在堆中缓冲整个音频文件(波形)。 所以基本上,我会为每个通道使用一个数组,包含最大10 min * 60 sec * 44100 样本。 (我只是将长度限制为 10 分钟,并在必要时转换为 44100 个样本/秒。)

所以我必须使用两个最大长度为26460000 元素的数组。关于大小,数组将包含 16 位整数,每个文件加起来约为 100 兆字节。 (应允许应用程序一次打开 4 个文件,因此使用的内存将加起来约为 400 兆字节)

问题是,这是否适用于 Windows(32 位)系统,或者我是否应该使用更动态的样本管理?我想有什么帮助是减少(例如)1024 个样本的缓冲区 int 块,所以我不必使用一个巨大的数组而是一堆较小的数组。

如果这不是一个好主意,我该如何实现样本管理来处理突然跳转到文件中的特定位置或重复一些样本。 (因此,覆盖旧/使用过的样本的“简单”圆形缓冲区实际上并没有帮助......)

【问题讨论】:

    标签: c++ arrays audio buffer


    【解决方案1】:

    即使在 Win32 上也没什么大不了的。请务必使用std::vector::reserve,您预先知道有多少样本。

    【讨论】:

    • 没什么大不了的,全文件变体还是样本管理? :)
    猜你喜欢
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多