gpt4 book ai didi

c++ - openAL - 播放缓冲区时声音断断续续

转载 作者:行者123 更新时间:2023-11-28 08:20:50 25 4
gpt4 key购买 nike

我有一个接收 rtp 数据包的语音聊天(每个数据包包含 20ms 的语音 afaik),将它们添加到缓冲区并播放。

如果我在缓冲数据包后直接调用 alSourcePlay()(我有 5 个缓冲区,每个缓冲区得到一个数据包,然后在播放数据包后重新使用),声音会“断断续续”,因为它会播放在另一个数据包到达之前从缓冲区中取出。

我的问题是,您如何处理这个问题,以免音频播放时断断续续?

最佳答案

如果您平均每分钟收到的 20 毫秒数据包少于 50 个,那么一定会有暂停。如果您在播放之前将数据包存储了一段时间,那么您可以寻找自然停顿(静音)并将间隙与自然停顿结合起来,这样听起来会更自然。存储的越多,播放效果越好,但存储太多,延迟会变得不愉快。

您需要的缓冲量取决于个人喜好。哪一个更难看,是断断续续的声音还是延迟的响应。我猜你必须将它设计成一个变量,然后尝试找到“快乐的媒介”

如果您每秒最多 10 个数据包,那么可以采用一个更简单的方案:在每个数据包之间放置 4 毫秒的延迟,这应该是检测不到的。运行 1 秒。查看累积了多少个数据包(如果只发送 40 个数据包,则为零)调整数据包间延迟以进行补偿。继续。

关于c++ - openAL - 播放缓冲区时声音断断续续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5899149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com