v22.7 production release

This commit is contained in:
steveseguin 2022-11-18 13:12:39 -05:00
parent 2bf7451fbe
commit a19f91597f
4 changed files with 53 additions and 1277 deletions

1243
comms.html

File diff suppressed because one or more lines are too long

View File

@ -877,15 +877,12 @@
<li>
Some devices that use hardware encoding can experience video issues; switching to VP8 or VP9 as a <a target='_blank' title='Jump to the documentation' href='https://docs.vdo.ninja/viewers-settings/codec'>codec</a> may help.
</li>
<li>
Audio may drop out in OBS Studio at random times, yet still appear active. Delete the browser source and re-create, or use the <a href="https://github.com/steveseguin/electroncapture">Electron Capture</a> app instead.
</li>
<br />
<h4>
<font style="color:#daad09;">Welcome to VDO Ninja! We've rebranded! Nothing else is changing and we're staying 100% free.</font>
</h4>
<br />
Site updated October 2022. <a target="_blank" href="https://docs.vdo.ninja/releases/v21">v21 release notes</a>. If having new issues, the previous version <a href="https://vdo.ninja/v20/">is here</a>, and the <a href="https://vdo.ninja/beta/">upcoming next version is here</a>. Development <a target="_blank" href='https://updates.vdo.ninja/'>updates are here.</a>
🚀🚀 Site updated November 18th, 2022 to v22. If having new sudden issues, please try clearing your browser's cache, including refreshing the cache within any OBS browser source. You can also still access the previous version, which <a href="https://vdo.ninja/v21/">is hosted here</a>. Development <a target="_blank" href='https://updates.vdo.ninja/'>updates are here.</a>
<br />
<br />
<h3>
@ -2223,7 +2220,7 @@
var session = WebRTC.Media; // session is a required global variable if configuring manually. Run before loading main.js but after webrtc.js.
session.version = "22.6c";
session.version = "22.7"; // nov 18th
session.streamID = session.generateStreamID(); // randomly generates a streamID for this session. You can set your own programmatically if needed
session.defaultPassword = "someEncryptionKey123"; // Change this password if self-deploying for added security/privacy

78
lib.js
View File

