我有一个实时的,恒定的波形数据源,可为我提供每秒一秒钟的采样率恒定的单通道音频。目前,我以这种方式播放它们:
// data : Float32Array, context: AudioContext
function audioChunkReceived (context, data, sample_rate) {
var audioBuffer = context.createBuffer(2, data.length, sample_rate);
audioBuffer.getChannelData(0).set(data);
var source = context.createBufferSource(); // creates a sound source
source.buffer = audioBuffer;
source.connect(context.destination);
source.start(0);
}
Run Code Online (Sandbox Code Playgroud)
音频可以正常播放,但是在连续播放的块之间有明显的暂停(如预期)。我想摆脱它们,而且我知道我必须引入某种缓冲。
问题:
我有一个恒定的 Base64 编码 jpg 文件源,大约每秒 1-5 个图像,创建一个简单的视频流。它们是这样的:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
Run Code Online (Sandbox Code Playgroud)
将它们输入到 img 元素的 src 属性中会在后台触发由浏览器缓存的请求:
由于每个帧都被缓存,我的应用程序会在短时间内填充浏览器缓存。
* 我尝试使用jpg.js将原始二进制 jpg 数据解码为原始像素并将它们渲染在 Canvas 上,但这在时间和 CPU 消耗方面成本太高