[英]NodeJS + Websockets + HTML5 video tag and 'streaming'
我正在嘗試使用websocket在<video>
標簽中將大型視頻文件流式傳輸到瀏覽器。
該視頻可以正常播放,但始終會等到下載完整個視頻后再播放,這會導致很大的延遲。 設置autoplay = true
和preload="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.