У меня возникли трудности с потоковым видеофайлом с socket.io и узлом. Мой видеофайл находится на моем сервере, и я использую модуль fs, чтобы прочитать его в readStream. Я им передаю куски данных в медиа-источник на стороне клиента, который загружается в тег видео html 5.Потоковое видео с гнездом io
Хотя клиент получает куски (я регистрирую их), и я добавляю куски в буфер источника мультимедиа, в теге видео ничего не отображается.
Кто-нибудь знает, как это исправить?
Вот мой код:
стороне клиента:
var mediaSource = new MediaSource();
var mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
document.getElementById('video').src = window.URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', function(event) {
var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
console.log(sourceBuffer);
socket.on('chunk', function (data) {
if(!sourceBuffer.updating){
sourceBuffer.appendBuffer(data);
console.log(data);
}
});
socket.emit('go',{})
});
стороне сервера: вар поток = fs.createReadStream (window.currentvidpath);
socket.on('go', function(){
console.log('WENT');
stream.addListener('data',function(data){
console.log('VIDDATA',data);
socket.emit('chunk',data);
})
})
Большое спасибо.
Вы уверены, что куски не приходят как Base64? Я предполагаю, что поскольку socket.io использует JSON, что любые двоичные данные будут закодированы перед отправкой ... но я мог бы смешивать вещи. Вы должны проверить. – Myst
@Myst - webSocket и socket.io имеют двоичные режимы, если они установлены таким образом. – jfriend00
@ jfriend00, Приятно знать. Тем не менее, я не видел этого в коде сервера, который опубликовал OP ... Если сервер настроен таким образом, это, вероятно, лучше, так как Base64 увеличивает накладные расходы (кодирование, декодирование и пропускную способность). – Myst