生成 M3U8 HLS 播放列表时,是否应该包含尚不存在的媒体片段?

When generating an M3U8 HLS playlist, should I include media segments which don't exist yet?

我正在为 HLS https://www.rfc-editor.org/rfc/rfc8216

生成 m3u8 媒体播放列表

我是否应该在媒体播放列表中包含每个媒体片段 URL(对于 MPEG-2 传输流文件),然后才能在 URL 处获得数据?或者我应该只包含已完成录制的视频片段,一旦我知道数据已准备好下载,并等待 HLS 客户端重新请求播放列表?

我觉得这个标准在这一点上不是很明确

我注意到对于至少一个 HLS 客户端 (HLS.js),它需要至少一个媒体片段存在于媒体播放列表中,否则它有一个 tizzy。当然,这可能只是一个错误。

作为背景,我播放列表中的媒体片段是 Amazon S3 URLs。当我收到播放列表请求时,我指示另一台机器开始将视频片段上传到 S3。

如果文件不存在,服务器将return 404。大多数玩家会在此时停止。

这样做会违反 HLS 规范第 6.2.1 节[1]:

Any Media Segment that is specified in a Playlist loaded by a client MUST be available for immediate download, or playback errors can occur. Once download starts, its transfer rate SHOULD NOT be constrained by the segment production process.

[1] https://www.rfc-editor.org/rfc/rfc8216#section-6.2.1