我想做一個直播流。而且,我想使用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