mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
pikvm/pikvm#1057: web: fixed onremotestream bug if there is no video track
This commit is contained in:
parent
2b0515dc55
commit
68bfb04bb4
@ -220,26 +220,39 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo, __allow_aud
|
|||||||
},
|
},
|
||||||
|
|
||||||
"onremotestream": function(stream) {
|
"onremotestream": function(stream) {
|
||||||
__logInfo("Got a remote stream changes:", stream);
|
let tracks = stream.getTracks();
|
||||||
if (stream.active) {
|
__logInfo("Got a remote stream changes:", stream, tracks);
|
||||||
_Janus.attachMediaStream($("stream-video"), stream);
|
|
||||||
__sendKeyRequired();
|
let has_video = false;
|
||||||
__startInfoInterval();
|
for (let track of tracks) {
|
||||||
// FIXME: Задержка уменьшается, но начинаются заикания на кейфреймах.
|
if (track.kind == "video") {
|
||||||
// - https://github.com/Glimesh/janus-ftl-plugin/issues/101
|
has_video = true;
|
||||||
/*if (__handle && __handle.webrtcStuff && __handle.webrtcStuff.pc) {
|
break;
|
||||||
for (let receiver of __handle.webrtcStuff.pc.getReceivers()) {
|
}
|
||||||
if (receiver.track && receiver.track.kind === "video" && receiver.playoutDelayHint !== undefined) {
|
}
|
||||||
receiver.playoutDelayHint = 0;
|
|
||||||
}
|
if (!has_video && __isOnline()) {
|
||||||
}
|
// Найдено в Windows 11 и Chrome/Edge.
|
||||||
}*/
|
// При перезагрузке целевого хоста браузер мьютит трек,
|
||||||
} else {
|
// приходит стрим без видеотрека и всё умирает.
|
||||||
// В каких-то случаях стрим может иметь флаг active=false,
|
// Связь должна как-то сама восстанавливаться,
|
||||||
// но при этом янус работает. Хз почему.
|
// но этого почему-то не происходит. Костыль решает проблему.
|
||||||
// - https://github.com/pikvm/pikvm/issues/1057
|
|
||||||
__destroyJanus();
|
__destroyJanus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_Janus.attachMediaStream($("stream-video"), stream);
|
||||||
|
__sendKeyRequired();
|
||||||
|
__startInfoInterval();
|
||||||
|
|
||||||
|
// FIXME: Задержка уменьшается, но начинаются заикания на кейфреймах.
|
||||||
|
// - https://github.com/Glimesh/janus-ftl-plugin/issues/101
|
||||||
|
/*if (__handle && __handle.webrtcStuff && __handle.webrtcStuff.pc) {
|
||||||
|
for (let receiver of __handle.webrtcStuff.pc.getReceivers()) {
|
||||||
|
if (receiver.track && receiver.track.kind === "video" && receiver.playoutDelayHint !== undefined) {
|
||||||
|
receiver.playoutDelayHint = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
},
|
},
|
||||||
|
|
||||||
"oncleanup": function() {
|
"oncleanup": function() {
|
||||||
@ -272,7 +285,6 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo, __allow_aud
|
|||||||
|
|
||||||
var __updateInfo = function() {
|
var __updateInfo = function() {
|
||||||
if (__handle !== null) {
|
if (__handle !== null) {
|
||||||
let online = !!(__state && __state.source && __state.source.online);
|
|
||||||
let info = "";
|
let info = "";
|
||||||
if (__handle !== null) {
|
if (__handle !== null) {
|
||||||
// https://wiki.whatwg.org/wiki/Video_Metrics
|
// https://wiki.whatwg.org/wiki/Video_Metrics
|
||||||
@ -290,10 +302,14 @@ export function JanusStreamer(__setActive, __setInactive, __setInfo, __allow_aud
|
|||||||
info = `${__handle.getBitrate()}`.replace("kbits/sec", "kbps");
|
info = `${__handle.getBitrate()}`.replace("kbits/sec", "kbps");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__setInfo(true, online, info);
|
__setInfo(true, __isOnline(), info);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var __isOnline = function() {
|
||||||
|
return !!(__state && __state.source && __state.source.online);
|
||||||
|
};
|
||||||
|
|
||||||
var __sendWatch = function() {
|
var __sendWatch = function() {
|
||||||
if (__handle) {
|
if (__handle) {
|
||||||
__logInfo(`Sending WATCH(audio=${__allow_audio}) + FEATURES ...`);
|
__logInfo(`Sending WATCH(audio=${__allow_audio}) + FEATURES ...`);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user