嘿,我試圖讓HLS流在站點/應用程序我使用Node.js的,JavaScript的,HTML建設工作...HLS流式工作不
我用這確切的代碼片段在這裏 -
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
<video id="video"></video>
<script>
if(Hls.isSupported()) {
var video = document.getElementById('video');
var hls = new Hls();
hls.loadSource('https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8');
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED,function() {
video.play();
});
}
</script>
時,我只加載它在一個正常的HTML頁面粘貼偉大的工程..
然而,我的網頁上,我有一個空白的身體加載HTML頁面部分,除了這幾行 -
<script type='text/javascript' src="/inc/js/veud/createServerWsConnection.js"></script>
<script src="inc/js/veud/registerWsHandlers.js"></script>
<script>
var ws = createWebSocket();
registerHandlers(ws);
</script>
<script src ="https://cdn.jsdelivr.net/npm/[email protected]"></script>
它創建一個websocket連接,並從包含div部分的服務器接收一條消息,然後將該消息附加到主體的末尾。
當發生這種情況時,hls應用程序無法加載,但沒有流式視頻可用,但是,如果我加載了一個完全相同的HTML測試HTML頁面,而div部分剛剛已經寫在HTML代碼中一開始,不是通過websocket發送div部分,然後在瀏覽器頁面加載後追加它,然後它完美地工作。
即使頁面的HTML代碼看起來與檢查完全相同,Hls當包含上述第一個代碼的div部分在從websocket消息接收後附加到Html頁面時,應用程序/流視頻不工作。
可能H1在瀏覽器最初訪問網站之後,它是否被添加到Html文檔中,因此不會被激活?我是否需要進行某種重繪/刷新以使其加載?
我知道HLS不會因爲某些原因而重新加載,因爲當HLS工作並檢查Html時,它會在HLS加載的視頻選項卡下爲網站的HTML添加一些內容,從而增加了一個不存在的src之前,所以像
<video id="video"></video>
成爲
<video id="video" src="blob:http://172.30.204.207/1d2771a3-f86d-42ed-bec7-794b4a4a4770"></video>
發生這種情況時,我把HLS代碼在測試HTML文件並加載它這樣的,但是當HLS視頻對象/腳本部分被添加到div部分通過websocket發送並附加到頁面在客戶端請求頁面之後,src =「blob:...」部分不會自動添加到HTML中,這讓我認爲出於某種原因,HLS在客戶端請求頁面後追加到頁面時不會加載..
任何方式我可以刷新頁面,使其工作或強制它加載div部分後添加應用程序?
這種卡在這裏,所以任何幫助,非常感謝。
耶做這樣的說法沒有似乎對任何工作,因爲當我通過包含代碼的媒體部分發送的DIV部分,即使我只是把如果(HLS。isSupported(){後跟一個日誌語句沒有任何記錄,所以它似乎是以編程方式向頁面添加一個新的視頻對象,而不是從一開始就與Hls工作?所以我唯一的選擇是使用iframe加載其上有Hls代碼的另一個html頁面?這似乎是工作,但.. – Chase
不,這應該工作。你不是通過動態發送JS,是嗎? – Brad