У меня есть приложение для Android, которое отправляет поток камеры через веб-просмотр через peerjs (webrtc), веб-приложение в браузере получает видео и передает его.
Все работает, но видео в Интернете слишком медленное, и изображение зависает на некоторое время, прежде чем появится второе изображение...
Есть ли способ сделать разрешение ниже? или буферизовать видео в веб-приложении? или может быть что-то не так с моей реализацией?
Код веб-просмотра Android:
initVideo = function(videoSourceValue) {
var video = document.querySelector('video');
navigator.getUserMedia({video: {optional: [{
sourceId: videoSourceValue
}]
}
},function(stream) {
video.src = window.URL.createObjectURL(stream);
$('#peerId').text("calling : " + SERVER_PEER_ID);
var mediaConnection = peer.call(SERVER_PEER_ID, stream);
mediaConnection.on('stream', function(remoteStream) {
// Show stream in some video/canvas element.
});
},function(e){
console.log('failed',e);
});
}
Веб-часть:
function getVideoStream() {
PEER.on('call', function(call) {
var mediaConnection = navigator.getUserMedia({video: true}, function(stream) {
call.answer(stream); // Answer the call with an A/V stream.
call.on('stream', onReceiveStream);
}, function(err) {
console.log('Failed to get local stream' ,err);
});
});
}
function onReceiveStream(stream){
console.log('received stream');
$('video').prop('src',window.URL.createObjectURL(stream));
}
Спасибо
Обновление 1
Я попытался добавить {reliable : true}
, но проблема осталась.
Я также отправляю данные о местоположении на сервер, и кажется, что видеопотоки и данные о местоположении периодически отправляются вместе (диаграмма в Интернете показывает скорость и движение видео одновременно), но частота кадров слишком низкая.