@ -3787,6 +3787,8 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
}
if (sceneBitrate){
session.requestRateLimit(sceneBitrate, i);
} else if ((session.screenShareBitrate!==false) && session.rpcs[i].screenShareState){ // session.screenShareBitrate is non-room
session.requestRateLimit(session.screenShareBitrate, i); // well, screw that. Setting it to room quality.
} else {
session.requestRateLimit(-1, i);
}
@ -7767,13 +7769,13 @@ function processStats(UUID){
session.rpcs[UUID].stats['Peer-to-Peer Connection'].remote_candidateType = stat.candidateType;
if (stat.candidateType === "relay"){
if ("relayProtocol" in stat){
session.rpcs[UUID].stats['Peer-to-Peer Connection'].remote_relayProtocol = stat.relayProtocol;
session.rpcs[UUID].stats['Peer-to-Peer Connection'].remote_relay_protocol = stat.relayProtocol;
}
if ("ip" in stat){session.rpcs[UUID].stats['Peer-to-Peer Connection'].remote_relay_IP = stat.ip;}
} else {
try {
delete session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relayIP;
delete session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relayProtocol;
delete session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relay_IP;
delete session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relay_protocol;
} catch(e){}
}
@ -7792,13 +7794,13 @@ function processStats(UUID){
session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_candidateType = stat.candidateType;
if (stat.candidateType === "relay"){
if ("relayProtocol" in stat){
session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relayProtocol = stat.relayProtocol;
session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relay_protocol = stat.relayProtocol;
}
if ("ip" in stat){session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relayIP = stat.ip;}
if ("ip" in stat){session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relay_IP = stat.ip;}
} else {
try {
delete session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relayIP;
delete session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relayProtocol;
delete session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relay_IP;
delete session.rpcs[UUID].stats['Peer-to-Peer Connection'].local_relay_protocol;
} catch(e){}
}
}
@ -8236,7 +8238,7 @@ function printValues(obj) { // see: printViewStats
stat = 'Packet Loss 📶';
value = parseInt(parseFloat(value) * 10000) / 10000.0;
}
else if (key == 'local_relayIP') {
else if (key == 'local_relay_IP') {
value = "<a href='https://whatismyipaddress.com/ip/" + value + "' target='_blank'>" + value + "</a>";
}
else if (key == 'remote_relay_IP') {
@ -8385,13 +8387,13 @@ function processMeshcastStats(UUID){
session.rpcs[UUID].stats['Meshcast Connection'].remote_candidateType = stat.candidateType;
if (stat.candidateType === "relay"){
if ("relayProtocol" in stat){
session.rpcs[UUID].stats['Meshcast Connection'].remote_relayProtocol = stat.relayProtocol;
session.rpcs[UUID].stats['Meshcast Connection'].remote_relay_protocol = stat.relayProtocol;
}
if ("ip" in stat){session.rpcs[UUID].stats['Meshcast Connection'].remote_relay_IP = stat.ip;}
} else {
try {
delete session.rpcs[UUID].stats['Meshcast Connection'].local_relayIP;
delete session.rpcs[UUID].stats['Meshcast Connection'].local_relayProtocol;
delete session.rpcs[UUID].stats['Meshcast Connection'].local_relay_IP;
delete session.rpcs[UUID].stats['Meshcast Connection'].local_relay_protocol;
} catch(e){}
}
@ -8410,13 +8412,13 @@ function processMeshcastStats(UUID){
session.rpcs[UUID].stats['Meshcast Connection'].local_candidateType = stat.candidateType;
if (stat.candidateType === "relay"){
if ("relayProtocol" in stat){
session.rpcs[UUID].stats['Meshcast Connection'].local_relayProtocol = stat.relayProtocol;
session.rpcs[UUID].stats['Meshcast Connection'].local_relay_protocol = stat.relayProtocol;
}
if ("ip" in stat){session.rpcs[UUID].stats['Meshcast Connection'].local_relayIP = stat.ip;}
if ("ip" in stat){session.rpcs[UUID].stats['Meshcast Connection'].local_relay_IP = stat.ip;}
} else {
try {
delete session.rpcs[UUID].stats['Meshcast Connection'].local_relayIP;
delete session.rpcs[UUID].stats['Meshcast Connection'].local_relayProtocol;
delete session.rpcs[UUID].stats['Meshcast Connection'].local_relay_IP;
delete session.rpcs[UUID].stats['Meshcast Connection'].local_relay_protocol;
} catch(e){}
}
}
@ -8648,7 +8650,6 @@ function printMyStats(menu) { // see: setupStatsMenu
if (document.querySelector("select#videoSource3")){
var videoSelect = document.querySelector("select#videoSource3").options;
if (videoSelect.length){
log(videoSelect[videoSelect.selectedIndex].text);
if (videoSelect[videoSelect.selectedIndex].text.startsWith("OBS-Camera")) { // OBS Virtualcam
obscam = true;
} else if (videoSelect[videoSelect.selectedIndex].text.startsWith("OBS Virtual Camera")) { // OBS Virtualcam
@ -8681,18 +8682,25 @@ function printMyStats(menu) { // see: setupStatsMenu
return;
}
for (var key in obj) {
var keys = Object.keys(obj);
keys.forEach(key=>{
if (typeof obj[key] === "object") {
try{
var tmp = key;
tmp = sanitizeChat((tmp));
if (tmp === "info"){
tmp = "Remote Peer Info";
}
menu.innerHTML += "<li><h2 title='" + tmp + "'>" + tmp + "</h2></li>"
} catch(e){}
printViewValues(obj[key]);
menu.innerHTML += "<hr />";
} else {
if (key.startsWith("_")){continue;}
}
});
keys.forEach(key=>{
if (typeof obj[key] !== "object") {
if (key.startsWith("_")){return;}
var stat = sanitizeChat(key);
var value = obj[key];
@ -8700,13 +8708,13 @@ function printMyStats(menu) { // see: setupStatsMenu
value = sanitizeChat((value));
}
if (value === false){continue;}
if (value === false){return;}
if (key == 'useragent') {
value = "<span style='cursor: pointer;' onclick='copyFunction(this.innerText,event);' title='Copy this user-agent to the clipboard' style='cursor:pointer'>"+value+"</span>"
}
if (key == 'local_relayIP') {
if (key == 'local_relay_IP') {
value = "<a href='https://whatismyipaddress.com/ip/" + value + "' target='_blank'>" + value + "</a>";
}
if (key == 'remote_relay_IP') {
@ -8725,7 +8733,7 @@ function printMyStats(menu) { // see: setupStatsMenu
menu.innerHTML += "<li><span>" + stat + "</span><span>" + value + "</span></li>";
}
}
});
}
printViewValues(session.stats);
menu.innerHTML += "<button onclick='session.forcePLI(null,event);' data-translate='send-keyframe-to-viewer'>Send Keyframe to Viewers</button>";
@ -8964,12 +8972,12 @@ function updateLocalStats(){
session.mc.stats.remote_relay_IP = stat.ip;
}
if ("relayProtocol" in stat) {
session.mc.stats.remote_relayProtocol = stat.relayProtocol;
session.mc.stats.remote_relay_protocol = stat.relayProtocol;
}
} else {
try {
delete session.mc.stats.remote_relay_IP;
delete session.mc.stats.remote_relayProtocol;
delete session.mc.stats.remote_relay_protocol;
} catch(e){}
}
}
@ -8979,15 +8987,15 @@ function updateLocalStats(){
if (stat.candidateType === "relay"){
if ("ip" in stat) {
session.mc.stats.local_relayIP = stat.ip;
session.mc.stats.local_relay_IP = stat.ip;
}
if ("relayProtocol" in stat) {
session.mc.stats.local_relayProtocol = stat.relayProtocol;
session.mc.stats.local_relay_protocol = stat.relayProtocol;
}
} else {
try {
delete session.mc.stats.local_relayIP;
delete session.mc.stats.local_relayProtocol;
delete session.mc.stats.local_relay_IP;
delete session.mc.stats.local_relay_protocol;
} catch(e){}
}
@ -9259,12 +9267,12 @@ function updateLocalStats(){
session.pcs[UUID].stats.remote_relay_IP = stat.ip;
}
if ("relayProtocol" in stat) {
session.pcs[UUID].stats.remote_relayProtocol = stat.relayProtocol;
session.pcs[UUID].stats.remote_relay_protocol = stat.relayProtocol;
}
} else {
try {
delete session.pcs[UUID].stats.remote_relay_IP;
delete session.pcs[UUID].stats.remote_relayProtocol;
delete session.pcs[UUID].stats.remote_relay_protocol;
} catch(e){}
}
}
@ -9274,15 +9282,15 @@ function updateLocalStats(){
if (stat.candidateType === "relay"){
if ("ip" in stat) {
session.pcs[UUID].stats.local_relayIP = stat.ip;
session.pcs[UUID].stats.local_relay_IP = stat.ip;
}
if ("relayProtocol" in stat) {
session.pcs[UUID].stats.local_relayProtocol = stat.relayProtocol;
session.pcs[UUID].stats.local_relay_protocol = stat.relayProtocol;
}
} else {
try {
delete session.pcs[UUID].stats.local_relayIP;
delete session.pcs[UUID].stats.local_relayProtocol;
delete session.pcs[UUID].stats.local_relay_IP;
delete session.pcs[UUID].stats.local_relay_protocol;
} catch(e){}
}

File diff suppressed because one or more lines are too long