将 PCM 数据附加到 MediaSource

Appending PCM data to a MediaSource

所以我有一个网络应用程序使用 Google 的 Shaka player for video playback. It uses the MediaSource API 来流式传输音频和视频片段。

我想对音轨的原始 PCM 数据进行一些音频处理。我看到它以 .mp4 格式获取音频片段,然后以 ArrayBuffer 的形式将它们附加到 SourceBuffer,然后将其附加到 MediaSource 并播放。有什么方法可以劫持这个流,将数据解码为 PCM,进行一些处理,然后将我处理过的 PCM 通过管道返回到 SourceBuffer?我看到有 AudioContext.decodeAudioData API for getting segments from .mp4 to PCM, but this returns an AudioBufferSourceNode 和 AudioBuffer,它们不能附加到我的常规 SourceBuffer。有什么办法可以解决这个问题吗?

我想我可以将我的 PCM 数据重新编码回 .mp4,但这似乎是一种巨大的浪费。

在Chrome64中你可以定义你自己的AudioWorkletProcessor, and use it for AudioWorkletNode实例化。

请参阅 AudioWorklet Examples 以获取更多参考。