我想做一个直播流。而且,我想使用HLS。
为什么选择HLS?为什么不DASH? DASH也被分割和实现,几乎与HLS完全一样,但是就编解码器的选择而言它具有更多的灵活性,而不是。要么是没问题,但如果你今天从头开始,我推荐使用DASH,以及使用媒体源扩展的DASH.js参考播放器代码。
据我所知,HLS实时流只是一个扩展名为“.m3u8”的主播放列表文件,其中列出了所有要播放的文件。
正确。
但是,用于直播的,因为所有的文件不可用容易,他们是因为他们进来补充。
正确的。
现在,我想更新S3中的播放列表文件。但它实际上将取代现有的播放列表文件,而不是仅更新它
是的,正如其他答案指出的那样,没有区别。播放列表文件将被新的完整副本覆盖。 S3 API不允许附加到文件,除非进行多部分上传,这实际上不是同一件事。无论如何,直播的播放列表文件无论如何都不会包含每个片段。通常你只保留播放列表中的最后一部分片段,但这取决于你决定要走多远。
所以,我假设在文件替换期间不会有死区。
在上传并存储完整的新对象之前,S3不会替换该对象。永远不会有部分文件存在的情况。 S3不像普通的文件系统。另外,如果后续上传失败,旧对象仍将保留。
HLS和DASH播放器在播放前读取播放列表并缓冲大量数据。 (这就是为什么他们出现了严重的延迟问题)。新段上传并添加到播放列表需要几秒钟的时间,因此重要的是他们已经在缓冲区中播放了数据。这就是为什么你不必担心任何退出,除非没有及时上传失败。
我正在使用NodeJS服务器,仅供参考。
是这样吗?听起来你正在使用S3给我...不知道Node.js与这些有什么关系。
这是一个答案。非常感谢。我从来没有听说过这个DASH。看起来很有趣。我会研究它。再次感谢这么多全面的答案。 –
我正在使用NodeJS访问S3 API来替换播放列表文件。 –
请注意,iOS不支持Dash,但Dash通常在台式机上得到更广泛的支持,因此最终这意味着您需要同时支持Dash。 – duncanwilcox