Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Web音频播放PCM流块时发出的断断续续的声音_Javascript_Html_Audio_Audiocontext - Fatal编程技术网

Javascript Web音频播放PCM流块时发出的断断续续的声音

Javascript Web音频播放PCM流块时发出的断断续续的声音,javascript,html,audio,audiocontext,Javascript,Html,Audio,Audiocontext,我遇到了使用Web音频API播放原始PCM数据的问题。我通过web套接字接收原始PCM数据,创建缓冲区,并使用AudioContext.createBufferSource将其排队。PCM数据正确,但音频正时关闭 在接收功能中,我缓冲直到我有大约1秒的音频,然后播放它。随后的接收一进来就排队。这可以确保音频块在播放器到达该时间之前排队。以下是排队功能: 下面是一个示例输出,显示音频块在前一个块播放完成之前被处理: Current time: 2.449705215419501 Duration

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

在接收功能中,我缓冲直到我有大约1秒的音频,然后播放它。随后的接收一进来就排队。这可以确保音频块在播放器到达该时间之前排队。以下是排队功能:

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

Current time: 2.449705215419501 Duration: 0.7964172335600908 Play at: 2.499705215419501 End at: 3.2961224489795917 Current time: 2.9257142857142857 Duration: 0.58 Play at: 3.2961224489795917 End at: 3.876122448979592 Current time: 3.3436734693877552 Duration: 0.58 Play at: 3.876122448979592 End at: 4.456122448979592 Current time: 3.645532879818594 Duration: 0.58 Play at: 4.456122448979592 End at: 5.036122448979592 Current time: 3.982222222222222 Duration: 0.58 Play at: 5.036122448979592 End at: 5.616122448979592 当前时间:2.4497052154019501 持续时间:0.7964172335600908 比赛时间:2.4997052159501结束时间:3.2961224489795917 当前时间:2.9257142857142857 持续时间:0.58 播放时间:3.2961224489795917结束时间:3.876122448979592 当前时间:3.3436734693877552 持续时间:0.58 播放时间:3.876122448979592结束时间:4.45612448979592 当前时间:3.645532879818594 持续时间:0.58 播放时间:4.45612244897992结束时间:5.036122448979592 当前时间:3.9822222 持续时间:0.58 播放时间:5.036122448979592结束时间:5.616122448979592 下面是一个起伏的音频示例:

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


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

错误出现在PCM处理中,而不是Web音频API中。PCM数据的长度是16位,因此,缓冲区的长度实际上是2*个样本。我在做一个缓冲区,长度是2倍。发布的音频播放功能正常工作。当播放不同的片段时,会有一些轻微的静电,但不会有起伏