我正在开发一个需要流式传输和同步多个音频文件的 Web 应用程序。为此,由于定时音频的重要性,我在 HTML5 音频标签上使用Web 音频 API 。
目前,我正在使用 FFMPEG 的分割功能将音频文件编码和分割成更小的块。我对它们进行分段的原因是我可以从文件中间开始流式传输,而不是从头开始(否则我会使用 UNIX 拆分来拆分文件,如此处所示。问题是当我将音频片段重新组合在一起,我得到片段之间的音频弹出。
如果我在 .wav 文件中使用 PCM 编码 (pcm_s24le) 对片段进行编码,则播放是无缝的,这让我相信编码器正在填充文件的开头或结尾。由于我将处理许多不同的音频文件,因此使用 .wav 将需要太多带宽。
我正在寻找以下解决方案之一:
- 如何无缝分割编码的音频文件,
- 如何强制编码器不使用 ffmpeg(或其他实用程序)填充音频帧,或者
- 在不使用音频标签的情况下,有什么更好的方式来流式传输音频(从任意轨道时间开始)?
系统信息
- 自定义 node.js 服务器
- 上传音频文件后,node.js 将数据通过管道传输到 ffmpeg 的编码器中
- 需要使用 HTML5 Web Audio API 支持的编码
- 服务器通过 WebSockets 套接字一次发送 1 个音频块
提前致谢。我试图尽可能清楚,但如果您需要澄清,我非常愿意提供。