2

我遇到了使用 Web Audio API 播放原始 PCM 数据的问题。我通过 Web 套接字接收原始 PCM 数据并创建缓冲区并使用 AudioContext.createBufferSource 将它们排队。PCM 数据是正确的,但音频的计时已关闭。

在接收函数中,我缓冲直到我有大约 1 秒的音频,然后播放它。后续接收一旦进入就会排队。这确保音频块在播放器到达该时间之前排队。这是排队功能: http: //pastebin.com/KXn6kEYw

以下是显示音频块在前一个块完成播放之前处理的示例输出:

当前时间:2.449705215419501
 持续时间:0.7964172335600908
 播放于:2.499705215419501 结束于:3.2961224489795917

 当前时间:2.9257142857142857
 持续时间:0.58
 播放于:3.2961224489795917 结束于:3.876122448979592

 当前时间:3.3436734693877552
 持续时间:0.58
 播放于:3.876122448979592 结束于:4.456122448979592

 当前时间:3.645532879818594
 持续时间:0.58
 播放于:4.456122448979592 结束于:5.036122448979592

 当前时间:3.982222222222222
 持续时间:0.58
 播放于:5.036122448979592 结束于:5.616122448979592

以下是断断续续的音频示例:http: //protological.com/plfiles/choppy.mp3

似乎所有音频数据都在播放,只是片段之间有间隙

有趣的一件事是音频中的间隙与音频块的时间长度大致相同。较小的片段具有较小的间隙,几乎就像音频播放持续时间的 2 倍一样。

4

0 回答 0