我们正在创建一个基于Web浏览器的音乐流媒体服务,该服务可以流式传输包含单独的同步音轨的文件。这些文件基本上都是mp4s,但有一些额外的盒子。
按照MPEG-DASH标准进行流式传输,希望不用重新发明轮子(例如,dash.js)。
更新160525 - 添加更多背景资料:
MPEG-DASH是项目的一项要求,包括其功能(适应性,简易服务器设置等)以及我正在使用的项目仅使用MPEG标准。
流式传输本身是静态文件的按需播放,即没有直播。播放将有两种模式;一个只播放曲目的静态模式,以及一个用户可以改变音量,平移等的交互模式。现在,静态播放很好。
现在,流媒体同步的多轨音频似乎并不是最常见的事情,而且我遇到了几个问题:
MPEG-DASH似乎非常关注视频流。
是否有任何关于我无法找到的纯音频流的文档或指南?
AFAIK,<video>
和<audio>
元素一次只支持一个音频轨道。它们通过MediaSource.addSourceBuffer()
提供了大量的魔法,可以对输入缓冲区进行即时解码。
解决这个问题的两种可能方法是:
<audio>
元素并手动同步AudioNode
并手动同步它们。这意味着我们必须处理解码是否有其他或更好的方法来流式传输多个同步音轨?
dash.js参考播放器遵循DASH-AVC / 264指南,根据我的理解,该指南解决了视频流的问题,并将同时播放的音轨数量限制为一个。
它还使用HTML5 <video>
元素,这导致上面的问题。
但它确实包含巨大的数量的DASH相关功能,例如自适应流媒体,MPD清单解析等等。
dash.js是多轨音乐流媒体的最佳选择,还是会成为黑客?
如果我误解了任何事情,我非常乐意回答问题或纠正错误!
答案 0 :(得分:1)
我知道的一些答案:
我将添加一条评论,即除非有您没有提及的要求,否则在客户端组合两个曲目似乎不是一个好主意。使用ffmpeg或类似的媒体服务器工具在服务器端进行混合更有意义,然后您的客户端只需要担心单个流。如果需要同步不同的源流,那么在浏览器中使用JavaScript可能是不现实的。