mirror of
https://github.com/eliasstepanik/vdo.ninja.git
synced 2026-01-26 12:59:03 +00:00
Add files via upload
This commit is contained in:
parent
3882583d6c
commit
15030fe123
25
changepass.html
Normal file
25
changepass.html
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<html><body><script>
|
||||||
|
var generateHash = function (str, length=false){
|
||||||
|
var buffer = new TextEncoder("utf-8").encode(str);
|
||||||
|
return crypto.subtle.digest("SHA-256", buffer).then(
|
||||||
|
function (hash) {
|
||||||
|
hash = new Uint8Array(hash);
|
||||||
|
if (length){
|
||||||
|
hash = hash.slice(0, parseInt(parseInt(length)/2));
|
||||||
|
}
|
||||||
|
hash = toHexString(hash);
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
function toHexString(byteArray){
|
||||||
|
return Array.prototype.map.call(byteArray, function(byte){
|
||||||
|
return ('0' + (byte & 0xFF).toString(16)).slice(-2);
|
||||||
|
}).join('');
|
||||||
|
}
|
||||||
|
var password = prompt("Please enter the password");
|
||||||
|
|
||||||
|
generateHash(password + location.hostname, 4).then(function(hash) { // million to one error.
|
||||||
|
alert("hash value: "+hash)
|
||||||
|
});
|
||||||
|
</script></body></html>
|
||||||
@ -509,4 +509,4 @@ function gohere(){
|
|||||||
getPermssions();
|
getPermssions();
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
14
index.html
14
index.html
@ -55,7 +55,7 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css" />
|
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css" />
|
||||||
<link rel="stylesheet" href="./main.css?ver=57" />
|
<link rel="stylesheet" href="./main.css?ver=58" />
|
||||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/adapter.min.js"></script>
|
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/adapter.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body id="main" class="hidden">
|
<body id="main" class="hidden">
|
||||||
@ -167,7 +167,7 @@
|
|||||||
<span
|
<span
|
||||||
id="helpbutton"
|
id="helpbutton"
|
||||||
title="Show Help Info"
|
title="Show Help Info"
|
||||||
onclick="warnUser('For support, please browse https://reddit.com/r/obsninja or join the live chat on Discord at https://discord.obs.ninja.\n\nThe Wiki also contains many help guides and advanced settings, located at https://wiki.obs.ninja.\n\nTo access the video stats menu, hold CTRL (command) and Left-Click on a video. Most video issues can be fixed by using Wired Internet instead of Wi-Fi.')"
|
onclick="warnUser('For support, please browse https://reddit.com/r/obsninja or join the live chat on Discord at https://discord.obs.ninja.\n\nThe documention also contains many guides and advanced settings, located at https://docs.obs.ninja.\n\nTo access the video stats menu, hold CTRL (command) and Left-Click on a video. Most video issues can be fixed by using Wired Internet instead of Wi-Fi.')"
|
||||||
style="cursor: pointer; display:none;"
|
style="cursor: pointer; display:none;"
|
||||||
alt="How to Use This with OBS"
|
alt="How to Use This with OBS"
|
||||||
>
|
>
|
||||||
@ -703,19 +703,19 @@
|
|||||||
</i>
|
</i>
|
||||||
<br />
|
<br />
|
||||||
<li>
|
<li>
|
||||||
If you have <a href="https://github.com/steveseguin/obsninja/wiki/FAQ#video-is-pixelated">"pixel smearing"</a> or corrupted video, try adding <i>&codec=h264</i> or <i>&codec=vp9</i> to the OBS view link. Using Wi-Fi will make the issue worse.
|
If you have <a href="https://docs.obs.ninja/common-errors-and-known-issues/video-is-pixelated">"pixel smearing"</a> or corrupted video, try adding <i>&codec=h264</i> or <i>&codec=vp9</i> to the OBS view link. Using Wi-Fi will make the issue worse.
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
A list of less common issues can <a href="https://github.com/steveseguin/obsninja/wiki/Known-Issues-(browser-bugs-and-more)">be found here</a>.
|
A list of less common issues can <a href="https://docs.obs.ninja/common-errors-and-known-issues/known-issues-browser-bugs-and-more">be found here</a>.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
👓🔆 Site Updated on April 20th: <a href="https://github.com/steveseguin/obsninja/wiki/v17-Release-Notes">v17 Release Notes</a>. The previous version can be found at <a href="https://obs.ninja/v164/">https://obs.ninja/v164/</a> if you are having issues with this minor update.
|
👓🔆 Site Updated on April 20th: <a href="https://docs.obs.ninja/release-notes/v17-release-notes">v17 Release Notes</a>. The previous version can be found at <a href="https://obs.ninja/v164/">https://obs.ninja/v164/</a> if you are having issues with this minor update.
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<h3>
|
<h3>
|
||||||
🛠 For support, see the <a href="https://www.reddit.com/r/OBSNinja/">sub-reddit <i class="lab la-reddit-alien"></i></a> or join the <a href="https://discord.gg/T4xpQVv">Discord <i class="lab la-discord"></i></a>. The <a href="https://github.com/steveseguin/obsninja/wiki/">Wiki is here</a> and my personal email is <i>steve@seguin.email</i>
|
🛠 For support, see the <a href="https://www.reddit.com/r/OBSNinja/">sub-reddit <i class="lab la-reddit-alien"></i></a> or join the <a href="https://discord.gg/T4xpQVv">Discord <i class="lab la-discord"></i></a>. The <a href="https://docs.obs.ninja/">documentation is here</a> and my personal email is <i>steve@seguin.email</i>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
@ -771,7 +771,7 @@
|
|||||||
<li>Adding &showonly=SOME_OBS_VIRTUALCAM to the guest invite links allows for only a single video to be seen by the guests; this can be output of the OBS Virtual Camera for example</li>
|
<li>Adding &showonly=SOME_OBS_VIRTUALCAM to the guest invite links allows for only a single video to be seen by the guests; this can be output of the OBS Virtual Camera for example</li>
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
For advanced URL options and parameters, <a href="https://github.com/steveseguin/obsninja/wiki/Advanced-Settings">see the Wiki.</a>
|
For advanced URL options and parameters, <a href="https://docs.obs.ninja/advanced-settings">see the Documentation.</a>
|
||||||
</font>
|
</font>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
10
main.css
10
main.css
@ -226,7 +226,7 @@ button.white:active {
|
|||||||
text-shadow: 0.05em 0.05em 0px rgba(0,0,0,1);
|
text-shadow: 0.05em 0.05em 0px rgba(0,0,0,1);
|
||||||
width:100%;
|
width:100%;
|
||||||
height:100vh;
|
height:100vh;
|
||||||
z-index: 1;
|
z-index: 6;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
top: 0;
|
top: 0;
|
||||||
@ -2467,14 +2467,6 @@ span#guestTips {
|
|||||||
display: block;
|
display: block;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#iframe_source{
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
margin: auto;
|
|
||||||
border: 10px dashed rgb(64 65 62)
|
|
||||||
}
|
|
||||||
|
|
||||||
#shareScreenGear{
|
#shareScreenGear{
|
||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
||||||
|
|||||||
78
main.js
78
main.js
@ -550,60 +550,8 @@ if (window.obsstudio) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
window.obsstudio.onVisibilityChange = function obsvisibility(visibility){
|
|
||||||
try {
|
|
||||||
log("OBS VISIBILITY:"+visibility);
|
|
||||||
if (session.disableOBS===false){
|
|
||||||
var bundle = {};
|
|
||||||
bundle.sceneUpdate = [];
|
|
||||||
for (var UUID in session.rpcs){
|
|
||||||
if (session.rpcs[UUID].visibility!==visibility){ // only move forward if there is a change; the event likes to double fire you see.
|
|
||||||
|
|
||||||
session.rpcs[UUID].visibility = visibility;
|
|
||||||
var msg = {};
|
|
||||||
msg.visibility = visibility;
|
|
||||||
|
|
||||||
if (session.rpcs[UUID].videoElement.style.display == "none"){ // Flag will be left alone, but message will say its disabled.
|
|
||||||
msg.visibility = false;
|
|
||||||
}
|
|
||||||
if (session.optimize!==false){
|
|
||||||
////////////// bandwidth stuff
|
|
||||||
var bandwidth = parseInt(session.rpcs[UUID].targetBandwidth); // we don't want to change the target bandwidth, as that's still the real goal and are point of reference for reverting this change.
|
|
||||||
log("bandwidth:"+bandwidth);
|
|
||||||
if (visibility==false){ // limit bandwidth if not visible
|
|
||||||
if ((bandwidth > session.optimize) || (bandwidth<0)){ // limit to optimized bitrate
|
|
||||||
bandwidth = session.optimize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (session.rpcs[UUID].bandwidth !== bandwidth){ // bandwidth already set correctly. don't resend.
|
|
||||||
msg.bitrate = bandwidth;
|
|
||||||
if (session.sendRequest(msg, UUID)){
|
|
||||||
session.rpcs[UUID].bandwidth=bandwidth; // this is letting the system know what the actual bandwidth is, even if it isn't the real target.
|
|
||||||
} else {
|
|
||||||
errorlog("Unable to set update OBS Visibility");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
session.sendRequest(msg, UUID);
|
|
||||||
msg.UUID = UUID;
|
|
||||||
bundle.sceneUpdate.push(msg)
|
|
||||||
}
|
|
||||||
///////////////// end bandwidth stuff
|
|
||||||
} else {
|
|
||||||
session.sendRequest(msg, UUID);
|
|
||||||
msg.UUID = UUID;
|
|
||||||
bundle.sceneUpdate.push(msg)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (var UUID in session.rpcs){
|
|
||||||
session.sendRequest(bundle, UUID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (e){errorlog(e)};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
window.onload = function winonLoad() { // This just keeps people from killing the live stream accidentally. Also give me a headsup that the stream is ending
|
window.onload = function winonLoad() { // This just keeps people from killing the live stream accidentally. Also give me a headsup that the stream is ending
|
||||||
window.addEventListener("beforeunload", function(e) {
|
window.addEventListener("beforeunload", function(e) {
|
||||||
try {
|
try {
|
||||||
@ -910,9 +858,13 @@ if (/CriOS/i.test(navigator.userAgent) && (iOS || iPad)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (urlParams.has('tips')){
|
||||||
|
getById("guestTips").style.display="flex";
|
||||||
|
}
|
||||||
|
|
||||||
if (urlParams.has('broadcast') || urlParams.has('bc')) {
|
if (urlParams.has('broadcast') || urlParams.has('bc')) {
|
||||||
log("Broadcast flag set");
|
log("Broadcast flag set");
|
||||||
session.broadcast = urlParams.get('broadcast') || urlParams.get('bc');
|
session.broadcast = urlParams.get('broadcast') || urlParams.get('bc') || null;
|
||||||
//if ((iOS) || (iPad)) {
|
//if ((iOS) || (iPad)) {
|
||||||
// session.nopreview = false;
|
// session.nopreview = false;
|
||||||
//} else {
|
//} else {
|
||||||
@ -942,7 +894,7 @@ if (urlParams.has('showlist')) {
|
|||||||
|
|
||||||
var directorLanding = false;
|
var directorLanding = false;
|
||||||
if (urlParams.has('director') || urlParams.has('dir')) {
|
if (urlParams.has('director') || urlParams.has('dir')) {
|
||||||
directorLanding = urlParams.get('director') || urlParams.get('dir');
|
directorLanding = urlParams.get('director') || urlParams.get('dir') || null;
|
||||||
if (directorLanding === null) {
|
if (directorLanding === null) {
|
||||||
directorLanding = true;
|
directorLanding = true;
|
||||||
} else if (directorLanding.length === 0) {
|
} else if (directorLanding.length === 0) {
|
||||||
@ -2516,6 +2468,7 @@ if (urlParams.has('turn')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else if ((turnstring == "false") || (turnstring == "off") || (turnstring == "0")) { // disable TURN servers
|
} else if ((turnstring == "false") || (turnstring == "off") || (turnstring == "0")) { // disable TURN servers
|
||||||
|
if (!session.configuration){session.configuration={};}
|
||||||
session.configuration = {
|
session.configuration = {
|
||||||
iceServers: [
|
iceServers: [
|
||||||
{ urls: ["stun:stun.l.google.com:19302", "stun:stun4.l.google.com:19302"]} // more than 4 stun+turn servers will cause firefox issues? (2 + 2 for now then)
|
{ urls: ["stun:stun.l.google.com:19302", "stun:stun4.l.google.com:19302"]} // more than 4 stun+turn servers will cause firefox issues? (2 + 2 for now then)
|
||||||
@ -2530,9 +2483,12 @@ if (urlParams.has('turn')) {
|
|||||||
turn.username = turnstring[0]; // myusername
|
turn.username = turnstring[0]; // myusername
|
||||||
turn.credential = turnstring[1]; //mypassword
|
turn.credential = turnstring[1]; //mypassword
|
||||||
turn.urls = [turnstring[2]]; // ["turn:turn.obs.ninja:443"];
|
turn.urls = [turnstring[2]]; // ["turn:turn.obs.ninja:443"];
|
||||||
session.configuration.iceServers = [{
|
session.configuration = {
|
||||||
urls: ["stun:stun.l.google.com:19302", "stun:stun4.l.google.com:19302"]
|
iceServers: [
|
||||||
}];
|
{ urls: ["stun:stun.l.google.com:19302", "stun:stun4.l.google.com:19302"]} // more than 4 stun+turn servers will cause firefox issues? (2 + 2 for now then)
|
||||||
|
],
|
||||||
|
sdpSemantics: 'unified-plan' // future-proofing
|
||||||
|
};
|
||||||
session.configuration.iceServers.push(turn);
|
session.configuration.iceServers.push(turn);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -4373,7 +4329,7 @@ function TFLiteWorker(){
|
|||||||
URL.revokeObjectURL(session.tfliteModule.img.src); // no longer needed, free memory
|
URL.revokeObjectURL(session.tfliteModule.img.src); // no longer needed, free memory
|
||||||
session.tfliteModule.img.ready = true;
|
session.tfliteModule.img.ready = true;
|
||||||
}
|
}
|
||||||
session.tfliteModule.img.src = "./media/bg_sample.jpg";
|
session.tfliteModule.img.src = "./media/bg_sample.webp";
|
||||||
session.tfliteModule.img.ready = false;
|
session.tfliteModule.img.ready = false;
|
||||||
|
|
||||||
console.log('Starting Loop');
|
console.log('Starting Loop');
|
||||||
@ -6686,6 +6642,10 @@ session.publishIFrame = function(iframeURL){
|
|||||||
iframe.allow="autoplay;camera;microphone";
|
iframe.allow="autoplay;camera;microphone";
|
||||||
iframe.allowtransparency="true";
|
iframe.allowtransparency="true";
|
||||||
iframe.allowfullscreen ="true";
|
iframe.allowfullscreen ="true";
|
||||||
|
iframe.style.width="100%";
|
||||||
|
iframe.style.height="100%";
|
||||||
|
iframe.style.margin="auto";
|
||||||
|
iframe.style.border = "10px dashed rgb(64 65 62)";
|
||||||
iframe.src = session.iframeSrc;
|
iframe.src = session.iframeSrc;
|
||||||
iframe.id = "iframe_source"
|
iframe.id = "iframe_source"
|
||||||
session.iframeEle = iframe;
|
session.iframeEle = iframe;
|
||||||
@ -16137,7 +16097,7 @@ function effectsDynamicallyUpdate(event, ele, preview=true){
|
|||||||
}
|
}
|
||||||
} else if (effect === "5"){
|
} else if (effect === "5"){
|
||||||
if (session.tfliteModule.img){
|
if (session.tfliteModule.img){
|
||||||
session.tfliteModule.img.src = "./media/bg_sample.jpg";
|
session.tfliteModule.img.src = "./media/bg_sample.webp";
|
||||||
}
|
}
|
||||||
if ((session.effects<3) || (session.effects>5)){
|
if ((session.effects<3) || (session.effects>5)){
|
||||||
session.effects = 5;
|
session.effects = 5;
|
||||||
|
|||||||
@ -260,11 +260,10 @@
|
|||||||
|
|
||||||
var iframe = document.createElement("iframe");
|
var iframe = document.createElement("iframe");
|
||||||
|
|
||||||
if (urlParams.has('remote') || urlParams.has('rem')) {
|
if (urlParams.has("remote")) {
|
||||||
var remote = urlParams.get('remote') || urlParams.get('rem') || "nosecurity";
|
var remote = urlParams.get("remote");
|
||||||
remote = remote.trim();
|
|
||||||
} else {
|
} else {
|
||||||
var remote = "";
|
var remote="";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (urlParams.has("sid")) {
|
if (urlParams.has("sid")) {
|
||||||
|
|||||||
@ -13,6 +13,10 @@ body {
|
|||||||
background-color: #141926;
|
background-color: #141926;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#add_screen{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
color: white;
|
color: white;
|
||||||
margin: 20px 0px;
|
margin: 20px 0px;
|
||||||
@ -24,6 +28,9 @@ h1 small {
|
|||||||
font-size: 0.5em;
|
font-size: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
video {
|
||||||
|
transform: translate(0px, 0%) !important;
|
||||||
|
}
|
||||||
#explanation {
|
#explanation {
|
||||||
color: white;
|
color: white;
|
||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
|
|||||||
@ -54,6 +54,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function loadIframe() {
|
function loadIframe() {
|
||||||
// this is pretty important if you want to avoid camera permission popup problems. YOu need to load the iFRAME after you load the parent body. A quick solution is like: <body onload=>loadIframe();"> !!!
|
// this is pretty important if you want to avoid camera permission popup problems. YOu need to load the iFRAME after you load the parent body. A quick solution is like: <body onload=>loadIframe();"> !!!
|
||||||
@ -70,6 +72,8 @@
|
|||||||
streamID = urlParams.get("sid");
|
streamID = urlParams.get("sid");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
document.getElementById("remote").innerHTML = "<a style='color:#CCC' href='./monitor?sid="+streamID+"'>Remote Monitoring Link</a><br /><br /><br /><br />";
|
document.getElementById("remote").innerHTML = "<a style='color:#CCC' href='./monitor?sid="+streamID+"'>Remote Monitoring Link</a><br /><br /><br /><br />";
|
||||||
|
|
||||||
var iframe = document.createElement("iframe");
|
var iframe = document.createElement("iframe");
|
||||||
@ -80,7 +84,7 @@
|
|||||||
iframe.allowfullscreen ="true";
|
iframe.allowfullscreen ="true";
|
||||||
|
|
||||||
//iframe.allow = "autoplay";
|
//iframe.allow = "autoplay";
|
||||||
var srcString = "./?push=" + streamID + "&cleanoutput&privacy&speedtest&webcam&audiodevice=0&fullscreen&transparent&remote";
|
var srcString = "./?push=" + streamID + "&cleanoutput&privacy&speedtest&"+testType+"&audiodevice=0&fullscreen&transparent&remote";
|
||||||
|
|
||||||
if (urlParams.has("turn")) {
|
if (urlParams.has("turn")) {
|
||||||
srcString = srcString + "&turn=" + urlParams.get("turn");
|
srcString = srcString + "&turn=" + urlParams.get("turn");
|
||||||
@ -363,10 +367,20 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
</ol>
|
</ol>
|
||||||
|
<div id="screen" style="color: #CCC; margin:10px 0;"><a href="./speedtest?screen" style="color: #CCC;">Test screen-sharing performance here</a></div>
|
||||||
<div id="remote"></div>
|
<div id="remote"></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
var testType= "webcam";
|
||||||
|
if (urlParams.has("screen") || urlParams.has("ss") || urlParams.has("screenshare") || urlParams.has("screentest")) {
|
||||||
|
document.getElementById("screen").innerHTML = '<a href="./speedtest" style="color: #CCC;">Test webcam-streaming performance here</a>';
|
||||||
|
testType = "quality=0&screenshare&css=speedtest.css"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var bitrate = {
|
var bitrate = {
|
||||||
element: "bitrate-graph",
|
element: "bitrate-graph",
|
||||||
data: 0,
|
data: 0,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user