簡體   English   中英

NodeJS + Websockets + HTML5視頻標簽和“流”

[英]NodeJS + Websockets + HTML5 video tag and 'streaming'

我正在嘗試使用websocket在<video>標簽中將大型視頻文件流式傳輸到瀏覽器。

該視頻可以正常播放,但始終會等到下載完整個視頻后再播放,這會導致很大的延遲。 設置autoplay = truepreload="none"似乎對此沒有影響。 因此,我研究了將視頻分塊,然后將其作為Blob URL發送到瀏覽器。 對於分塊,我正在使用Node-Chunking-Streams

到目前為止,我的代碼:

var chunkingStreams = require('chunking-streams');
            var SizeChunker = chunkingStreams.Chunker;

            var input = fs.createReadStream('src-videos/redcliff450.webm'),
                chunker = new SizeChunker({                       
                    chunkSize: 2000000                         
                }),
                output;

            chunker.on('chunkStart', function(id, done) {
                output = fs.createWriteStream('src-videos/output/' + id + '.webm');
                done();
            });

            chunker.on('chunkEnd', function(id, done) { 
                output.end();
                done();
            });

            chunker.on('data', function(chunk) {
                output.write(chunk.data);
            });               


            input.pipe(chunker);

            //test out the video using just the first chunk
            var smallChunk = fs.createReadStream('src-videos/output/0.webm');              
            client.send(smallChunk);

我的計划是將塊減小到足以快速加載的大小(例如〜2MB),然后在客戶端准備就緒時發送下一個。 我的問題是盡管第一個塊(0)僅播放3秒左右,然后才直接跳到結尾並停止。 這發生在Chrome和FF中。

增大塊大小直到將其包含到整個視頻中,仍然只會導致播放前3秒。

如果我直接從VLC中的HDD播放分塊視頻0.webm,則可以正常播放。 如果我從瀏覽器中下載流並在VLC中播放,則僅播放前3秒。 本文介紹了我要通過HTTP執行的操作。 任何人都有websocket的指針嗎?

刪除input.pipe(chunker); 解決了這個。 我不太確定原因,因此將調查原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM