在一定秒数内更改缓冲区大小

Posted

技术标签:

【中文标题】在一定秒数内更改缓冲区大小【英文标题】:Changing buffer size for certain amount of seconds 【发布时间】:2015-02-23 01:57:11 【问题描述】:

我的问题是,给定缓冲区 int16_t buffer[128];用于以 48kHz=Fs 采样和播放音频信号,我将如何更改缓冲区大小以使缓冲区仅存储 0.25s 的数据。

以下是我的想法,但鉴于我的硬件经验,我无法证明:

如果我以 48kHz 采样,我每秒有 48000 个样本。因此,要仅获得 1/4 秒(12000 个样本?),我的缓冲区大小将是 int16_t buffer[32]

我对硬件不太了解,因此我们将不胜感激任何指导/指导或帮助。提前谢谢!

【问题讨论】:

要将整个 0.25 秒的 48kHz 数据存储在缓冲区中,您需要一个包含 12000 个样本的缓冲区。如果您有 128 个样本的缓冲区,那么您一次最多只能缓冲约 2.7 毫秒的数据(这并不意味着您不能处理超过 2.7 毫秒的音频,您只需要进行处理小块)。 【参考方案1】:
floor(25*48000/100)

ans =

       12000

那么您是否需要int16_t buffer[12000] 才能获得 0.25 秒的音频。

如果您正在实时执行某项操作,那么这种大小的缓冲区可能会导致不希望的延迟。

【讨论】:

如果 Jim 需要立体声,则为单声道 - 双声道 记忆犹新

以上是关于在一定秒数内更改缓冲区大小的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 android videoview 中流式传输的缓冲区大小?

如何在 gunicorn(django) + nginx + docker 中更改缓冲区大小

如何在 Spring 5 webflux websocket 客户端上更改帧/缓冲区大小

为啥固定大小的缓冲区(数组)一定是不安全的?

缓冲区大小已更改

更改缓冲区大小以在 C 中复制文件