Add files via upload

This commit is contained in:
Steve Seguin 2021-10-19 22:43:34 -04:00 committed by GitHub
parent 41d9f2fc9a
commit 1f24e6b0a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 61 additions and 41 deletions

View File

@ -67,7 +67,7 @@
<link itemprop="url" href="./media/vdoNinja_logo_full.png" />
</span>
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/CodecsHandler.js?ver=34"></script>
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=326"></script>
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=327"></script>
<input id="zoomSlider" type="range" style="display: none;" />
<div id="header">
@ -740,14 +740,18 @@
Some devices that use H264 hardware encoding can experience video glitching; switching to VP8 or VP9 as a codec can help.
</li>
<li>
Video glitching and random audio-loss can occur when using the OBS browser source. The <a href='https://github.com/steveseguin/electroncapture/blob/master/README.md'>Electron Capture app</a> avoids these issues.
Video glitching and random audio-loss can occur when using the OBS browser source. The <a href='https://github.com/steveseguin/electroncapture/blob/master/README.md' target="_blank">Electron Capture app</a> avoids these issues.
</li>
<li>
Chrome v95 with an AMD GPUs have an issue hardware encoding H264 video; this will be fixed in Chrome v96. <a href='https://bugs.chromium.org/p/chromium/issues/detail?id=1252710' target="_blank">Details here</a>.
</li>
<br />
<h4 style="color:#daad09;">
👋 👀 Welcome to VDO Ninja! We've rebranded! 📼 Nothing else is changing and we're staying 100% free.
</h4>
<br />
🎁 Site updated October 15th (v19.4). The <a href="https://docs.vdo.ninja/release-notes/v19">v19 release notes are here</a>. If new issues occur, the older v18 can be <a href="https://vdo.ninja/v183/">found here</a>.
🎁 Site updated October 19th (v19.4). The <a href="https://docs.vdo.ninja/release-notes/v19">v19 release notes are here</a>. If new issues occur, the older v18 can be <a href="https://vdo.ninja/v183/">found here</a>.
<br />
<br />
@ -1797,25 +1801,18 @@
// session.configuration.iceTransportPolicy = "relay"; // uncomment to enable "&privacy" and force the TURN server
///// Different officially hosted handshake endpoints are available; each isolated from each other.
// session.wss = "wss://wss13.obs.ninja:443"; // US-East (Default)
// session.wss = "wss://apibackup.obs.ninja:443"; // US-West
// session.wss = "wss://jp1wss.obs.ninja:443"; // Japan
// session.wss = "wss://au1wss.obs.ninja:443"; // Australia
// session.wss = "wss://de1wss.obs.ninja:443"; // Germany
// session.wss = "wss://insecure.cam:444"; // China
//////
// session.wss = "wss://api.vdo.ninja:443"; // US-East (Default)
/// If wanting to fully-self-host, uncomment the following and deploy your own websocket server; good for air-gapped deployments
// session.wss = "wss://wss.contribute.cam:443"; // https://github.com/steveseguin/websocket_server
// session.customWSS = true;
//////
/////// Or you can use piesocket.com if you wish to have a basic free websocket server hosted for you by a third-party
//session.customWSS = true; // Set to true to have Piesocket.com
//var apiKey = "ZCu96UFf9ezeQeClK7BOCkq6Q0x0lxWAPJcgxjz5"; // GET YOUR OWN API KEY at piesocket.com, as using this one is a privacy hazard.
//session.wss = "wss://us-nyc-1.websocket.me/v3/1?api_key="+apiKey;
////////////
/// If wanting to fully-self-host, uncomment the following and deploy your own websocket server; good for air-gapped deployments
// session.wss = "wss://wss.yourdomainhere.com:443"; // https://github.com/steveseguin/websocket_server
// session.customWSS = true;
//////
/////// Or you can use piesocket.com if you wish to have a basic free websocket server hosted for you by a third-party
//session.customWSS = true; // Set to true to have Piesocket.com
//var apiKey = "ZCu96UFf9ezeQeClK7BOCkq6Q0x0lxWAPJcgxjz5"; // GET YOUR OWN API KEY at piesocket.com
//session.wss = "wss://us-nyc-1.websocket.me/v3/1?api_key="+apiKey;
////////////
///// The following lets you set the defaults
@ -1838,7 +1835,7 @@
// session.width // int
// session.quality // int -- if setting == 0, then than the default resolution will be 1080p, instead of 720p
// session.sink
// session.offsetChannel /2 int
// session.offsetChannel //2 int
// session.audioChannels // int
// session.security
// session.framerate // int
@ -1849,11 +1846,11 @@
// session.title // "zzzz"
</script>
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/aes.js"></script>
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=202"></script>
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=204"></script>
<!--
// If you wish to change branding, blank offers a good clean start.
<script type="text/javascript" id="main-js" src="./main.js" data-translation="blank"></script>
-->
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=275"></script>
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=277"></script>
</body>
</html>

