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.