我想从服务器上的固定HTTP端点流式传输mp3音频文件的播放列表,例如http://localhost/stream.mp3。我正在动态生成许多mp3文件,因此在设置此固定端点时,我还没有要播放的音频文件的完整列表。
有没有一种方法可以生成这种固定的流终结点,并从一个文件开始,然后在我继续生成其余文件时将其余文件排入队列?我正在使用NodeJS / Express作为我的Web服务器,并使用FFMPEG生成音频文件。
答案 0 :(得分:1)
在服务器端,您可以将mp3文件添加到目录中,并将其作为静态文件使用。
在客户端,您可以让客户端在服务器上轮询添加的新mp3的目录,或者在服务器上创建一个API,该API将返回新添加的mp3的URL列表。然后,客户可以根据命名约定或日期等顺序播放它们。
您还可以使用m3u播放列表,并将给定时间存在的所有mp3都添加到播放列表中。当特定的mp3即将播放完毕时,您可以重新加载m3u播放列表,其中也会包含所有最新的播放列表。
这确实涉及必须再次请求播放列表,但这是一个很小的文件。 HLS和DASH视频流可以使用类似的Live方法。
将单个mp3文件作为源并在工作时动态地向其中添加新的mp3会很棘手,因为每个mp3都有一个标头。这些标头可能具有不同的比特率和时序信息,因此您不能仅仅删除它们。有一些工具可以让您在服务器端连接mp3(例如http://mp3wrap.sourceforge.net),然后可以找出正确的位置为播放器提供下一个字节范围,但值得100%确保上面的其他技术对您不起作用,因为它们可能会容易得多。