2017-03-07 127 views
1

我想製作一個直播視頻流。而且,我想使用HLS。HLS使用S3進行流媒體直播 - 這些假設是否正確?

據我所知,HLS實時流只是一個帶有'.m3u8'擴展名的主播放列表文件,它列出了所有要播放的文件。

但是,用於直播的,因爲所有的文件不可用容易,他們是因爲他們進來補充。

我想使用S3現在舉辦這些文件和播放列表文件。

現在,我想更新S3中的播放列表文件。但它實際上將取代現有的播放列表文件,而不是僅僅更新它(根據this answer

所以,我假設在文件替換期間不會有死區。如果有死亡時間,我該如何克服它?這是做到這一點的方式,還是有其他更好的方法來做到這一點。

我正在使用NodeJS服務器,僅供參考。

*沒有文件時的死區時間。

回答

1

我想做一個直播流。而且,我想使用HLS。

爲什麼選擇HLS?爲什麼不DASH? DASH也被分割和實現,幾乎與HLS完全一樣,但是就編解碼器的選擇而言它具有更多的靈活性,而不是。要麼是沒問題,但如果你今天從頭開始,我推薦使用DASH,以及使用媒體源擴展的DASH.js參考播放器代碼。

據我所知,HLS實時流只是一個擴展名爲「.m3u8」的主播放列表文件,其中列出了所有要播放的文件。

正確。

但是,用於直播的,因爲所有的文件不可用容易,他們是因爲他們進來補充。

正確的。

現在,我想更新S3中的播放列表文件。但它實際上將取代現有的播放列表文件,而不是僅更新它

是的,正如其他答案指出的那樣,沒有區別。播放列表文件將被新的完整副本覆蓋。 S3 API不允許附加到文件,除非進行多部分上傳,這實際上不是同一件事。無論如何,直播的播放列表文件無論如何都不會包含每個片段。通常你只保留播放列表中的最後一部分片段,但這取決於你決定要走多遠。

所以,我假設在文件替換期間不會有死區。

在上傳並存儲完整的新對象之前,S3不會替換該對象。永遠不會有部分文件存在的情況。 S3不像普通的文件系統。另外,如果後續上傳失敗,舊對象仍將保留。

HLS和DASH播放器在播放前讀取播放列表並緩衝大量數據。 (這就是爲什麼他們出現了嚴重的延遲問題)。新段上傳並添加到播放列表需要幾秒鐘的時間,因此重要的是他們已經在緩衝區中播放了數據。這就是爲什麼你不必擔心任何退出,除非沒有及時上傳失敗。

我正在使用NodeJS服務器,僅供參考。

是這樣嗎?聽起來你正在使用S3給我...不知道Node.js與這些有什麼關係。

+0

這是一個答案。非常感謝。我從來沒有聽說過這個DASH。看起來很有趣。我會研究它。再次感謝這麼多全面的答案。 –

+0

我正在使用NodeJS訪問S3 API來替換播放列表文件。 –

+1

請注意,iOS不支持Dash,但Dash通常在臺式機上得到更廣泛的支持,因此最終這意味着您需要同時支持Dash。 – duncanwilcox