37
lib.js
View File

@ -5283,23 +5283,36 @@ function directMigrate(ele, event, room=false) { // everyone in the room will ha
if (migrateRoom) {
previousRoom = migrateRoom;
var msg = {};
msg.request = "migrate";
if (session.password) {
return generateHash(migrateRoom + session.password + session.salt, 16).then(function(rid) {
var msg = {};
msg.request = "migrate";
msg.roomid = rid;
msg.target = ele.dataset.UUID;
session.sendMsg(msg); // send to everyone in the room, so they know if they are on air or not.
if (session.director && session.directorUUID && (session.directorUUID !==true)){
msg.migrate = ele.dataset.UUID;
msg.roomid = rid;
session.sendRequest(msg, session.directorUUID);
log(msg);
} else {
msg.request = "migrate";
msg.roomid = rid;
msg.target = ele.dataset.UUID;
session.sendMsg(msg); // send to everyone in the room, so they know if they are on air or not.
}
}).catch(errorlog);
} else {
var msg = {};
msg.request = "migrate";
msg.roomid = migrateRoom;
msg.target = ele.dataset.UUID;
session.sendMsg(msg); // send to everyone in the room, so they know if they are on air or not.
if (session.director && session.directorUUID && (session.directorUUID !==true)){
msg.migrate = ele.dataset.UUID;
msg.roomid = migrateRoom;
session.sendRequest(msg, session.directorUUID);
log(msg);
} else {
msg.request = "migrate";
msg.roomid = migrateRoom;
msg.target = ele.dataset.UUID;
session.sendMsg(msg); // send to everyone in the room, so they know if they are on air or not.
}
}
}
}
@ -6444,7 +6457,7 @@ session.publishIFrame = function(iframeURL){
function outboundAudioPipeline(stream) {
if (session.disableWebAudio) {
if (session.mobile){return stream;} // iOS devices can't remap video tracks, else KABOOM. Might as well do this for android also.
//if (session.mobile){return stream;} // iOS devices can't remap video tracks, else KABOOM. Might as well do this for android also.
var newStream = createMediaStream();
stream.getTracks().forEach(function(track) { // this seems to fix a bug with macbooks.
@ -10860,7 +10873,8 @@ async function grabVideo(quality = 0, eleName = 'previewWebcam', selector = "sel
});
updateRenderOutpipe();
// senderAudioUpdate
if (wasDisabled && !session.videoMuted){
var msg = {};
@ -10912,7 +10926,6 @@ async function grabVideo(quality = 0, eleName = 'previewWebcam', selector = "sel
grabVideoTimer = setTimeout(function(callback3) {
updateRenderOutpipe();
makeImages(true);
if (getById("popupSelector_constraints_loading")) {

View File

@ -15,7 +15,8 @@
--color-mode: light;
--button-radius: 2px;
--myvideo-max-width: min(800px,100vw);
--myvideo-width:800px;
--myvideo-width:unset;
--myvideo-height:auto;
}
* {
@ -1522,7 +1523,7 @@ img {
width: var(--myvideo-width);
max-width: 800px !important;
max-height: 100% !important;
height: auto !important;
height: var(--myvideo-height) !important;
display: block !important;
margin: auto auto !important;
position: relative !important;

13
main.js
View File

@ -141,6 +141,10 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
if (urlParams.has('cleanoutput') || urlParams.has('clean') || urlParams.has('cleanish')) {
session.cleanOutput = true;
}
if (urlParams.has('cleanviewer') || urlParams.has('cv')) {
session.cleanViewer = true;
}
if (urlParams.has('retrytimeout')) {
session.retryTimeout = parseInt(urlParams.get('retrytimeout'));
@ -507,6 +511,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
document.documentElement.style.setProperty('--fit-style', 'cover');
document.documentElement.style.setProperty('--myvideo-max-width', '100vw');
document.documentElement.style.setProperty('--myvideo-width', '100vw');
document.documentElement.style.setProperty('--myvideo-height', '100vh');
}
if (urlParams.has('record')) {
@ -1031,8 +1036,6 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
session.micDelay = parseInt(session.micDelay) || 0;
session.disableWebAudio = false;
}
if (urlParams.has('tips')){
getById("guestTips").style.display="flex";
@ -2262,6 +2265,12 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
}
}
if (session.cleanViewer){
if (session.view && !session.director && session.permaid===false){
session.cleanOutput = true;
}
}
if (urlParams.has('hidescreenshare') || urlParams.has('hidess') || urlParams.has('sshide') || urlParams.has('screensharehide')) { // this way I don't need to remember what it's called. I can just guess. :D
session.screenShareElementHidden = true;
}

File diff suppressed because one or more lines are too long