MediaStream JavaScript

Как можно отправить поток видео на сервер?

Есть данный фрагмент клиента:

var socket = io.connect('http://127.0.0.1:8000/');


function pageOnLoad() {
    startTranslation();
}


function startTranslation() {
    if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
        let video = document.querySelector('#captured-video');
        navigator.mediaDevices.getUserMedia({video: true, audio: true}).then(stream => {
            video.srcObject = stream;
            video.play();
            postVideoToServer(stream);
        });
    }
}


function postVideoToServer(stream) {
    socket.emit('video', {video: stream});
}

И сервера:

var io = socketio(server);

io.on('connection', socket => {
    socket.on('video', video => {
        console.log(video);
    });
});

В итоге video = {video: {}}, то есть пустой объект. Был вариант передать url, но window.URL.createObjectURL(stream); выдаёт TypeError: URL.createObjectURL: Argument 1 is not valid for any of the 1-argument overloads.


Ответы (1 шт):

Автор решения: Максим Вишневский

Вам нужно строку:

window.URL.createObjectURL(stream);

Заменить на:

window.URL.srcObject = stream;

Проблема в том, что createObjectURL для MediaStream имеет статус deprecated.

→ Ссылка