Merge pull request #876 from steveseguin/v18.3beta

v18.3 Release
This commit is contained in:
Steve Seguin 2021-07-09 02:39:20 -04:00 committed by GitHub
commit 922a7f7965
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 74946 additions and 18300 deletions

View File

@ -1,230 +1,235 @@
<head>
<link rel="stylesheet" href="./main.css?ver=39" />
<style>
.container {
max-width: 80%;
width: fit-content;
margin: 0 auto;
}
h1 {
margin-top: 1em;
margin-bottom: 1em;
padding: 10px;
}
.card {
margin: 10px;
box-shadow: 0 4px 8px 0 rgb(0 0 0 / 10%);
background-color: #ddd;
color: black;
margin-bottom: 1.5em;
}
.card>div {
padding: 10px;
}
.card h2 {
font-size: 1.5em;
padding: 10px;
background-color: #457b9d;
color: white;
border-bottom: 2px solid #3b6a87;
}
small {
font-style: italic;
display: block;
margin-left: 1em;
}
span.warning {
color: rgb(212, 191, 0);
}
input {
padding: 10px;
}
video {
max-width: 640px;
max-height: 360px;
padding: 20px;
}
audio {
max-width: 640px;
max-height: 360px;
padding: 20px;
}
div#processing {
display: none;
justify-content: center;
place-items: center;
position: absolute;
inset: 0;
font-size: 1.5em;
font-weight: bold;
background: #141926;
flex-direction: column;
}
</style>
</head>
<body style='color:white'>
<div id="header">
<a id="logoname" href="./" style="text-decoration: none; color: white; margin: 2px">
<span data-translate="logo-header">
<font id="qos">V</font>DO.Ninja
</span>
</a>
</div>
<div class="container">
<div id="info">
<h1>Web-based Media Conversion Tools</h1>
<div class="card">
<h2>WebM to MP4 (fixed 1280x720 resolution) <span class='warning'>(very slow!)</span></h2>
<div>
<small>The same as: fmpeg -i input.webm -vf scale=1280:720 output.mp4</small>
<input type="file" id="uploader" title="Convert WebM to MP4">
</div>
</div>
<div class="card">
<h2>MKV to MP4 (no transcoding)</h2>
<div>
<small>The same as: fmpeg -i INPUTFILE -vcodec copy -acodec copy output.mp4</small>
<input type="file" id="uploader2" accept=".mkv" title="Convert MKV to MP4">
</div>
</div>
<div class="card">
<h2>WebM MP4 files (no transcoding, attempts to force high resolutions)</h2>
<div>
<input type="file" id="uploader3" accept=".webm" title="Convert WebM to MP4">
</div>
</div>
<div class="card">
<h2>WebM to Audio-only files (opus or wav)</h2>
<div>
<input type="file" id="uploader4" accept=".webm" title="Convert WebM to OPUS">
</div>
</div>
<div id="processing">
<span id="message"></span>
<video id="player" controls style="display:none"></video>
<audio id="player2" controls style="display:none"></audio>
</div>
</div>
<script src="https://unpkg.com/@ffmpeg/ffmpeg@0.9.6/dist/ffmpeg.min.js"></script>
<script>
function download(data, filename) {
const blob = new Blob([data.buffer]);
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
setTimeout(() => {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
}
const { createFFmpeg, fetchFile } = FFmpeg;
const ffmpeg = createFFmpeg({ log: true });
const transcode = async ({ target: { files } }) => {
const { name } = files[0];
document.getElementById('uploader').style.display = "none";
document.getElementById('uploader2').style.display = "none";
document.getElementById('uploader3').style.display = "none";
document.getElementById('message').innerText = "Transcoding file... this will take a while";
document.getElementById('processing').style.display = 'flex';
await ffmpeg.load();
ffmpeg.FS('writeFile', name, await fetchFile(files[0]));
await ffmpeg.run('-i', name, '-vf', 'scale=1280:720', 'output.mp4');
const data = ffmpeg.FS('readFile', 'output.mp4');
const video = document.getElementById('player');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
video.style.display = "block";
document.getElementById('message').innerText = "Operation Done. Play video or download it.";
}
const transmux = async ({ target: { files } }) => {
const { name } = files[0];
document.getElementById('uploader').style.display = "none";
document.getElementById('uploader2').style.display = "none";
document.getElementById('uploader3').style.display = "none";
document.getElementById('message').innerText = "Transcoding file... this will take a while";
document.getElementById('processing').style.display = 'flex';
await ffmpeg.load();
ffmpeg.FS('writeFile', name, await fetchFile(files[0]));
await ffmpeg.run('-i', name, '-vcodec', 'copy', '-acodec', 'copy', 'output.mp4');
const data = ffmpeg.FS('readFile', 'output.mp4');
const video = document.getElementById('player');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
video.style.display = "block";
document.getElementById('message').innerText = "Operation Done. Play video or download it.";
}
const force1080 = async ({ target: { files } }) => {
const { name } = files[0];
const sourceBuffer = await fetch("./media/cap.webm").then(r => r.arrayBuffer());
document.getElementById('uploader').style.display = "none";
document.getElementById('uploader2').style.display = "none";
document.getElementById('uploader3').style.display = "none";
document.getElementById('message').innerText = "Tweaking file... this will take a moment";
document.getElementById('processing').style.display = 'flex';
await ffmpeg.load();
ffmpeg.FS('writeFile', name, await fetchFile(files[0]));
ffmpeg.FS("writeFile", "cap.webm", new Uint8Array(sourceBuffer, 0, sourceBuffer.byteLength));
await ffmpeg.run("-i", "concat:cap.webm|" + name, "-safe", "0", "-c", "copy", "-avoid_negative_ts", "1", "-strict", "experimental", "output.mp4");
const data = ffmpeg.FS('readFile', 'output.mp4');
const video = document.getElementById('player');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
video.style.display = "block";
document.getElementById('message').innerText = "Operation Done. Play video or download it.";
document.getElementById('processing').style.display = 'flex';
}
const convertToAudioOnly = async ({ target: { files } }) => {
const { name } = files[0];
document.getElementById('message').innerText = "Transcoding file... this will take a while";
document.getElementById('processing').style.display = 'flex';
await ffmpeg.load();
ffmpeg.FS('writeFile', name, await fetchFile(files[0]));
const video = document.getElementById('player');
await ffmpeg.run('-i', name, '-vn', '-acodec', 'copy', 'output.opus');
const data = ffmpeg.FS('readFile', 'output.opus');
console.log(data.buffer.byteLength);
if (data.buffer.byteLength) {
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'audio/opus' }));
download(data, name.split(".")[0] + ".opus");
} else {
await ffmpeg.run('-i', name, '-vn', '-acodec', 'copy', 'output.wav');
const data2 = ffmpeg.FS('readFile', 'output.wav');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'audio/pcm' }));
download(data2, name.split(".")[0] + ".wav");
}
video.style.display = "block";
document.getElementById('message').innerText = "Operation Done. Play audio or download it.";
document.getElementById('processing').style.display = 'flex';
}
document.getElementById('uploader').addEventListener('change', transcode);
document.getElementById('uploader2').addEventListener('change', transmux);
document.getElementById('uploader3').addEventListener('change', force1080);
document.getElementById('uploader4').addEventListener('change', convertToAudioOnly);
</script>
<head>
<link rel="stylesheet" href="./main.css?ver=40" />
<style>
.container {
max-width: 80%;
width: fit-content;
margin: 0 auto;
}
h1 {
margin-top: 1em;
margin-bottom: 1em;
padding: 10px;
}
.card {
margin: 10px;
box-shadow: 0 4px 8px 0 rgb(0 0 0 / 10%);
background-color: #ddd;
color: black;
margin-bottom: 1.5em;
}
.card>div {
padding: 10px;
}
.card h2 {
font-size: 1.5em;
padding: 10px;
background-color: #457b9d;
color: white;
border-bottom: 2px solid #3b6a87;
}
small {
font-style: italic;
display: block;
margin-left: 1em;
}
span.warning {
color: rgb(212, 191, 0);
}
input {
padding: 10px;
}
video {
max-width: 640px;
max-height: 360px;
padding: 20px;
}
audio {
max-width: 640px;
max-height: 360px;
padding: 20px;
}
div#processing {
display: none;
justify-content: center;
place-items: center;
position: absolute;
inset: 0;
font-size: 1.5em;
font-weight: bold;
background: #141926;
flex-direction: column;
}
</style>
</head>
<body style='color:white'>
<div id="header">
<a id="logoname" href="./" style="text-decoration: none; color: white; margin: 2px">
<span data-translate="logo-header">
<font id="qos">V</font>DO.Ninja
</span>
</a>
</div>
<div class="container">
<div id="info">
<h1>Web-based Media Conversion Tools</h1>
<div class="card">
<h2>WebM to MP4 (fixed 1280x720 resolution) <span class='warning'>(very slow!)</span></h2>
<div>
<small>The same as: fmpeg -i input.webm -vf scale=1280:720 output.mp4</small>
<input type="file" id="uploader" title="Convert WebM to MP4">
</div>
</div>
<div class="card">
<h2>MKV to MP4 (no transcoding)</h2>
<div>
<small>The same as: fmpeg -i INPUTFILE -vcodec copy -acodec copy output.mp4</small>
<input type="file" id="uploader2" accept=".mkv" title="Convert MKV to MP4">
</div>
</div>
<div class="card">
<h2>WebM MP4 files (no transcoding, attempts to force high resolutions)</h2>
<div>
<input type="file" id="uploader3" accept=".webm" title="Convert WebM to MP4">
</div>
</div>
<div class="card">
<h2>WebM to Audio-only files (opus or wav)</h2>
<div>
<input type="file" id="uploader4" accept=".webm" title="Convert WebM to OPUS">
</div>
</div>
<div id="processing">
<span id="message"></span>
<video id="player" controls style="display:none"></video>
<audio id="player2" controls style="display:none"></audio>
</div>
</div>
<script>
if (window.location.hostname.indexOf("vdo.ninja") == 0) {
window.location = window.location.href.replace("vdo.ninja","isolated.vdo.ninja"); // FFMPEG requires an isolated domain.
}
</script>
<script src="./thirdparty/ffmpeg.min.js"></script>
<script>
function download(data, filename) {
const blob = new Blob([data.buffer]);
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
setTimeout(() => {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
}
const { createFFmpeg, fetchFile } = FFmpeg;
const ffmpeg = createFFmpeg({ log: true });
const transcode = async ({ target: { files } }) => {
const { name } = files[0];
document.getElementById('uploader').style.display = "none";
document.getElementById('uploader2').style.display = "none";
document.getElementById('uploader3').style.display = "none";
document.getElementById('message').innerText = "Transcoding file... this will take a while";
document.getElementById('processing').style.display = 'flex';
await ffmpeg.load();
ffmpeg.FS('writeFile', name, await fetchFile(files[0]));
await ffmpeg.run('-i', name, '-vf', 'scale=1280:720', 'output.mp4');
const data = ffmpeg.FS('readFile', 'output.mp4');
const video = document.getElementById('player');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
video.style.display = "block";
document.getElementById('message').innerText = "Operation Done. Play video or download it.";
}
const transmux = async ({ target: { files } }) => {
const { name } = files[0];
document.getElementById('uploader').style.display = "none";
document.getElementById('uploader2').style.display = "none";
document.getElementById('uploader3').style.display = "none";
document.getElementById('message').innerText = "Transcoding file... this will take a while";
document.getElementById('processing').style.display = 'flex';
await ffmpeg.load();
ffmpeg.FS('writeFile', name, await fetchFile(files[0]));
await ffmpeg.run('-i', name, '-vcodec', 'copy', '-acodec', 'copy', 'output.mp4');
const data = ffmpeg.FS('readFile', 'output.mp4');
const video = document.getElementById('player');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
video.style.display = "block";
document.getElementById('message').innerText = "Operation Done. Play video or download it.";
}
const force1080 = async ({ target: { files } }) => {
const { name } = files[0];
const sourceBuffer = await fetch("./media/cap.webm").then(r => r.arrayBuffer());
document.getElementById('uploader').style.display = "none";
document.getElementById('uploader2').style.display = "none";
document.getElementById('uploader3').style.display = "none";
document.getElementById('message').innerText = "Tweaking file... this will take a moment";
document.getElementById('processing').style.display = 'flex';
await ffmpeg.load();
ffmpeg.FS('writeFile', name, await fetchFile(files[0]));
ffmpeg.FS("writeFile", "cap.webm", new Uint8Array(sourceBuffer, 0, sourceBuffer.byteLength));
await ffmpeg.run("-i", "concat:cap.webm|" + name, "-safe", "0", "-c", "copy", "-avoid_negative_ts", "1", "-strict", "experimental", "output.mp4");
const data = ffmpeg.FS('readFile', 'output.mp4');
const video = document.getElementById('player');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
video.style.display = "block";
document.getElementById('message').innerText = "Operation Done. Play video or download it.";
document.getElementById('processing').style.display = 'flex';
}
const convertToAudioOnly = async ({ target: { files } }) => {
const { name } = files[0];
document.getElementById('message').innerText = "Transcoding file... this will take a while";
document.getElementById('processing').style.display = 'flex';
await ffmpeg.load();
ffmpeg.FS('writeFile', name, await fetchFile(files[0]));
const video = document.getElementById('player');
await ffmpeg.run('-i', name, '-vn', '-acodec', 'copy', 'output.opus');
const data = ffmpeg.FS('readFile', 'output.opus');
console.log(data.buffer.byteLength);
if (data.buffer.byteLength) {
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'audio/opus' }));
download(data, name.split(".")[0] + ".opus");
} else {
await ffmpeg.run('-i', name, '-vn', '-acodec', 'copy', 'output.wav');
const data2 = ffmpeg.FS('readFile', 'output.wav');
video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'audio/pcm' }));
download(data2, name.split(".")[0] + ".wav");
}
video.style.display = "block";
document.getElementById('message').innerText = "Operation Done. Play audio or download it.";
document.getElementById('processing').style.display = 'flex';
}
document.getElementById('uploader').addEventListener('change', transcode);
document.getElementById('uploader2').addEventListener('change', transmux);
document.getElementById('uploader3').addEventListener('change', force1080);
document.getElementById('uploader4').addEventListener('change', convertToAudioOnly);
</script>
</body>

View File

@ -290,7 +290,7 @@
<i class="las la-play"></i>
</label>
<div id="inputCombo">
<input type="text" id="changeText" class="inputfield" value="http://vdo.ninja/?view=" onchange="modURL" onkeyup="enterPressed(event, gohere);" />
<input type="text" id="changeText" class="inputfield" value="http://vdo.ninja/" onchange="modURL" onkeyup="enterPressed(event, gohere);" />
<button onclick="gohere();" id="gobutton">GO</button>
</div>
</div>
@ -364,11 +364,9 @@ function resetHistory(){
var urlParams = new URLSearchParams(window.location.search);
if (navigator.userAgent.indexOf('Mac OS X') != -1){
document.getElementById("warning4mac").style.display="block";
} else if (location.hostname.toLowerCase() == "obs.ninja"){
if ((location.hostname.toLowerCase() == "vdo.ninja") || (location.hostname.toLowerCase() == "obs.ninja")){
try {
if (navigator.userAgent.toLowerCase().indexOf(' electron/') > -1) { // for now, just PC or Linux versions only.
if (navigator.userAgent.toLowerCase().indexOf(' electron/') > -1) {
function compareVersions(version){
version = version.split(".");
fetch('https://api.github.com/repos/steveseguin/electroncapture/releases/latest')

25
examples/changepass.html Normal file
View 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>

331
examples/dual.html Normal file
View File

@ -0,0 +1,331 @@
<html>
<head><title>Dual Input</title>
<style>
body{
padding:0;
margin:0;
}
iframe {
border:0;
margin:0;
padding:0;
display:block;
margin:0px;
min-height: 100px;
min-width: 100px;
max-height: 95%;
max-width: 99%%;
float: left;
position: fixed;
}
#viewlink {
width:400px;
}
input{
padding:5px;
margin:5px;
}
button{
padding:5px;
margin:5px;
position:relative;
}
.menu {
z-index: 10;
float:right;
right: 20px;
color: #fff;
}
.close {
background-color: #d33;
color: #fff;
}
.reload {
background-color: #0a0;
color: #fff;
}
.popup {
z-index: 9;
background-color: #f1f1f1;
border: 1px solid #d3d3d3;
text-align: center;
min-height: 100px;
min-width: 100px;
max-height: 95%;
max-width: 99%;
scale: 0.5;
}
.popup {
position: absolute;
/*resize: both; !*enable this to css resize*! */
overflow: auto;
}
.popup-header {
cursor: move;
background-color: #2196f3;
}
.popup .resizer-right {
width: 5px;
height: 100%;
background: transparent;
position: absolute;
right: 0;
bottom: 0;
cursor: e-resize;
}
.popup .resizer-bottom {
width: 100%;
height: 5px;
background: transparent;
position: absolute;
right: 0;
bottom: 0;
cursor: n-resize;
}
.popup .resizer-both {
width: 5px;
height: 5px;
background: transparent;
z-index: 10;
position: absolute;
right: 0;
bottom: 0;
cursor: nw-resize;
}
/*NOSELECT*/
.popup * {
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently
supported by Chrome and Opera */
}
</style>
</head>
<body>
<input placeholder="Enter an OBS.Ninja Room Link" id="viewlink" />
<button onclick="loadIframe();">Load URL</button>You can drag and resize the generated windows; multiple can be created.
<div id="container"></div>
<script>
var currentZIndex = 100;
function initDragElement(popup){
var pos1 = 0,
pos2 = 0,
pos3 = 0,
pos4 = 0;
var elmnt = null;
var header = getHeader(popup);
var iframe = getIFrame(popup);
popup.onmousedown = function() {
this.style.zIndex = "" + ++currentZIndex;
};
if (header) {
header.parentPopup = popup;
header.onmousedown = dragMouseDown;
}
function dragMouseDown(e) {
elmnt = this.parentPopup;
elmnt.style.zIndex = "" + ++currentZIndex;
e = e || window.event;
// get the mouse cursor position at startup:
pos3 = e.clientX;
pos4 = e.clientY;
document.onmouseup = closeDragElement;
// call a function whenever the cursor moves:
document.onmousemove = elementDrag;
}
function elementDrag(e) {
if (!elmnt) {
return;
}
e = e || window.event;
// calculate the new cursor position:
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
// set the element's new position:
elmnt.style.top = elmnt.offsetTop - pos2 + "px";
elmnt.style.left = elmnt.offsetLeft - pos1 + "px";
iframe.style.top = elmnt.offsetTop - pos2 + "px";
iframe.style.left = elmnt.offsetLeft - pos1 + "px";
}
function closeDragElement() {
/* stop moving when mouse button is released:*/
document.onmouseup = null;
document.onmousemove = null;
}
function getHeader(element) {
var headerItems = element.getElementsByClassName("popup-header");
if (headerItems.length === 1) {
return headerItems[0];
}
return null;
}
function getIFrame(element) {
var headerItems = element.getElementsByTagName("iframe");
if (headerItems.length === 1) {
return headerItems[0];
}
return null;
}
}
function initResizeElement(p) {
var iframe = getIFrame(p);
var element = null;
var startX, startY, startWidth, startHeight;
var right = document.createElement("div");
right.className = "resizer-right";
p.appendChild(right);
right.addEventListener("mousedown", initDrag, false);
right.parentPopup = p;
var bottom = document.createElement("div");
bottom.className = "resizer-bottom";
p.appendChild(bottom);
bottom.addEventListener("mousedown", initDrag, false);
bottom.parentPopup = p;
var both = document.createElement("div");
both.className = "resizer-both";
p.appendChild(both);
both.addEventListener("mousedown", initDrag, false);
both.parentPopup = p;
function initDrag(e) {
element = this.parentPopup;
startX = e.clientX;
startY = e.clientY;
startWidth = parseInt(
document.defaultView.getComputedStyle(element).width,
10
);
startHeight = parseInt(
document.defaultView.getComputedStyle(element).height,
10
);
document.documentElement.addEventListener("mousemove", doDrag, false);
document.documentElement.addEventListener("mouseup", stopDrag, false);
document.documentElement.addEventListener("click", stopDrag, false)
}
function doDrag(e) {
if (e.buttons==0){
stopDrag(e);
return false;
}
element.style.width = startWidth + e.clientX - startX + "px";
element.style.height = startHeight + e.clientY - startY + "px";
iframe.style.width = startWidth + e.clientX - startX + "px";
iframe.style.height = startHeight + e.clientY - startY + "px";
}
function stopDrag(e) {
document.documentElement.removeEventListener("mousemove", doDrag, false);
document.documentElement.removeEventListener("mouseup", stopDrag, false);
}
function getIFrame(element) {
var headerItems = element.getElementsByTagName("iframe");
if (headerItems.length === 1) {
return headerItems[0];
}
return null;
}
}
function loadIframe(){
var iframeContainer = document.createElement("div");
iframeContainer.className="popup";
iframeContainer.style.zIndex = "" + ++currentZIndex;
iframeContainer.style.width="325px";
iframeContainer.style.height="420px";
var button = document.createElement("button");
button.innerHTML = "Move";
button.className = "popup-header menu";
iframeContainer.appendChild(button);
var button = document.createElement("button");
button.innerHTML = "Close";
button.className = "menu close";
button.onclick = function(){iframe.contentWindow.postMessage({"close":true}, '*');iframe.parentNode.parentNode.removeChild(iframeContainer);}
iframeContainer.appendChild(button);
var button = document.createElement("button");
button.innerHTML = "Reload";
button.className = "menu reload";
button.onclick = function(){iframe.contentWindow.postMessage({"reload":true}, '*');}
iframeContainer.appendChild(button);
var iframe = document.createElement("iframe");
iframe.allow="autoplay";
iframe.src = document.getElementById("viewlink").value || "https://obs.ninja";
iframe.style.width="325px";
iframe.style.height="420px";
iframeContainer.appendChild(iframe);
document.getElementById("container").appendChild(iframeContainer);
initDragElement(iframeContainer);
initResizeElement(iframeContainer);
}
</script>
</body>
</html>

3
examples/mini.css Normal file
View File

@ -0,0 +1,3 @@
.tile {
max-width:200px !important;
}

172
examples/status.html Normal file
View File

@ -0,0 +1,172 @@
<html>
<head>
<meta charset="utf8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>OBSN Chat Overlay</title>
<style>
@font-face {
font-family: 'Cousine';
src: url('fonts/Cousine-Bold.ttf') format('truetype');
}
body {
margin:0;
padding:0 10px;
height:100%;
border: 0;
display: flex;
flex-direction: column-reverse;
position:absolute;
bottom:0;
overflow:hidden;
max-width:100%;
}
ul {
margin:0;
background-color: #0000;
color: white;
font-family: Cousine, monospace;
font-size: 3.2em;
line-height: 1.1em;
letter-spacing: 0.0em;
text-transform: uppercase;
padding: 0em;
text-shadow: 0.05em 0.05em 0px rgba(0,0,0,1);
max-width:100%;
}
ul li {
background-color: black;
padding: 8px 8px 0px 8px;
margin:0;
word-wrap: break-word;
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-all;
hyphens: auto;
max-width:100%;
}
a {
color:white;
font-size:1.2em;
text-transform: none;
word-wrap: break-word;
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-all;
hyphens: auto;
}
</style>
<script>
(function (w) {
w.URLSearchParams =
w.URLSearchParams ||
function (searchString) {
var self = this;
self.searchString = searchString;
self.get = function (name) {
var results = new RegExp("[\?&]" + name + "=([^&#]*)").exec(
self.searchString
);
if (results == null) {
return null;
} else {
return decodeURI(results[1]) || 0;
}
};
};
})(window);
var urlParams = new URLSearchParams(window.location.search);
function loadIframe() {
var iframe = document.createElement("iframe");
var view= "";
if (urlParams.has("view")) {
view = "&view="+(urlParams.get("view") || "");
}
var room="";
if (urlParams.has("room")) {
room = "&room="+urlParams.get("room");
}
var password="";
if (urlParams.has("password")) {
password = "&password="+urlParams.get("password");
}
iframe.allow = "autoplay";
var srcString = "./?novideo&noaudio&label=chatOverlay&scene"+room+view+password;
iframe.src = srcString;
iframe.style.width="0";
iframe.style.height="0";
iframe.style.border="0";
document.body.appendChild(iframe);
//////////// LISTEN FOR EVENTS
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod === "attachEvent" ? "onmessage" : "message";
/// If you have a routing system setup, you could have just one global listener for all iframes instead.
eventer(messageEvent, function (e) {
if (e.source != iframe.contentWindow){return} // reject messages send from other iframes
console.log(e);
if ("gotChat" in e.data){
logData(e.data.gotChat.label,e.data.gotChat.msg);
}
});
}
function printValues(obj) {
var out = "";
for (var key in obj) {
if (typeof obj[key] === "object") {
out += "<br />";
out += printValues(obj[key]);
} else {
if (key.startsWith("_")) {
} else {
out += "<b>" + key + "</b>: " + obj[key] + "<br />";
}
}
}
return out;
}
function logData(type, data) {
var log = document.body.getElementsByTagName("ul")[0];
var entry = document.createElement('li');
if (type){
type = "<i>"+type+"</i>";
}
entry.innerHTML = type + data;
//setTimeout(function(entry){ // hide message after 60 seconds
// entry.innerHTML="";
// entry.remove();
// },60000,entry);
log.appendChild(entry);
}
</script>
</head>
<body onload="loadIframe();">
<ul></ul>
</body>
</html>

133
examples/webhid.html Normal file
View File

@ -0,0 +1,133 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>WebHID Demo</title>
<style>
body {
text-align: center;
}
.button {
background-color: black;
border: none;
color: #00FF00;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
margin: 4px 2px;
cursor: pointer;
font-size: 24px;
}
#connected {
font-size: 24px;
max-height:700px;
overflow-y:scroll
}
#disconnectButton {
font-size: 24px;
}
</style>
</head>
<body>
<h1>STREAMDECK DEMO</h1>
<img src="./media/streamdeck.png" /><br />
<input class="button" type="button" id="connectButton" value="Connect" />
<input class="button" type="button" id="disconnectButton" style="display:none" value="Disconnect" />
<div id="connected" style>
</div>
<script>
const connectButton = document.getElementById("connectButton");
const disconnectButton = document.getElementById("disconnectButton");
const connect = document.getElementById("connect");
const deviceButtonPressed = document.getElementById("deviceButtonPressed");
var lastState = false;
//productId: 0x0060,
//class: models_1.StreamDeckOriginal,
//productId: 0x0063,
//class: models_1.StreamDeckMini,
//productId: 0x006c,
//class: models_1.StreamDeckXL,
//productId: 0x006d,
//class: models_1.StreamDeckOriginalV2,
document.addEventListener('DOMContentLoaded', async () => {
let devices = await navigator.hid.getDevices();
devices.forEach(device => {
console.log(`HID: ${device.productName}`);
});
});
function handleInputReport(e) {
console.log(e.device.productName + ": got input report " + e.reportId);
console.log(new Uint8Array(e.data.buffer));
var data = new Uint8Array(e.data.buffer);
if (lastState!==false){
for (var i=0;i<data.length;i++){
if (parseInt(data[i])!=data[i]){continue;}
if (lastState[i]!==data[i]){
if (data[i]){
document.getElementById("connected").innerHTML = "<br />Button "+(i+1)+" Pressed"+document.getElementById("connected").innerHTML;
} else {
document.getElementById("connected").innerHTML = "<br />Button "+(i+1)+" Released"+document.getElementById("connected").innerHTML;
}
} else {
if (data[i]){
document.getElementById("connected").innerHTML = "<br />Button "+(i+1)+" Pressed"+document.getElementById("connected").innerHTML;
}
}
}
}
lastState = data;
}
let device;
connectButton.onclick = async () => {
navigator.hid.requestDevice({
filters: [{ vendorId: 0x0fd9}] // elgato?
}).then((devices)=>{
console.log(devices);
device = devices[0];
console.log(`HID connected: ${device.productName}`);
document.getElementById("connected").innerHTML = "<br />Connected" +document.getElementById("connected").innerHTML;
document.getElementById("disconnectButton").style.display = "inline-block";
device.addEventListener("inputreport", handleInputReport);
//device.sendReport(outputReportId, outputReport).then(() => {
// console.log("Sent output report " + outputReportId);
//});
if (!device.opened){
device.open().then(()=>{
window.addEventListener("onbeforeunload", async () => {
await device.close();
});
}).catch(function(err){console.error(err);});
}
}).catch(function(err){console.error(err);});
};
disconnectButton.onclick = async () => {
await device.close();
//connected.style.display = "none";
//connectButton.style.display = "initial";
disconnectButton.style.display = "none";
};
</script>
</body>
</html>

182
examples/zoom.html Normal file
View File

@ -0,0 +1,182 @@
<html>
<head><style>
span{margin:10px 0 0 0;display:block;}
body {
background-color:#cdf;
padding:0;
width;100%;height:100%
}
input{padding:5px;}
button {margin:10px 3px;}
#stream{
display:block;
}
</style></head>
<body id="main" style="margin:5%;"
<meta charset="utf-8"/>
<video id="video" autoplay="true" muted="true" playsinline style='height:420px;background-color:black;display:block;margin:0 0 10px 0;'></video>
<div id="devices">
<div class="select">
<label for="videoSource">Video source: </label><select id="videoSource"></select>
</div>
<div class="select">
<label for="audioSource">Audio source: </label><select id="audioSource"></select>
</div>
</div>
<button onclick="fullwindow()">FULL WINDOW</button>
<script>
window.onerror = function backupErr(errorMsg, url=false, lineNumber=false) {
console.error(errorMsg);
console.error(lineNumber);
console.error("Unhandeled Error occured"); //or any message
return false;
};
function fullwindow(){
videoElement.style.width="100%";
videoElement.style.padding= "0";
videoElement.style.margin="0";
videoElement.style.height="100%";
videoElement.style.zIndex="5";
videoElement.style.position = "absolute";
videoElement.style.top="0px";
videoElement.style.left="0px";
document.getElementById("main").style.overflow = "hidden";
videoElement.style.overflow = "hidden"
document.getElementById("main").style.backgroundColor="#000";
videoElement.style.cursor="none";
document.getElementById("main").style.cursor="none";
}
var videoElement = document.getElementById("video");
var gotDev = false;
async function gotDevices() {
if (gotDev){return;}
gotDev=true;
await navigator.mediaDevices.getUserMedia({audio:true, video:true}); // is needed to ask for permissinos.
navigator.mediaDevices.enumerateDevices().then((deviceInfos)=>{
for (let i = 0; i !== deviceInfos.length; ++i) {
var deviceInfo = deviceInfos[i];
var option = document.createElement("option");
option.value = deviceInfo.deviceId;
if (deviceInfo.kind === "audioinput") {
option.text = deviceInfo.label || "microphone " + (audioSelect.length + 1);
audioSelect.appendChild(option);
if (option.text.startsWith("CABLE")){
option.selected =true;
}
} else if (deviceInfo.kind === "videoinput") {
option.text = deviceInfo.label || "camera " + (videoSelect.length + 1);
if (option.text.startsWith("NewTek")){
continue;
}
videoSelect.appendChild(option);
if (option.text.startsWith("OBS")){
option.selected =true;
}
}
}
getStream();
});
}
function getStream() {
if (window.stream) {
window.stream.getTracks().forEach(function (track) {
track.stop();
log("TRack stopping");
});
}
const constraints = {
audio: {
deviceId: { exact: audioSelect.value },
echoCancellation : false,
autoGainControl : false,
noiseSuppression : false
},
video: {
deviceId: { exact: videoSelect.value },
width: { min: 1280, ideal: 1920, max: 1920 },
height: { min: 720, ideal: 1080, max: 1080 }
}
};
return navigator.mediaDevices.getUserMedia(constraints)
.then(gotStream)
.catch(console.error);
}
function gotStream(stream) {
if (window.stream) {
window.stream = stream; // make stream available to console
videoElement.srcObject = stream;
var senders = session.pc.getSenders();
videoElement.srcObject.getVideoTracks().forEach((track)=>{
var added = false;
senders.forEach((sender) => { // I suppose there could be a race condition between negotiating and updating this. if joining at the same time as changnig streams?
if (sender.track) {
if (sender.track && sender.track.kind == "video") {
sender.replaceTrack(track); // replace may not be supported by all browsers. eek.
track.enabled = notCensored;
added = true;
}
}
});
if (added==false){
session.pc.addTrack(track);
log("ADDED NOT REPLACED?");
}
});
videoElement.srcObject.getAudioTracks().forEach((track)=>{
var added = false;
senders.forEach((sender) => { // I suppose there could be a race condition between negotiating and updating this. if joining at the same time as changnig streams?
if (sender.track) {
if (sender.track && sender.track.kind == "audio") {
sender.replaceTrack(track); // replace may not be supported by all browsers. eek.
track.enabled = notCensored;
added = true;
}
}
});
if (added==false){
session.pc.addTrack(track);
log("ADDED NOT REPLACED?");
}
});
} else {
window.stream = stream; // make stream available to console
videoElement.srcObject = stream;
}
}
var audioSelect = document.querySelector("select#audioSource");
var videoSelect = document.querySelector("select#videoSource");
audioSelect.onchange = getStream;
videoSelect.onchange = getStream;
gotDevices();
</script>
</body>
</html>

View File

@ -17,7 +17,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
<meta content="utf-8" http-equiv="encoding" />
<meta name="copyright" content="&copy; 2020 Steve Seguin" />
<meta name="copyright" content="&copy; 2021 Steve Seguin" />
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
<link rel="icon" type="image/png" sizes="32x32" href="./media/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="./media/favicon-16x16.png" />
@ -55,8 +55,9 @@
}
</style>
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css" />
<link rel="stylesheet" href="./main.css?ver=63" />
<link rel="stylesheet" href="./main.css?ver=69" />
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/adapter.min.js"></script>
<style id="lightbox-animations" type="text/css"></style>
</head>
<body id="main" class="hidden">
<span itemprop="image" itemscope itemtype="image/png">
@ -67,11 +68,11 @@
<link itemprop="url" href="./media/obsNinja_logo_full.png" />
</span>
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/CodecsHandler.js?ver=33"></script>
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=203"></script>
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=214"></script>
<input id="zoomSlider" type="range" style="display: none;" />
<div id="header">
<a id="logoname" href="./" style="text-decoration: none; color: white; margin: 2px;">
<a id="logoname" href="./" style="text-decoration: none; color: white; margin: 0 2px 0px 8px;">
<span data-translate="logo-header">
<font id="qos">V</font>DO.Ninja
</span>
@ -97,7 +98,6 @@
</div>
<div id="head4" style="display: inline-block;" class="advanced">
<font style="font-size: 68%; color: white;">
&nbsp;
<span data-translate="you-are-in-the-control-center">Control center for room:</span>
<div id="dirroomid" style="font-size: 140%; color: #99c; display: inline-block;"></div>
@ -107,11 +107,12 @@
<span data-translate="joining-room">You are in room</span>:
<div id="roomid" style="display: inline-block;"></div>
</div>
<div id="head6" class="advanced" data-translate="only-director-can-hear-you">Only the director can hear you currently.</div>
<div id="head7" class="advanced" data-translate="director-muted-you">The director has muted you.</div>
</div>
<div id="controlButtons" >
<div id="obsState" class="advanced" style="border:green solid 2px;padding:10px;margin:10px;color: white; z-index:2; background-color: #222D;display: block;top: 0;position: fixed;">ACTIVE</div>
<div id="obsState" class="advanced" >ACTIVE</div>
<div id="subControlButtons">
<div id="queuebutton" title="Load the next guest in queue" alt="Load the next guest in queue" onmousedown="event.preventDefault(); event.stopPropagation();" onclick="session.nextQueue()" tabindex="16" role="button" aria-pressed="false" onkeyup="enterPressedClick(event,this);" class="advanced float" style="cursor: pointer;" >
<i id="queuetoggle" class="toggleSize las la-stream my-float"></i>
@ -140,6 +141,10 @@
<i id="websitesharetoggle" onmousedown="event.preventDefault(); event.stopPropagation();" class="toggleSize las la-window-maximize my-float"></i>
</div>
<div id="flipcamerabutton" onmousedown="event.preventDefault(); event.stopPropagation();" title="Cycle the Cameras" onclick="cycleCameras()" class="advanced float" tabindex="21" role="button" aria-pressed="false" onkeyup="enterPressedClick(event,this);" style="cursor: pointer;" alt="Cycle the Cameras">
<i id="settingstoggle" class="toggleSize las la-sync-alt my-float"></i>
</div>
<div id="roomsettingsbutton" onmousedown="event.preventDefault(); event.stopPropagation();" title="Room Settings" onclick="toggleRoomSettings();" class="advanced float" tabindex="22" role="button" aria-pressed="false" onkeyup="enterPressedClick(event,this);" style="cursor: pointer;" alt="Toggle the Room Settings Menu">
<i id="roomsettingstoggle" class="toggleSize las la-users-cog my-float"></i>
</div>
@ -170,14 +175,14 @@
id="reportbutton"
title="Submit any error logs"
onclick="submitDebugLog();"
style="cursor: pointer; visibility: hidden; display:none;z-index:7;"
style="cursor: pointer; visibility: hidden; display:none;z-index:3;"
>
<i style="float: right; bottom: 0px; cursor: pointer; position: fixed; right: 55px; color: #d9e4eb; padding: 2px; margin: 2px 2px 0 0; font-size: 140%;" class="las la-bug" aria-hidden="true"></i>
</span>
<span
id="helpbutton"
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 Docs also contains many help guides and advanced settings, located at https://docs.vdo.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/vdoninja or join the live chat on Discord at https://discord.vdo.ninja.\n\nThe Docs also contains many help guides and advanced settings, located at https://docs.vdo.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;"
alt="How to Use This with OBS"
>
@ -281,7 +286,7 @@
<li>Disabling video sharing between guests will improve performance</li>
<li>Invite only guests to the room that you trust.</li>
<li>The "Recording" option is considered experimental.</li>
<li><a href="https://params.obs.ninja" style="color:black;"><u>Advanced URL parameters</u></a> are available to customize rooms.</li>
<li><a href="https://params.vdo.ninja" style="color:black;"><u>Advanced URL parameters</u></a> are available to customize rooms.</li>
</span>
</ul>
</div>
@ -306,7 +311,7 @@
<button onclick="this.disabled=true;setTimeout(function(){requestBasicPermissions();},20);" id="getPermissions" style="display:none;" data-ready="false" >
<span data-translate="ask-for-permissions">Allow Access to Camera/Microphone</span>
</button>
<button onclick="publishWebcam(this)" title="start streaming" tabindex="15" id="gowebcam" class="gowebcam" alt="Start Streaming" disabled data-ready="false" >
<button onclick="publishWebcam(this)" title="start streaming" tabindex="15" id="gowebcam" class="gowebcam" alt="Start Streaming" disabled data-audioready="false" data-ready="false" >
<span data-translate="waiting-for-camera">Waiting for Camera to Load</span>
</button>
<br />
@ -495,6 +500,8 @@
</option>
</select>
</span>
<br />
<span data-translate="application-audio-capture">For application-specific audio capture, <a href='https://docs.vdo.ninja/audio' style='color: #007AC8;'>see here</a></span>
</div>
<div class="outer close">
<div class="inner">
@ -605,7 +612,7 @@
</div>
<div>See the
<a style="text-decoration: none; color: blue;" target="_blank" href="https://docs.vdo.ninja/advanced-settings">documentation</a> for more options and info.<br /><br />
Try out the advanced <a style="text-decoration: none; color: blue;" target="_blank" href="https://invite.obs.ninja/">invite generator</a> here also.
Try out the advanced <a style="text-decoration: none; color: blue;" target="_blank" href="https://invite.vdo.ninja/">invite generator</a> here also.
</div>
</div>
</div>
@ -638,10 +645,7 @@
</div>
<div class='info message-card'>
<h1>File Sharing seems to be broken on Chrome v88.</h1>
<p>Using The Electron Capture app instead of Chrome should work:
<a href="https://github.com/steveseguin/electroncapture/releases/latest">GET IT HERE</a>
<br />
You can also <a href="https://github.com/aws/amazon-chime-sdk-js/issues/1031">turn off hardware-accleration</a> in Chrome/Edge to fix the issue.</p>
<p>Try <a href="https://github.com/aws/amazon-chime-sdk-js/issues/1031">turning off hardware-accleration</a> in Chrome/Edge to fix the issue, or maybe use a different browser.</p>
</div>
</div>
@ -687,7 +691,7 @@
<i style="margin-top:30px;font-size:600%;overflow:hidden;" class="las la-tachometer-alt"></i>
</div>
<div id="container-8" class="column columnfade pointer card advanced" style="overflow: hidden;" onclick="window.location = 'https://guides.obs.ninja';">
<div id="container-8" class="column columnfade pointer card advanced" style="overflow: hidden;" onclick="window.location = 'https://guides.vdo.ninja';">
<h2><span data-translate="read-the-guides">Browse the Guides</span></h2>
<i style="margin-top:30px;font-size:600%;overflow:hidden;" class="las la-book-open"></i>
</div>
@ -714,22 +718,25 @@
</i>
<br />
<li>
If you have <a href="https://docs.vdo.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.
Some devices that use H264 hardware encoding can experience video glitching; switching to VP8 or VP9 as a codec can help.
</li>
<li>
If using multiple group scenes at a time, iOS devices may fail to work if the hardware encoders max out. Perhaps try VP8 as a codec instead.
</li>
<li>
A list of less common issues can <a href="https://docs.vdo.ninja/common-errors-and-known-issues/known-issues-browser-bugs-and-more">be found here</a>.
</li>
<br />
<h4 style="color:#daad09;">
👋 👀 Welcome to our new domain! We've started to rebrand to VDO.Ninja. 📼 Nothing else is changing and we're staying 100% free.
👋 👀 Welcome to VDO Ninja! We've rebranded! 📼 Nothing else is changing and we're staying 100% free.
</h4>
<br />
🌻 Site Updated on June 6th. The new <a href="https://docs.vdo.ninja/release-notes/v18">v18 release notes are here</a>. If new issues occur, the previous version can also be <a href="https://obs.ninja/v17/">found here</a>.
🌻 Site Updated on July 8th. The <a href="https://docs.vdo.ninja/release-notes/v18_3">v18.3 release notes are here</a>. If new issues occur, the previous version can also be <a href="https://vdo.ninja/v18/">found here</a>.
<br />
<br />
<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://docs.vdo.ninja/">documentation is here</a> and my personal email is <i>steve@seguin.email</i>
🛠 For support, see the <a href="https://www.reddit.com/r/VDONinja/">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.vdo.ninja/">documentation is here</a> and my personal email is <i>steve@seguin.email</i>
</h3>
</span>
@ -877,6 +884,7 @@
</label>
<span data-translate="show-active-speaker">Show active speakers</span>
</div>
<div style="display:inline-block;margin-top: 12px; position: relative; margin-right:10px;">
<label class="switch" title="Request 1080p60 from the Guest instead of 720p60, if possible">
@ -917,6 +925,14 @@
</label>
<font class="tooltip" style='cursor: help;position:relative;bottom:2px;font-family:"Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;'><span class="tooltiptext">Uses more CPU and freezes the video if the guest doesn't keep the tab visible.</span></font> <span data-translate="virtual-backgrounds">Virtual backgrounds</span>
<br />
<label class="switch" title="Videos use an animated transition when being remixed">
<input type="checkbox" data-param="&animate" onchange="updateLink(1,this);">
<span class="slider"></span>
</label>
<span data-translate="animate-mixing">Animate mixing</span>
</div>
<div style="display:inline-block;margin-top: 12px; position: relative; margin-right:10px;">
<label class="switch" title="Increase video quality that guests in room see.">
@ -949,12 +965,17 @@
</label>
<span data-translate="enable-equalizer">Enable equalizer as option</span>
<br />
<label class="switch">
<label class="switch" title="Show some prep suggestions to the guests on connect">
<input type="checkbox" data-param="&tips" onchange="updateLink(1,this);">
<span class="slider"></span>
</label>
<span data-translate="show-guest-tips" title="Show some prep suggestions to the guests on connect">Show guest setup tips</span>
<span data-translate="show-guest-tips">Show guest setup tips</span>
<br />
<label class="switch" title="Have screen-shares stream ID's use a predictable prefixed value instead of a random one.">
<input type="checkbox" data-param="&ssid" onchange="updateLink(1,this);">
<span class="slider"></span>
</label>
<span data-translate="prefix-screenshare">Prefix screenshare IDs</span>
</div>
<div style="display:inline-block;margin-top: 12px; position: relative; height: 20px;">
<label class="switch" title="This low-fi video codec uses very little CPU, even with dozens of active viewers.">
@ -1020,6 +1041,7 @@
</label><font class="tooltip" style='cursor: help;position:relative;bottom:2px;font-family:"Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;'>💉<span class="tooltiptext" style="width: 10em; background-color: #77C"><span data-translate="this-can-reduce-packet-loss">Can reduce packet loss video corruption in OBS on PC</span></span></font>
<span data-translate="use-h264-codec">Use H264 codec</span>
</div>
<div style="display:inline-block;margin-top: 12px; position: relative; margin-right:10px; height: 20px;">
@ -1045,6 +1067,14 @@
</label>
<span data-translate="fade-videos-in">Fade-in videos</span>
<br />
<label class="switch" title="Videos use an animated transition when being remixed">
<input type="checkbox" data-param="&animate" onchange="updateLink(3,this);">
<span class="slider"></span>
</label>
<span data-translate="animate-mixing">Animate mixing</span>
</div>
@ -1090,8 +1120,8 @@
</div>
</div>
</div>
<a href="https://params.obs.ninja" style="color:#888;" target="_blank" >
<div style="display: block;float:right;font-size:70%;z-index:30;bottom:6px;right:10px;position:relative;color:#888;" ><span data-translate="learn-more-about-params">Learn more about URL parameters at </span><font style="text-decoration: underline;">params.obs.ninja</font>
<a href="https://params.vdo.ninja" style="color:#888;" target="_blank" >
<div style="display: block;float:right;font-size:70%;z-index:30;bottom:6px;right:10px;position:relative;color:#888;" ><span data-translate="learn-more-about-params">Learn more about URL parameters at </span><font style="text-decoration: underline;">params.vdo.ninja</font>
</div>
</a>
</div>
@ -1124,10 +1154,10 @@
<span data-translate="disconnect-guest" >Hangup</span>
</button>
<button data-action-type="solo-chat" title="Toggle Solo Voice Chat" onclick="session.toggleSoloChat(this.dataset.UUID);">
<button data-action-type="solo-chat" title="Toggle solo voice chat or hold CTRL/CMD when selecting to make it two-way private." onclick="session.toggleSoloChat(this.dataset.UUID, event);">
<span data-translate="voice-chat"><i class="las la-microphone" style="color:#090"></i> Solo Talk</span>
</button>
<button data-action-type="addToScene" data-scene="1" title="Add this Video to any remote '&scene=1'" onclick="directEnable(this, event, 1);">
<i class="las la-plus-square" style="color:#060"></i>
<span data-translate="add-to-scene">add to scene 1</span>
@ -1340,8 +1370,8 @@
<button data-action-type="recorder-local" title="Start Recording this remote stream to this local drive. *experimental*'" onclick="recordLocalVideoToggle();">
<i class="las la-circle"></i>
<span data-translate="record-local"> Record</span>
</button>
<span data-translate="record-director-local"> Record</span>
</button>
<span>
<button style="width:34px;" data-action-type="order-down" title="Shift this Video Down in Order" onclick="changeOrderDirector(-1);">
@ -1494,8 +1524,9 @@
<span class='modalClose' onclick="toggleRoomSettings();">×</span>
<span></span>
<h3>Change room settings</h3><br />
<label title="Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded." for="trbSettingInput">Change room video quality:</label><span style="margin-left: 6px;" id="trbSettingInputFeedback"></span>-kbps
<input id="trbSettingInput" type="range" min="0" max="2000" value="500" onchange="changeTRB(this);" oninput="getById('trbSettingInputFeedback').innerHTML = this.value;" style="width:400px;display:block;" />
<label title="Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded." for="trbSettingInput">Change room video quality:</label>
<span style="margin-left: 6px;" id="trbSettingInputFeedback"></span>-kbps
<input id="trbSettingInput" type="range" min="0" max="4000" value="500" onchange="changeTRB(this);" oninput="getById('trbSettingInputFeedback').innerHTML = this.value;" style="width:100%;display:block;" />
</div>
</div>
@ -1610,11 +1641,12 @@
<li><a onclick="changeLg('nl');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Amsterdam">Dutch</a></li>
<li><a onclick="changeLg('tr');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Istanbul">Turkish</a></li>
<li><a onclick="changeLg('ja');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Asia/Tokyo">Japanese</a></li>
<li><a onclick="changeLg('cs');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Prague">Czech </a></li>
<li><a onclick="changeLg('cs');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Prague">Czech</a></li>
<li><a onclick="changeLg('uk');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Ukraine">Ukrainian</a></li>
<li><a onclick="changeLg('pig');toggle(document.getElementById('languages'));" style="cursor: pointer;">Pig Latin</a></li>
</ul>
<br />
<a href="https://github.com/steveseguin/obsninja/tree/master/translations" target="_blank" rel="noopener noreferrer" data-translate='add-more-here'>Add More Here!</a>
<a href="https://github.com/steveseguin/vdoninja/tree/master/translations" target="_blank" rel="noopener noreferrer" data-translate='add-more-here'>Add More Here!</a>
<br />
</div>
<div id="calendar" class="popup-message" style="display: none; right: 0; padding-left:5px; bottom: 25px; position: absolute;">
@ -1640,7 +1672,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 = "18.2";
session.version = "18.3";
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
@ -1676,11 +1708,11 @@
/// 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.pie=true;
// 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.pie = true; // Set to true to have Piesocket.com
//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;
////////////
@ -1716,49 +1748,12 @@
// session.scene
// 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=12"></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="mixer-js" src="./mixer.js?ver=2"></script>
-->
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=226"></script>
<script type="text/javascript">
setTimeout(function(){ // lazy load
var script = document.createElement('script');
document.head.appendChild(script);
script.onload = function() {
var script = document.createElement('script');
document.head.appendChild(script);
script.src = "./thirdparty/StreamSaver.js"; // dynamically load this only if its needed. Keeps loading time down.
};
script.src = "./thirdparty/polyfill.min.js"; // dynamically load this only if its needed. Keeps loading time down.
setTimeout(function(){
var script = document.createElement('script');
document.head.appendChild(script);
script.src = "./thirdparty/aes.js"; // not really needed right away.
},500);
},0);
var languages = getById('languagesList').querySelectorAll('li a');
var timezones = [];
languages.forEach(language => {
if (language.dataset.tz) {
var languageTimezones = language.dataset.tz.split(';'); // each link can have multiple timezones separated by ;
languageTimezones.forEach(element => {
timezones.push(element);
});
}
});
var currentTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
if (timezones.includes(currentTimezone)) {
var el = getById('languagesList').querySelector("li a[data-tz*='" + currentTimezone +"']"); // select language li
el.parentElement.removeChild(el); // remove it
getById('languagesList').insertBefore(el, getById('languagesList').querySelector('li:nth-child(2)')); // insert it after English
}
</script>
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=239"></script>
</body>
</html>

15677
lib.js Normal file

File diff suppressed because one or more lines are too long

193
main.css
View File

@ -159,6 +159,15 @@ button.grey {
background-color: #840000 !important;
}
.red2 {
background-color: #840000 !important;
}
.orange {
background-color: #673100 !important;
}
button.red {
-webkit-app-region: no-drag;
padding: 10px;
@ -217,6 +226,25 @@ button.white:active {
pointer-events: none;
float: right;
}
#head6 {
display: inline-block;
text-decoration: none;
color: white;
text-align: left;
margin-left: 10px;
pointer-events: none;
font-weight: 700;
}
#head7 {
display: inline-block;
text-decoration: none;
color: white;
text-align: left;
margin-left: 10px;
pointer-events: none;
font-weight: 700;
}
#overlayMsgs{
margin:0 auto;
@ -232,7 +260,6 @@ button.white:active {
z-index: 7;
vertical-align: top;
text-align: center;
top: 0;
position: fixed;
overflow-wrap: anywhere;
padding:2% 3%;
@ -315,6 +342,15 @@ button.white:active {
color: white;
}
.altpress {
background: #673100 !important;
-webkit-box-shadow: inset 0px 0px 1px #b90000;
-moz-box-shadow: inset 0px 0px 1px #b90000;
box-shadow: inset 0px 0px 1px #b90000;
outline: none;
color: white;
}
.row {
align-content: center;
text-align: center;
@ -483,6 +519,7 @@ button.glyphicon-button.active.focus {
-webkit-tap-highlight-color: transparent !important;
outline: 0px !important;
height:100%;
animation: fading 0.2s;
}
#controlButtons {
@ -526,25 +563,60 @@ button.glyphicon-button.active.focus {
}
}
#obsState {
border:green solid 2px;
padding:2px 5px;
color: white;
z-index:2;
background-color: #222D;
display: block;
top: 0;
position: fixed;
opacity: 0.7;
transform: scale(0.7);
}
@media only screen and (max-width: 620px){
#obsState {
top: 10px !important;
transform: scale(0.9);
top:20px;
transform: scale(0.63);
}
}
@media only screen and (max-width: 400px){
#obsState {
top: 20px !important;
transform: scale(0.8);
top:30px;
transform: scale(0.56);
display:none!important;
opacity:0;
}
}
@media only screen and (max-width: 300px){
#obsState {
top: 30px !important;
transform: scale(0.7);
display:none!important;
opacity:0;
}
}
@media only screen and (max-height: 400px){
#obsState {
transform: scale(0.5);
display:none!important;
opacity:0;
}
}
@media only screen and (max-height: 300px){
#obsState {
transform: scale(0.4);
display:none!important;
opacity:0;
}
}
@media only screen and (max-height: 200px){
#obsState {
transform: scale(0.3);
display:none!important;
opacity:0;
}
}
obsState
/* Node selector to prioritise this selector above .float */
button.btnArmTransferRoom{
@ -1366,7 +1438,7 @@ img {
}
.float2 {
opacity: 0.8;
width: 45px;
min-width: 45px;
height: 45px;
background-color: #8888;
color: #FFF;
@ -1386,25 +1458,40 @@ img {
.myVideo {
box-shadow: rgb(88, 88, 88) 0px 0px 5px 1px;
max-width: 800px !important;
max-width: min(800px,100vw) !important;
max-height: 100% !important;
height: auto !important;
display: block !important;
margin: auto auto !important;
position: relative !important;
top: 50% !important;
background-color: #FFF1 !important;
}
#calendarButton {
cursor: pointer;
z-index: 6;
z-index: 1;
display:none;
}
#translateButton {
cursor: pointer;
z-index: 6;
z-index: 1;
}
#helpButton {
cursor: pointer;
z-index: 6;
z-index: 1;
}
iframe {
z-index: 2;
}
@media only screen and (max-width: 390px) {
#translateButton {
display:none;
}
#helpButton {
display:none;
}
}
.popup .menu { margin: 2px; }
@ -1527,6 +1614,26 @@ img {
background-color: #DD1A !important;
}
.flip {
animation: flip180 2s;
animation-iteration-count: 1;
}
@keyframes flip180 {
0% {transform: rotate(0);}
100% {transform: rotate(180deg);}
}
.flip2 {
animation: flip1802 2s;
animation-iteration-count: 1;
}
@keyframes flip1802 {
0% {transform: rotate(180deg)}
100% {transform: rotate(360deg);}
}
@-webkit-keyframes animatetop {
from {
top: -300px;
@ -1580,10 +1687,9 @@ img {
-moz-animation: fadeIn var(--fadein-speed);
-o-animation: fadeIn var(--fadein-speed);
-ms-animation: fadeIn var(--fadein-speed);
animation-iteration-count: 1;
}
@keyframes fadeIn {
0% {opacity:0;}
100% {opacity:1;}
@ -1667,6 +1773,14 @@ video.clean::-webkit-media-controls-timeline-container {
display: inherit;
}
audio.fileshare::-webkit-media-controls-overlay-play-button, video.fileshare::-webkit-media-controls-overlay-play-button {
display: inherit;
}
audio.fileshare::-webkit-media-controls-play-button, video.fileshare::-webkit-media-controls-play-button {
display: inherit;
}
.mirrorControl::-webkit-media-controls-enclosure {
padding: 0px;
height: 30px;
@ -2045,6 +2159,7 @@ input[type=checkbox] {
align-self: center;
width: 400px;
max-width: 100%;
z-index:3;
}
#chatInput {
color: #000;
@ -2695,12 +2810,12 @@ input:checked + .slider:before {
}
#promptModal, #roomSettings {
#promptModal, #roomSettings, .promptModal {
position: absolute;
background-color: rgb(221 221 221);
box-shadow: 0 0 30px 10px #0000005c;
color: black;
font-size: 1.2em;
font-size: 1.0em;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
@ -2713,9 +2828,9 @@ input:checked + .slider:before {
}
.largeTextEntry {
width:300px;
margin: 0 0 0 55px;
font-size: 1em;
width: 90%;
margin: 10px 5%;
font-size: .8em;
padding: 0.4em;
display: block;
@ -2723,6 +2838,14 @@ input:checked + .slider:before {
.promptModalInner {
position: relative;
padding: 1em;
max-width: 400px;
}
.promptModalMessage {
position: relative;
display: block;
width: 98%;
margin: 0 5%;
}
#iframe_source{
@ -2733,6 +2856,7 @@ input:checked + .slider:before {
}
#SafariWarning{
max-width:100%;
display:none;
width: 450px;
border-left: 4px solid #eff150;
@ -2836,12 +2960,43 @@ input:checked + .slider:before {
opacity: 0.8;
}
.modalBackdrop {
background: var(--background-color);
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
opacity: 0.8;
}
.opaqueBackdrop{
background: var(--background-color);
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
opacity: 1.0;
}
@media only screen and (max-width: 390px) {
.alertModal {
width: 90%;
}
}
.iframeDetails {
margin: 10px;
position: relative;
word-break: break-all;
max-height: 500px;
overflow: hidden;
}
.desktop-capturer-selection {
position: fixed;
top: 0;

20523
main.js

File diff suppressed because one or more lines are too long

View File

@ -4,13 +4,84 @@
<link rel="stylesheet" href="./speedtest.css?ver=1" />
<meta charset="utf8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>OBSN Speed Test</title>
<title>VDON Speed Test</title>
</head>
<body onload="loadIframe();">
<h1>
VDO.Ninja Speed Test
</h1>
<div id="container">
</div>
<div id="graphs">
<div class="graph">
<h2>Bitrate (kbps)</h2>
<span>0</span>
<canvas id="bitrate-graph"></canvas>
</div>
<div class="graph">
<h2>Buffer delay (ms)</h2>
<span>0</span>
<canvas id="buffer-graph"></canvas>
</div>
<div class="graph">
<h2>Packet Loss (%)</h2>
<span>0</span>
<canvas id="packetloss-graph"></canvas>
</div>
</div>
<div id="log" onclick="copyFunction(this.innerText)">
<h2>Log <i class="las la-clipboard"></i></h2>
<ul></ul>
</div>
<div id="explanation">
<h2>How to use</h2>
<ol>
<li>Select your camera.</li>
<li>Hit start</li>
<li>
Wait for the video to load side-by-side. *If it does not auto-load
within 20s, refresh and try again.*
</li>
<li>
Stats will load on the right-hand side of the page here. (or press
CTRL + LeftClick on the new video to open stats that way)
</li>
<li>
Bitrate, Buffer delay, and packet loss are important connection
quality metrics
</li>
<li>
Change the video bitrate by pressing the buttons below the video. It
should approach 6000-kbps if the network allows.
</li>
</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>
<br />
Testing location: <select name="turnlist" id="turnlist" onchange="reloadTurn();" title="Select an exact location to test against">
<option selected value="">Automatic</option>
<option value="de1">Saarbruecken, Germany</option>
<option value="fr1">Strasbourg, France</option>
<option value="cae1">Montreal, Canada</option>
<option value="usc1">Chicago, USA</option>
<option value="usw1">Los Angeles, USA</option>
<option value="aus1">Sidney, Australia</option>
</select>
<br /><br /><br />
</div>
<script>
function getChromeVersion() {
var raw = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
return raw ? parseInt(raw[2], 10) : false;
}
if (!getChromeVersion()){
alert("This speedtest is optimized for Chromium-based browsers; graphs will not work for Firefox or Safari browsers.");
}
@ -34,9 +105,11 @@
};
})(window);
var urlParams = new URLSearchParams(window.location.search);
var quality_reason = "";
var encoder = "";
var Round_Trip_Time_ms = "";
function copyFunction(copyText) {
alert("Log copied to the clipboard.");
try {
@ -55,11 +128,40 @@
}
function printValues(obj) {
var out = "";
for (var key in obj) {
if (typeof obj[key] === "object") {
out += "<br />";
out += printValues(obj[key]);
} else {
if (key.startsWith("_")) {
} else {
out += "<b>" + key + "</b>: " + obj[key] + "<br />";
}
}
}
return out;
}
function loadIframe() {
function logData(type, data) {
var log = document.getElementById("log").getElementsByTagName("ul")[0];
var entry = document.createElement('li');
entry.textContent =
"[" + new Date().toLocaleTimeString() + "] " + type + " : " + data;
log.prepend(entry);
}
function reloadTurn(){
console.log("Reloading to change TURN servers");
loadIframe(document.getElementById("turnlist").value);
}
function loadIframe(zone="") {
// 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();"> !!!
document.getElementById("container").innerHTML = "";
var streamID = "";
var possible = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
for (var i = 0; i < 7; i++) {
@ -72,9 +174,7 @@
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 />";
var iframe = document.createElement("iframe");
var iframeContainer = document.createElement("span");
@ -84,7 +184,7 @@
iframe.allowfullscreen ="true";
//iframe.allow = "autoplay";
var srcString = "./?push=" + streamID + "&cleanoutput&privacy&speedtest&"+testType+"&audiodevice=0&fullscreen&transparent&remote";
var srcString = "./?push=" + streamID + "&cleanoutput&privacy&"+testType+"&audiodevice=0&fullscreen&transparent&remote&speedtest="+zone;
if (urlParams.has("turn")) {
srcString = srcString + "&turn=" + urlParams.get("turn");
@ -124,7 +224,7 @@
var iframeContainer = document.createElement("span");
iframe.allow = "autoplay";
var srcString = "./?view=" + streamID + "&cleanoutput&privacy&noaudio&speedtest&scale=0";
var srcString = "./?view=" + streamID + "&cleanoutput&privacy&noaudio&scale=0&speedtest="+zone;
if (urlParams.has("turn")) {
srcString = srcString + "&turn=" + urlParams.get("turn");
@ -289,90 +389,7 @@
});
}
function printValues(obj) {
var out = "";
for (var key in obj) {
if (typeof obj[key] === "object") {
out += "<br />";
out += printValues(obj[key]);
} else {
if (key.startsWith("_")) {
} else {
out += "<b>" + key + "</b>: " + obj[key] + "<br />";
}
}
}
return out;
}
function logData(type, data) {
var log = document.getElementById("log").getElementsByTagName("ul")[0];
var entry = document.createElement('li');
entry.textContent =
"[" + new Date().toLocaleTimeString() + "] " + type + " : " + data;
log.prepend(entry);
}
</script>
</head>
<body onload="loadIframe();">
<div id="container">
<h1>
OBS.Ninja Speed Test
</h1>
</div>
<div id="graphs">
<div class="graph">
<h2>Bitrate (kbps)</h2>
<span>0</span>
<canvas id="bitrate-graph"></canvas>
</div>
<div class="graph">
<h2>Buffer delay (ms)</h2>
<span>0</span>
<canvas id="buffer-graph"></canvas>
</div>
<div class="graph">
<h2>Packet Loss (%)</h2>
<span>0</span>
<canvas id="packetloss-graph"></canvas>
</div>
</div>
<div id="log" onclick="copyFunction(this.innerText)">
<h2>Log <i class="las la-clipboard"></i></h2>
<ul></ul>
</div>
<div id="explanation">
<h2>How to use</h2>
<ol>
<li>Select your camera.</li>
<li>Hit start</li>
<li>
Wait for the video to load side-by-side. *If it does not auto-load
within 20s, refresh and try again.*
</li>
<li>
Stats will load on the right-hand side of the page here. (or press
CTRL + LeftClick on the new video to open stats that way)
</li>
<li>
Bitrate, Buffer delay, and packet loss are important connection
quality metrics
</li>
<li>
Change the video bitrate by pressing the buttons below the video. It
should approach 6000-kbps if the network allows.
</li>
</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>
<script>
var testType= "webcam";
if (urlParams.has("screen") || urlParams.has("ss") || urlParams.has("screenshare") || urlParams.has("screentest")) {

5
thirdparty/ffmpeg.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

16300
thirdparty/tfjs/tf-backend-webgl.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

8058
thirdparty/tfjs/tf-converter.js vendored Normal file

File diff suppressed because it is too large Load Diff

1
thirdparty/tfjs/tf-converter.js.map vendored Normal file

File diff suppressed because one or more lines are too long

27681
thirdparty/tfjs/tf-core.js vendored Normal file

File diff suppressed because it is too large Load Diff

1
thirdparty/tfjs/tf-core.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -9,48 +9,27 @@
"disable-the-camera": "Disable the Camera",
"share-a-screen-with-others": "Share a Screen with others",
"create-a-secondary-stream": "Create a Secondary Stream",
"settings": "Settings",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"hangup-the-call": "Hangup the Call",
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
"record-your-stream-to-disk": "Record your stream to disk",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
"submit-any-error-logs": "Submit any error logs",
"show-help-info": "Show Help Info",
"language-options": "Language Options",
"add-to-calendar": "Add to Calendar",
"add-group-chat-to-obs": "Add Group Chat",
"for-large-group-rooms-this-option-can-reduce-the-load-on-remote-guests-substantially": "For large group rooms, this option can reduce the load on remote guests substantially",
"the-director-will-be-visible-in-scenes-as-if-a-performer-themselves-": "The director will be visible in scenes, as if a performer themselves.",
"useful-if-you-want-to-perform-and-direct-at-the-same-time": "Useful if you want to perform and direct at the same time",
"which-video-codec-would-you-want-used-by-default-": "Which video codec would you want used by default?",
"you-ll-enter-as-the-room-s-director": "You'll enter as the room's director",
"add-your-camera-to-obs": "Add your Camera",
"start-streaming": "start streaming",
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
"improve-performance-and-quality-with-this-tip": "Improve performance and quality with this tip",
"remote-screenshare-into-obs": "Remote Screenshare",
"create-reusable-invite": "Create Reusable Invite",
"ideal-for-1080p60-gaming-if-your-computer-and-upload-are-up-for-it": "Ideal for 1080p60 gaming, if your computer and upload are up for it",
"better-video-compression-and-quality-at-the-cost-of-increased-cpu-encoding-load": "Better video compression and quality at the cost of increased CPU encoding load",
"disable-digital-audio-effects-and-increase-audio-bitrate": "Disable digital audio-effects and increase audio bitrate",
"the-guest-will-not-have-a-choice-over-audio-options": "The guest will not have a choice over audio-options",
"the-guest-will-only-be-able-to-select-their-webcam-as-an-option": "The guest will only be able to select their webcam as an option",
"hold-ctrl-and-the-mouse-wheel-to-zoom-in-and-out-remotely-of-compatible-video-streams": "Hold CTRL and the mouse wheel to zoom in and out remotely of compatible video streams",
"encode-the-url-so-that-it-s-harder-for-a-guest-to-modify-the-settings-": "Encode the URL so that it's harder for a guest to modify the settings.",
"add-a-password-to-make-the-stream-inaccessible-to-those-without-the-password": "Add a password to make the stream inaccessible to those without the password",
"add-the-guest-to-a-group-chat-room-it-will-be-created-automatically-if-needed-": "Add the guest to a group-chat room; it will be created automatically if needed.",
"customize-the-room-settings-for-this-guest": "Customize the room settings for this guest",
"more-options": "More Options",
"hold-ctrl-or-cmd-to-select-multiple-files": "Hold CTRL (or CMD) to select multiple files",
"enter-an-https-url": "Enter an HTTPS URL",
"creative-commons-by-3-0": "Creative Commons BY 3.0",
"youtube-video-demoing-how-to-do-this": "Youtube Video demoing how to do this",
"invite-a-guest-or-camera-source-to-publish-into-the-group-room": "Invite a guest or camera source to publish into the group room",
"if-disabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If disabled, the invited guest will not be able to see or hear anyone in the room.",
"use-this-link-in-the-obs-browser-source-to-capture-the-video-or-audio": "Use this link as a browser source in your Studio software to capture the video or audio",
"use-this-link-in-the-obs-browser-source-to-capture-the-video-or-audio": "Use this link as a Browser Source to capture the video or audio",
"if-disabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If disabled, you must manually add a video to a scene for it to appear.",
"disables-echo-cancellation-and-improves-audio-quality": "Disables Echo Cancellation and improves audio quality",
"audio-only-sources-are-visually-hidden-from-scenes": "Audio-only sources are visually hidden from scenes",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"guest-will-be-prompted-to-enter-a-display-name": "Guest will be prompted to enter a Display Name",
"display-names-will-be-shown-in-the-bottom-left-corner-of-videos": "Display Names will be shown in the bottom-left corner of videos",
"guests-not-actively-speaking-will-be-hidden": "Guests not actively speaking will be hidden",
@ -58,19 +37,30 @@
"the-default-microphone-will-be-pre-selected-for-the-guest": "The default microphone will be pre-selected for the guest",
"the-default-camera-device-will-selected-automatically": "The default camera device will selected automatically",
"the-guest-won-t-have-access-to-changing-camera-settings-or-screenshare": "The guest won't have access to changing camera settings or screenshare",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"allow-the-guests-to-pick-a-virtual-backscreen-effect": "Allow the guests to pick a virtual backscreen effect",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"increase-video-quality-that-guests-in-room-see-": "Increase video quality that guests in room see.",
"the-guest-will-not-see-their-own-self-preview-after-joining": "The guest will not see their own self-preview after joining",
"guests-will-have-an-option-to-poke-the-director-by-pressing-a-button": "Guests will have an option to poke the Director by pressing a button",
"add-an-audio-compressor-to-the-guest-s-microphone": "Add an audio compressor to the guest's microphone",
"add-an-equalizer-to-the-guest-s-microphone-that-the-director-can-control": "Add an Equalizer to the guest's microphone that the director can control",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-guest-can-only-see-the-director-s-video-if-provided": "The guest can only see the Director's video, if provided",
"the-guest-s-microphone-will-be-muted-on-joining-they-can-unmute-themselves-": "The guest's microphone will be muted on joining. They can unmute themselves.",
"the-guest-will-not-be-asked-for-a-video-device-on-connection": "The guest will not be asked for a video device on connection",
"have-the-guest-join-muted-so-only-the-director-can-unmute-the-guest-": "Have the guest join muted, so only the director can Unmute the guest.",
"the-guest-will-not-be-asked-for-a-video-device-on-connection": "The guest will not be asked for a video device on connection",
"make-the-invite-url-encoded-so-parameters-are-harder-to-tinker-with-by-guests": "Make the invite URL encoded, so parameters are harder to tinker with by guests",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"move-the-user-to-another-room-controlled-by-another-director": "Move the user to another room, controlled by another director",
"send-a-direct-message-to-this-user-": "Send a Direct Message to this user.",
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
@ -110,8 +100,14 @@
"set-to-audio-channel-6": "Set to Audio Channel 6",
"remote-audio-settings": "Remote Audio Settings",
"advanced-video-settings": "Advanced Video Settings",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"add-to-scene-2": "Add to Scene 2",
"activate-or-reload-this-video-device-": "Activate or Reload this video device.",
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
"improve-performance-and-quality-with-this-tip": "Improve performance and quality with this tip",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"cannot-see-videos": "Cannot see videos",
"cannot-hear-others": "Cannot hear others",
"see-director-only": "See director only",
@ -119,79 +115,26 @@
"raise-hand-button": "Raise hand button",
"show-labels": "Show labels",
"transfer-to-a-new-room": "Transfer to a new Room",
"enable-custom-password": "Enable custom password"
"enable-custom-password": "Enable custom password",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"copy-this-url": "Copy this URL into your studio's \"browser Source\"",
"copy-this-url": "Copy this URL into your \"browser source\"",
"you-are-in-the-control-center": "Control center for room:",
"joining-room": "You are in room",
"add-group-chat": "Create a Room",
"rooms-allow-for": "Rooms allow for group-chat and the tools to manage multiple guests.",
"room-name": "Room Name",
"password-input-field": "Password",
"guests-only-see-director": "Guests can only see the Director's Video",
"scenes-can-see-director": "Director will also be a performer",
"default-codec-select": "Preferred Video Codec: ",
"enter-the-rooms-control": "Enter the Room's Control Center",
"show-tips": "Show me some tips..",
"added-notes": "\n\t\t\t\t\t\t\t\t<u>\n\t\t\t\t\t\t\t\t\t<i>Important Tips:</i><br><br>\n\t\t\t\t\t\t\t\t</u>\n\t\t\t\t\t\t\t\t<li>Disabling video sharing between guests will improve performance</li>\n\t\t\t\t\t\t\t\t<li>Invite only guests to the room that you trust.</li>\n\t\t\t\t\t\t\t\t<li>The \"Recording\" option is considered experimental.</li>",
"back": "Back",
"add-your-camera": "Add your Camera",
"ask-for-permissions": "Allow Access to Camera/Microphone",
"waiting-for-camera": "Waiting for Camera to Load",
"video-source": " Video Source ",
"max-resolution": "Max Resolution",
"balanced": "Balanced",
"smooth-cool": "Smooth and Cool",
"select-audio-source": " Audio Source(s) ",
"no-audio": "No Audio",
"select-output-source": " Audio Output Destination: ",
"select-digital-effect": " Digital Video Effects: ",
"no-effects-applied": "No effects applied",
"blurred-background": "Blurred background",
"digital-greenscreen": "Digital greenscreen",
"virtual-background": "Virtual background",
"add-a-password": " Add a Password:",
"use-chrome-instead": "Consider using a Chromium-based browser instead.<br>\n \t\t\t\t\t\tSafari is more prone to having audio issues",
"remote-screenshare-obs": "Remote Screenshare",
"select-screen-to-share": "SELECT SCREEN TO SHARE",
"audio-sources": "Audio Sources",
"create-reusable-invite": "Create Reusable Invite",
"here-you-can-pre-generate": "Here you can pre-generate a reusable Browser Source link and a related guest invite link.",
"generate-invite-link": "GENERATE THE INVITE LINK",
"advanced-paramaters": "Advanced Options",
"unlock-video-bitrate": "Unlock Video Bitrate (20mbps)",
"force-vp9-video-codec": "Force VP9 Video Codec",
"enable-stereo-and-pro": "Enable Stereo and Pro HD Audio",
"video-resolution": "Video Resolution: ",
"hide-mic-selection": "Force Default Microphone",
"hide-screen-share": "Hide Screenshare Option",
"allow-remote-control": "Remote Control Camera Zoom (android)",
"obfuscate_url": "Obfuscate the Invite URL",
"add-a-password-to-stream": " Add a password:",
"add-the-guest-to-a-room": " Add the guest to a room:",
"invite-group-chat-type": "This room guest can:",
"can-see-and-hear": "Can see and hear the group chat",
"can-hear-only": "Can only hear the group chat",
"cant-see-or-hear": "Cannot hear or see the group chat",
"share-local-video-file": "Stream Media File",
"select-the-video-files-to-share": "SELECT THE VIDEO FILES TO SHARE",
"share-website-iframe": "Share Website",
"enter-the-website-URL-you-wish-to-share": "Enter the URL website you wish to share.",
"run-a-speed-test": "Run a Speed Test",
"read-the-guides": "Browse the Guides",
"info-blob": "",
"push-to-talk-enable": " enable director`s microphone or video<br>(only guests can see this feed)",
"hide-the-links": " LINKS (GUEST INVITES &amp; SCENES)",
"click-for-quick-room-overview": "\n\t\t\t\t\t\t<i class=\"las la-question-circle\"></i> <span data-translate=\"click-here-for-help\">Click Here for a quick overview and help</span>\n\t\t\t\t\t",
"click-here-for-help": "Click Here for a quick overview and help",
"welcome-to-control-room": "\n\t\t\t\t\t\t<b>Welcome. This is the director's control-room for the group-chat.</b><br><br>\n\t\t\t\t\t\tYou can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.\n\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t<font style=\"color:red\">Known Limitations with Group Rooms:</font><br>\n\t\t\t\t\t\t<li>A group room can handle up to around 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>Videos will appear of low quality on purpose for guests and director; this is to save bandwidth and CPU resources.",
"welcome-to-control-room": "\n\t\t\t\t\t\t<b>Welcome. This is the director's control-room for the group-chat.</b><br><br>\n\t\t\t\t\t\tYou can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.\n\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\tA group room can handle normally around 6 to 20 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room\n\t\t\t\t\t",
"invite-users-to-join": "Guests can use the link to join the group room",
"guests-hear-others": "Guests hear others",
"capture-a-group-scene": "CAPTURE A GROUP SCENE",
"this-is-obs-browser-source-link": "Use in your studio software to capture the group video mix",
"this-is-obs-browser-source-link": "Use studio software to capture the group video mix",
"auto-add-guests": "Auto-add guests",
"pro-audio-mode": "Pro-audio mode",
"hide-audio-only-sources": "Hide audio-only sources",
"remote-monitoring": "Invite saved to cookie",
"ask-for-display-name": "Ask for display name",
"show-display-names": "Show display names",
"show-active-speaker": "Show active speakers",
@ -200,24 +143,29 @@
"hide-setting-buttons": "Hide settings button",
"mini-self-preview": "Mini self-preview",
"virtual-backgrounds": "Virtual backgrounds",
"fade-videos-in": "Fade videos in",
"powerful-computers-only": "Only use with powerful computers and small groups!!",
"guests-see-HD-video": "Guests see HD video",
"no-self-preview": "Disable self-preview",
"raise-hand-button": "Display 'raise-hand' button",
"enable-compressor": "Enable audio compressor",
"enable-equalizer": "Enable equalizer as option",
"show-guest-tips": "Show guest setup tips",
"low-cpu=broadcast-codec": "Low-CPU broadcast codec",
"only-see-director-feed": "Only see the director's feed",
"mute-microphone-by-default": "Mute microphone by default",
"mute-microphone-by-default": "Muted; guest can unmute",
"unmute-by-director-only": "Muted; director can unmute",
"guest-joins-with-no-camera": "Guest joins with no camera",
"unmute-by-director-only": "Unmute by director only",
"obfuscate-link": "Obfuscate link and parameters",
"this-can-reduce-packet-loss": "This can reduce video corruption caused by packet loss",
"this-can-reduce-packet-loss": "Can reduce packet loss video corruption",
"use-h264-codec": "Use H264 codec",
"show-active-speakers": "Show active speakers",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"force-mono-audio": "Force mono audio",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"learn-more-about-params": "Learn more about URL parameters at ",
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
"forward-to-room": "Transfer",
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
"disconnect-guest": "Hangup",
@ -225,6 +173,7 @@
"add-to-scene": "add to scene 1",
"mute-guest": "mute guest",
"More-scene-options": "More scene options",
"add-to-scene2": "add to scene 2",
"mute-scene": "mute in scene",
"force-keyframe": "Rainbow Puke Fix",
"stats-remote": " Scene Stats",
@ -237,13 +186,32 @@
"order-up": "<i class=\"las la-plus\"></i>",
"change-url": "Change URL",
"change-params": "URL Params",
"record-local": " Record",
"record-local": " Record Local",
"record-remote": " Record Remote",
"change-to-low-quality": "&nbsp;&nbsp;<i class=\"las la-video-slash\"></i>",
"change-to-medium-quality": "&nbsp;&nbsp;<i class=\"las la-video\"></i>",
"change-to-high-quality": "&nbsp;&nbsp;<i class=\"las la-binoculars\"></i>",
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings",
"advanced-camera-settings": "<i class=\"las la-sliders-h\"></i> Video Settings",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record",
"video-source": " Video Source ",
"max-resolution": "Max Resolution",
"balanced": "Balanced",
"smooth-cool": "Smooth and Cool",
"select-audio-source": " Audio Source(s) ",
"select-output-source": " Audio Output Destination: ",
"select-digital-effect": " Digital Video Effects: ",
"no-effects-applied": "No effects applied",
"blurred-background": "Blurred background",
"digital-greenscreen": "Digital greenscreen",
"virtual-background": "Virtual background",
"select-local-image": "Select Local Image",
"close-settings": "Close Settings",
"advanced": "Advanced ",
@ -262,14 +230,56 @@
},
"placeholders": {
"join-by-room-name-here": "Join by Room Name here",
"enter-a-room-name-here": "Enter a Room Name here",
"optional-room-password-here": "Optional room password here",
"optional": "optional",
"give-this-media-source-a-name-optional-": "Give this media source a name (optional)",
"add-an-optional-password": "Add an optional password",
"enter-room-name-here": "Enter Room name here",
"enter-your-message-here": "Enter your message here",
"enter-chat-message-to-send-here": "Enter chat message to send here",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Připojit se s názvem místnosti zde",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Sem zadejte vaši zprávu",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Raum über Namen betreten",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Message",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -1,6 +1,6 @@
{
"titles": {
"join-by-room-name-here": "Enter a room name to quick join",
"join-by-room-name-here": "Geben Sie einen Raumnamen ein",
"join-room": "Join room",
"load-the-next-guest-in-queue": "Load the next guest in queue",
"toggle-the-chat": "Toggle the Chat",
@ -9,48 +9,27 @@
"disable-the-camera": "Disable the Camera",
"share-a-screen-with-others": "Share a Screen with others",
"create-a-secondary-stream": "Create a Secondary Stream",
"settings": "Settings",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"hangup-the-call": "Hangup the Call",
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
"record-your-stream-to-disk": "Record your stream to disk",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
"submit-any-error-logs": "Submit any error logs",
"show-help-info": "Show Help Info",
"language-options": "Language Options",
"add-to-calendar": "Add to Calendar",
"add-group-chat-to-obs": "Add Group Chat",
"for-large-group-rooms-this-option-can-reduce-the-load-on-remote-guests-substantially": "For large group rooms, this option can reduce the load on remote guests substantially",
"the-director-will-be-visible-in-scenes-as-if-a-performer-themselves-": "The director will be visible in scenes, as if a performer themselves.",
"useful-if-you-want-to-perform-and-direct-at-the-same-time": "Useful if you want to perform and direct at the same time",
"which-video-codec-would-you-want-used-by-default-": "Which video codec would you want used by default?",
"you-ll-enter-as-the-room-s-director": "You'll enter as the room's director",
"add-your-camera-to-obs": "Add your Camera",
"start-streaming": "start streaming",
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
"improve-performance-and-quality-with-this-tip": "Improve performance and quality with this tip",
"remote-screenshare-into-obs": "Remote Screenshare",
"create-reusable-invite": "Create Reusable Invite",
"ideal-for-1080p60-gaming-if-your-computer-and-upload-are-up-for-it": "Ideal for 1080p60 gaming, if your computer and upload are up for it",
"better-video-compression-and-quality-at-the-cost-of-increased-cpu-encoding-load": "Better video compression and quality at the cost of increased CPU encoding load",
"disable-digital-audio-effects-and-increase-audio-bitrate": "Disable digital audio-effects and increase audio bitrate",
"the-guest-will-not-have-a-choice-over-audio-options": "The guest will not have a choice over audio-options",
"the-guest-will-only-be-able-to-select-their-webcam-as-an-option": "The guest will only be able to select their webcam as an option",
"hold-ctrl-and-the-mouse-wheel-to-zoom-in-and-out-remotely-of-compatible-video-streams": "Hold CTRL and the mouse wheel to zoom in and out remotely of compatible video streams",
"encode-the-url-so-that-it-s-harder-for-a-guest-to-modify-the-settings-": "Encode the URL so that it's harder for a guest to modify the settings.",
"add-a-password-to-make-the-stream-inaccessible-to-those-without-the-password": "Add a password to make the stream inaccessible to those without the password",
"add-the-guest-to-a-group-chat-room-it-will-be-created-automatically-if-needed-": "Add the guest to a group-chat room; it will be created automatically if needed.",
"customize-the-room-settings-for-this-guest": "Customize the room settings for this guest",
"more-options": "More Options",
"hold-ctrl-or-cmd-to-select-multiple-files": "Hold CTRL (or CMD) to select multiple files",
"enter-an-https-url": "Enter an HTTPS URL",
"creative-commons-by-3-0": "Creative Commons BY 3.0",
"youtube-video-demoing-how-to-do-this": "Youtube Video demoing how to do this",
"invite-a-guest-or-camera-source-to-publish-into-the-group-room": "Invite a guest or camera source to publish into the group room",
"if-disabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If disabled, the invited guest will not be able to see or hear anyone in the room.",
"use-this-link-in-the-obs-browser-source-to-capture-the-video-or-audio": "Use this link as a browser source in your Studio software to capture the video or audio",
"use-this-link-in-the-obs-browser-source-to-capture-the-video-or-audio": "Use this link in the OBS Browser Source to capture the video or audio",
"if-disabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If disabled, you must manually add a video to a scene for it to appear.",
"disables-echo-cancellation-and-improves-audio-quality": "Disables Echo Cancellation and improves audio quality",
"audio-only-sources-are-visually-hidden-from-scenes": "Audio-only sources are visually hidden from scenes",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"guest-will-be-prompted-to-enter-a-display-name": "Guest will be prompted to enter a Display Name",
"display-names-will-be-shown-in-the-bottom-left-corner-of-videos": "Display Names will be shown in the bottom-left corner of videos",
"guests-not-actively-speaking-will-be-hidden": "Guests not actively speaking will be hidden",
@ -58,19 +37,30 @@
"the-default-microphone-will-be-pre-selected-for-the-guest": "The default microphone will be pre-selected for the guest",
"the-default-camera-device-will-selected-automatically": "The default camera device will selected automatically",
"the-guest-won-t-have-access-to-changing-camera-settings-or-screenshare": "The guest won't have access to changing camera settings or screenshare",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"allow-the-guests-to-pick-a-virtual-backscreen-effect": "Allow the guests to pick a virtual backscreen effect",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"increase-video-quality-that-guests-in-room-see-": "Increase video quality that guests in room see.",
"the-guest-will-not-see-their-own-self-preview-after-joining": "The guest will not see their own self-preview after joining",
"guests-will-have-an-option-to-poke-the-director-by-pressing-a-button": "Guests will have an option to poke the Director by pressing a button",
"add-an-audio-compressor-to-the-guest-s-microphone": "Add an audio compressor to the guest's microphone",
"add-an-equalizer-to-the-guest-s-microphone-that-the-director-can-control": "Add an Equalizer to the guest's microphone that the director can control",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-guest-can-only-see-the-director-s-video-if-provided": "The guest can only see the Director's video, if provided",
"the-guest-s-microphone-will-be-muted-on-joining-they-can-unmute-themselves-": "The guest's microphone will be muted on joining. They can unmute themselves.",
"the-guest-will-not-be-asked-for-a-video-device-on-connection": "The guest will not be asked for a video device on connection",
"have-the-guest-join-muted-so-only-the-director-can-unmute-the-guest-": "Have the guest join muted, so only the director can Unmute the guest.",
"the-guest-will-not-be-asked-for-a-video-device-on-connection": "The guest will not be asked for a video device on connection",
"make-the-invite-url-encoded-so-parameters-are-harder-to-tinker-with-by-guests": "Make the invite URL encoded, so parameters are harder to tinker with by guests",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"move-the-user-to-another-room-controlled-by-another-director": "Move the user to another room, controlled by another director",
"send-a-direct-message-to-this-user-": "Send a Direct Message to this user.",
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
@ -110,8 +100,14 @@
"set-to-audio-channel-6": "Set to Audio Channel 6",
"remote-audio-settings": "Remote Audio Settings",
"advanced-video-settings": "Advanced Video Settings",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"add-to-scene-2": "Add to Scene 2",
"activate-or-reload-this-video-device-": "Activate or Reload this video device.",
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
"improve-performance-and-quality-with-this-tip": "Improve performance and quality with this tip",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"cannot-see-videos": "Cannot see videos",
"cannot-hear-others": "Cannot hear others",
"see-director-only": "See director only",
@ -119,79 +115,26 @@
"raise-hand-button": "Raise hand button",
"show-labels": "Show labels",
"transfer-to-a-new-room": "Transfer to a new Room",
"enable-custom-password": "Enable custom password"
"enable-custom-password": "Enable custom password",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"copy-this-url": "Copy this URL into your studio's \"browser Source\"",
"copy-this-url": "Copy this URL into an OBS \"Browser Source\"",
"you-are-in-the-control-center": "Control center for room:",
"joining-room": "You are in room",
"add-group-chat": "Create a Room",
"rooms-allow-for": "Rooms allow for group-chat and the tools to manage multiple guests.",
"room-name": "Room Name",
"password-input-field": "Password",
"guests-only-see-director": "Guests can only see the Director's Video",
"scenes-can-see-director": "Director will also be a performer",
"default-codec-select": "Preferred Video Codec: ",
"enter-the-rooms-control": "Enter the Room's Control Center",
"show-tips": "Show me some tips..",
"added-notes": "\n\t\t\t\t\t\t\t\t<u>\n\t\t\t\t\t\t\t\t\t<i>Important Tips:</i><br><br>\n\t\t\t\t\t\t\t\t</u>\n\t\t\t\t\t\t\t\t<li>Disabling video sharing between guests will improve performance</li>\n\t\t\t\t\t\t\t\t<li>Invite only guests to the room that you trust.</li>\n\t\t\t\t\t\t\t\t<li>The \"Recording\" option is considered experimental.</li>",
"back": "Back",
"add-your-camera": "Add your Camera",
"ask-for-permissions": "Allow Access to Camera/Microphone",
"waiting-for-camera": "Waiting for Camera to Load",
"video-source": " Video Source ",
"max-resolution": "Max Resolution",
"balanced": "Balanced",
"smooth-cool": "Smooth and Cool",
"select-audio-source": " Audio Source(s) ",
"no-audio": "No Audio",
"select-output-source": " Audio Output Destination: ",
"select-digital-effect": " Digital Video Effects: ",
"no-effects-applied": "No effects applied",
"blurred-background": "Blurred background",
"digital-greenscreen": "Digital greenscreen",
"virtual-background": "Virtual background",
"add-a-password": " Add a Password:",
"use-chrome-instead": "Consider using a Chromium-based browser instead.<br>\n \t\t\t\t\t\tSafari is more prone to having audio issues",
"remote-screenshare-obs": "Remote Screenshare",
"select-screen-to-share": "SELECT SCREEN TO SHARE",
"audio-sources": "Audio Sources",
"create-reusable-invite": "Create Reusable Invite",
"here-you-can-pre-generate": "Here you can pre-generate a reusable Browser Source link and a related guest invite link.",
"generate-invite-link": "GENERATE THE INVITE LINK",
"advanced-paramaters": "Advanced Options",
"unlock-video-bitrate": "Unlock Video Bitrate (20mbps)",
"force-vp9-video-codec": "Force VP9 Video Codec",
"enable-stereo-and-pro": "Enable Stereo and Pro HD Audio",
"video-resolution": "Video Resolution: ",
"hide-mic-selection": "Force Default Microphone",
"hide-screen-share": "Hide Screenshare Option",
"allow-remote-control": "Remote Control Camera Zoom (android)",
"obfuscate_url": "Obfuscate the Invite URL",
"add-a-password-to-stream": " Add a password:",
"add-the-guest-to-a-room": " Add the guest to a room:",
"invite-group-chat-type": "This room guest can:",
"can-see-and-hear": "Can see and hear the group chat",
"can-hear-only": "Can only hear the group chat",
"cant-see-or-hear": "Cannot hear or see the group chat",
"share-local-video-file": "Stream Media File",
"select-the-video-files-to-share": "SELECT THE VIDEO FILES TO SHARE",
"share-website-iframe": "Share Website",
"enter-the-website-URL-you-wish-to-share": "Enter the URL website you wish to share.",
"run-a-speed-test": "Run a Speed Test",
"read-the-guides": "Browse the Guides",
"info-blob": "",
"push-to-talk-enable": " enable director`s microphone or video<br>(only guests can see this feed)",
"hide-the-links": " LINKS (GUEST INVITES &amp; SCENES)",
"click-for-quick-room-overview": "\n\t\t\t\t\t\t<i class=\"las la-question-circle\"></i> <span data-translate=\"click-here-for-help\">Click Here for a quick overview and help</span>\n\t\t\t\t\t",
"click-here-for-help": "Click Here for a quick overview and help",
"welcome-to-control-room": "\n\t\t\t\t\t\t<b>Welcome. This is the director's control-room for the group-chat.</b><br><br>\n\t\t\t\t\t\tYou can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.\n\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t<font style=\"color:red\">Known Limitations with Group Rooms:</font><br>\n\t\t\t\t\t\t<li>A group room can handle up to around 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>Videos will appear of low quality on purpose for guests and director; this is to save bandwidth and CPU resources.",
"welcome-to-control-room": "\n\t\t\t\t\t\t<b>Welcome. This is the director's control-room for the group-chat.</b><br><br>\n\t\t\t\t\t\tYou can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.\n\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t<font style=\"color:red\">Known Limitations with Group Rooms:</font><br>\n\t\t\t\t\t\t<li>A group room can handle up to around 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room. To achieve more than around 7-guests though, you will likely want to <a href=\"https://www.youtube.com/watch?v=bpRa8-UYCGc\" title=\"Youtube Video demoing how to do this\">disable video sharing between guests</a>. Using &amp;broadcast, &amp;roombitrate=0 or &amp;novideo are options there.</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>Videos will appear of low quality on purpose for guests and director; this is to save bandwidth and CPU resources. It will be high-quality within OBS still though.</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>The state of the scenes, such as which videos are active in a scene, are lost when the director resets the control-room or the scene.</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tFurther Notes:<br><br>\n\t\t\t\t\t\t<li>Links to Solo-views of each guest video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\n\t\t\t\t\t\t<li>You can use the auto-mixing Group Scenes, the green links, to auto arrange multiple videos for you in OBS.</li>\n\t\t\t\t\t\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\n\t\t\t\t\t\t<li>If you transfer a guest from one room to another, they won't know which room they have been transferred to.</li>\n\t\t\t\t\t\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps. Setting higher bitrates will improve motion.</li>\n\t\t\t\t\t\t<li>VP8 is typically the default video codec, but using &amp;codec=vp9 or &amp;codec=h264 as a URL in OBS can help to reduce corrupted video puke issues.</li>\n\t\t\t\t\t\t<li>&amp;stereo=2 can be added to guests to turn off audio effects, such as echo cancellation and noise-reduction.</li>\n\t\t\t\t\t\t<li>https://invite.cam is a free service provided that can help obfuscuate the URL parameters of an invite link given to guests.</li>\n\t\t\t\t\t\t<li>Adding &amp;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>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\n\t\t\t\t\t\tFor advanced URL options and parameters, <a href=\"https://docs.vdo.ninja/advanced-settings\">see the Wiki.</a>\n\t\t\t\t\t",
"invite-users-to-join": "Guests can use the link to join the group room",
"guests-hear-others": "Guests hear others",
"capture-a-group-scene": "CAPTURE A GROUP SCENE",
"this-is-obs-browser-source-link": "Use in your studio software to capture the group video mix",
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
"auto-add-guests": "Auto-add guests",
"pro-audio-mode": "Pro-audio mode",
"hide-audio-only-sources": "Hide audio-only sources",
"remote-monitoring": "Invite saved to cookie",
"ask-for-display-name": "Ask for display name",
"show-display-names": "Show display names",
"show-active-speaker": "Show active speakers",
@ -200,24 +143,29 @@
"hide-setting-buttons": "Hide settings button",
"mini-self-preview": "Mini self-preview",
"virtual-backgrounds": "Virtual backgrounds",
"fade-videos-in": "Fade videos in",
"powerful-computers-only": "Only use with powerful computers and small groups!!",
"guests-see-HD-video": "Guests see HD video",
"no-self-preview": "Disable self-preview",
"raise-hand-button": "Display 'raise-hand' button",
"enable-compressor": "Enable audio compressor",
"enable-equalizer": "Enable equalizer as option",
"show-guest-tips": "Show guest setup tips",
"low-cpu=broadcast-codec": "Low-CPU broadcast codec",
"only-see-director-feed": "Only see the director's feed",
"mute-microphone-by-default": "Mute microphone by default",
"mute-microphone-by-default": "Muted; guest can unmute",
"unmute-by-director-only": "Muted; director can unmute",
"guest-joins-with-no-camera": "Guest joins with no camera",
"unmute-by-director-only": "Unmute by director only",
"obfuscate-link": "Obfuscate link and parameters",
"this-can-reduce-packet-loss": "This can reduce video corruption caused by packet loss",
"this-can-reduce-packet-loss": "Can reduce packet loss video corruption in OBS on PC",
"use-h264-codec": "Use H264 codec",
"show-active-speakers": "Show active speakers",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"force-mono-audio": "Force mono audio",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"learn-more-about-params": "Learn more about URL parameters at ",
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
"forward-to-room": "Transfer",
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
"disconnect-guest": "Hangup",
@ -225,6 +173,7 @@
"add-to-scene": "add to scene 1",
"mute-guest": "mute guest",
"More-scene-options": "More scene options",
"add-to-scene2": "add to scene 2",
"mute-scene": "mute in scene",
"force-keyframe": "Rainbow Puke Fix",
"stats-remote": " Scene Stats",
@ -237,13 +186,32 @@
"order-up": "<i class=\"las la-plus\"></i>",
"change-url": "Change URL",
"change-params": "URL Params",
"record-local": " Record",
"record-local": " Record Local",
"record-remote": " Record Remote",
"change-to-low-quality": "&nbsp;&nbsp;<i class=\"las la-video-slash\"></i>",
"change-to-medium-quality": "&nbsp;&nbsp;<i class=\"las la-video\"></i>",
"change-to-high-quality": "&nbsp;&nbsp;<i class=\"las la-binoculars\"></i>",
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings",
"advanced-camera-settings": "<i class=\"las la-sliders-h\"></i> Video Settings",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record",
"video-source": " Video Source ",
"max-resolution": "Max Resolution",
"balanced": "Balanced",
"smooth-cool": "Smooth and Cool",
"select-audio-source": " Audio Source(s) ",
"select-output-source": " Audio Output Destination: ",
"select-digital-effect": " Digital Video Effects: ",
"no-effects-applied": "No effects applied",
"blurred-background": "Blurred background",
"digital-greenscreen": "Digital greenscreen",
"virtual-background": "Virtual background",
"select-local-image": "Select Local Image",
"close-settings": "Close Settings",
"advanced": "Advanced ",
@ -262,14 +230,56 @@
},
"placeholders": {
"join-by-room-name-here": "Join by Room Name here",
"enter-a-room-name-here": "Enter a Room Name here",
"optional-room-password-here": "Optional room password here",
"optional": "optional",
"give-this-media-source-a-name-optional-": "Give this media source a name (optional)",
"add-an-optional-password": "Add an optional password",
"enter-room-name-here": "Enter Room name here",
"enter-your-message-here": "Enter your message here",
"enter-chat-message-to-send-here": "Enter chat message to send here",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -119,7 +119,29 @@
"raise-hand-button": "Raise hand button",
"show-labels": "Mostrar Rótulos",
"transfer-to-a-new-room": "Transferir a nueva Sala",
"enable-custom-password": "Activar password personalizado"
"enable-custom-password": "Activar password personalizado",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"copy-this-url": "Copia esta URL como fuente \"Navegador\" de OBS",
@ -184,7 +206,7 @@
"hide-the-links": " ENLACES (INVITACIONES &amp; ESCENAS)",
"click-for-quick-room-overview": "\n\t\t\t\t\t\t<i class=\"las la-question-circle\"></i> <span data-translate=\"click-here-for-help\">Pulsar aquí para un resumen rápido y ayuda</span>\n\t\t\t\t\t",
"click-here-for-help": "Pulsar aquí para un resumen rápido y ayuda",
"welcome-to-control-room": "\n\t\t\t\t\t\t<b>Bienvenido. Esta es la sala de control del director para el grupo de chat.</b><br><br>\n\t\t\t\t\t\tPuedes organizar un grupo de chat con amigos utilizando una sala. Comparte el enlace azul con los invitados para que puedan entrar directamente al chat.\n\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t<font style=\"color:red\">Limitaciones conocidas de las Salas:</font><br>\n\t\t\t\t\t\t<li>Una sala grupal puede gestionar hasta unos 30 invitados, dependiendo de varios factores, incluyendo CPU y ancho de banda disponible en todos los invitados en la sala.</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>El Video aparece en baja calidad a propósito en los invitados y director; esto es para reducir los recursos de ancho de banda y CPU.",
"welcome-to-control-room": "\n\t\t\t\t\t\t<b>Bienvenido. Esta es la sala de control del director para el grupo de chat.</b><br><br>\n\t\t\t\t\t\tPuedes organizar un grupo de chat con amigos utilizando una sala. Comparte el enlace azul con los invitados para que puedan entrar directamente al chat.\n\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t<font style=\"color:red\">Limitaciones conocidas de las Salas:</font><br>\n\t\t\t\t\t\t<li>Una sala grupal puede gestionar hasta unos 30 invitados, dependiendo de varios factores, incluyendo CPU y ancho de banda disponible en todos los invitados en la sala.</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>El Video aparece en baja calidad a propósito en los invitados y director; esto es para reducir los recursos de ancho de banda y CPU.</li>",
"invite-users-to-join": "Los Invitados pueden utilizar el enlace para unirse sala grupal",
"guests-hear-others": "Invitados escuchan a otros",
"capture-a-group-scene": "CAPTURA UNA ESCENA DE GRUPO",
@ -258,7 +280,24 @@
"add-to-calendar": "Añadir detalles a tu Calendario:",
"add-to-google-calendar": "Añadir a Calendario Google",
"add-to-outlook-calendar": "Añadir a Calendario Outlook",
"add-to-yahoo-calendar": "Añadir a Calendario Yahoo"
"add-to-yahoo-calendar": "Añadir a Calendario Yahoo",
"push-to-talk-enable": " enable director`s microphone or video<br>(only guests can see this feed)",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Unirse por Nombre de Sala aquí",
@ -270,6 +309,54 @@
"enter-chat-message-to-send-here": "Introduce el mensaje de chat a enviar aquí",
"optional": "opcional",
"enter-the-room-name-here": "Introduce el nombre de Sala aquí",
"enter-the-room-password-here": "Introduce el password de la Sala aquí"
"enter-the-room-password-here": "Introduce el password de la Sala aquí",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Rejoindre via le nom de salle ici",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Saisir un message ici pour l'envoyer dans le tchat",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Join by Room Name here",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Enter chat message to send here",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Join by Room Name here",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Enter chat message to send here",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Ga binnen met een kamer naam",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Type hier om te chatten",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja - Pig Latin",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Erehay ouyay ancay epray-enerategay",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Erehay ouyay ancay epray-enerategay",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "new-display-name",
"submit-error-report": "submit-error-report",
"director-redirect-1": "director-redirect-1",
"director-redirect-2": "\n\ndirector-redirect-2.",
"add-a-label": "add-a-labelA",
"audio-processing-disabled": "audio-processing-disabledA",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.AA</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.A",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.A",
"director": "DirectorA",
"unknown-user": "Unknown UserA",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?A",
"load-previous-session": "Would you like to load your previous session's settings?A",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)A",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)A",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.A",
"enter-display-name": "Please enter your display name:A",
"enter-new-display-name": "Enter a new Display Name for this streamA",
"what-bitrate": "What bitrate would you like to record at? (kbps)A",
"enter-website": "Enter a website URL to shareA",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)A",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: A",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscoreA",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.A",
"share-with-trusted": "Share only with those you trustA",
"pass-recommended": "A password is recommendedA",
"insecure-room-name": "Insecure room name.A",
"allowed-chars": "Allowed charsA",
"transfer": "transferA",
"armed": "armedA",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)A",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)A",
"change-url": "change URLA",
"mute-in-scene": "mute in sceneA",
"unmute-guest": "un-mute guestA",
"undeafen": "un-deafenA",
"deafen": "deafen guestA",
"unblind": "un-blindA",
"blind": "blind guestA",
"unmute": "un-muteA",
"mute-guest": "mute-guestA",
"unhide": "unhide-guestA",
"hide-guest": "hide-guestA",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Introduza aqui numa sala pelo seu nome",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Introduza mensagem a enviar aqui",
"optional": "opcional",
"enter-the-room-name-here": "Introduza aqui o nome da sala",
"enter-the-room-password-here": "Introduza aqui a password da sala"
"enter-the-room-password-here": "Introduza aqui a password da sala",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja (RU)",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Join by Room Name here",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Enter chat message to send here",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -133,7 +133,29 @@
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8"
"add-to-scene-8": "Add to Scene 8",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
@ -288,7 +310,23 @@
"invisible-guests": "Not Visible",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"add-to-scene2": "add to scene 2",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record"
},
"placeholders": {
"join-by-room-name-here": "Join by Room Name here",
@ -300,6 +338,54 @@
"enter-chat-message-to-send-here": "Enter chat message to send here",
"optional": "optional",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
"enter-the-room-password-here": "Enter the room password here",
"enter-your-message-here": "Enter your message here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}

View File

@ -81,6 +81,7 @@ const updateList = [
"pt",
"ru",
"tr",
"uk",
"blank"
]; // list of languages to update. Update this if you add a new language.
@ -107,10 +108,13 @@ allPlaceholders.forEach((ele) => {
defaultTransPlaceholders[key] = ele.placeholder;
});
const combinedTrans = {};
combinedTrans.titles = defaultTransTitles;
combinedTrans.innerHTML = defaultTrans;
combinedTrans.placeholders = defaultTransPlaceholders;
//const combinedTrans = {};
//combinedTrans.titles = defaultTransTitles;
//combinedTrans.innerHTML = defaultTrans;
//combinedTrans.placeholders = defaultTransPlaceholders;
var counter = 0;
for (const i in updateList) {
@ -138,12 +142,30 @@ for (const i in updateList) {
const key = ele.dataset.key;
newPlaceholders[key] = ele.placeholder;
});
var miscellaneous = {};
if ("miscellaneous" in suceess[1]){
if (miscTranslations){
Object.keys(miscTranslations).forEach(key => {
if (key in suceess[1].miscellaneous) {
miscellaneous[key] = suceess[1].miscellaneous[key];
} else {
miscellaneous[key] = miscTranslations[key];
}
});
} else {
miscellaneous = suceess[1].miscellaneous;
}
} else if (miscTranslations){
miscellaneous = miscTranslations;
}
// //// DOWNLOAD UPDATED TRANSLATION
const outputTrans = {};
outputTrans.titles = newTransTitles;
outputTrans.innerHTML = newTrans;
outputTrans.placeholders = newPlaceholders;
outputTrans.miscellaneous = miscellaneous;
downloadTranslation(ln, outputTrans);
}
// //////// RESET THING BACK

View File

@ -102,7 +102,52 @@
"set-to-audio-channel-6": "Аудіоканал 1-6",
"set-to-audio-channel-7": "Аудіоканал 1-7",
"set-to-audio-channel-8": "Аудіоканал 1-8",
"force-the-remote-sender-to-issue-a-keyframe-to-all-scenes-fixing-pixel-smearing-issues-": "Примусити відправника вставляти ключові кадри до усіх сцен (вирішує проблему розсипання картинки)"
"force-the-remote-sender-to-issue-a-keyframe-to-all-scenes-fixing-pixel-smearing-issues-": "Примусити відправника вставляти ключові кадри до усіх сцен (вирішує проблему розсипання картинки)",
"share-a-website-as-an-embedded-iframe": "Share a website as an embedded iFRAME",
"room-settings": "Room Settings",
"your-audio-and-video-settings": "Your audio and video Settings",
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "You can also enable the director`s Video Output afterwards by clicking the Setting`s button",
"add-to-calendar": "Add to Calendar",
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Allow for remote stat monitoring via the monitoring tool",
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "The guest will be asked if they want to reload the previous link when revisiting",
"guests-not-actively-speaking-will-be-hidden": "Guests not actively speaking will be hidden",
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "The guest's self-video preview will appear tiny in the top right",
"allow-the-guests-to-pick-a-virtual-backscreen-effect": "Allow the guests to pick a virtual backscreen effect",
"videos-use-an-animated-transition-when-being-remixed": "Videos use an animated transition when being remixed",
"increase-video-quality-that-guests-in-room-see-": "Increase video quality that guests in room see.",
"show-some-prep-suggestions-to-the-guests-on-connect": "Show some prep suggestions to the guests on connect",
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "This low-fi video codec uses very little CPU, even with dozens of active viewers.",
"the-guest-will-not-be-asked-for-a-video-device-on-connection": "The guest will not be asked for a video device on connection",
"the-active-speakers-are-made-visible-automatically": "The active speakers are made visible automatically",
"set-the-background-color-to-bright-green": "Set the background color to bright green",
"fade-videos-in-over-500ms": "Fade videos in over 500ms",
"add-a-10px-margin-around-all-video-elements": "Add a 10px margin around all video elements",
"playback-the-video-with-mono-channel-audio": "Playback the video with mono-channel audio",
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Have the videos fit their respective areas, even if it means cropping a bit",
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Have videos be aligned with sizing designed for vertical video",
"copy-this-stream-id-to-the-clipboard": "Copy this Stream ID to the clipboard",
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Click here to edit the label for this stream. Changes will propagate to all viewers of this stream",
"add-this-video-to-any-remote-scene-2-": "Add this Video to any remote '&scene=2'",
"add-to-scene-8": "Add to Scene 8",
"request-the-statistics-of-this-video-in-any-active-scene": "Request the statistics of this video in any active scene",
"solo-this-video-everywhere": "Solo this video everywhere",
"hide-this-guest-everywhere": "Hide this guest everywhere",
"remotely-reload-the-guest-s-page-with-a-new-url": "Remotely reload the guest's page with a new URL",
"change-user-parameters": "Change user parameters",
"this-will-ask-the-remote-guest-for-permission-to-change": "This will ask the remote guest for permission to change",
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "A direct solo view of the video/audio stream with nothing else. Its audio can be remotely controlled from here",
"this-guest-raised-their-hand-click-this-to-clear-notification-": "This guest raised their hand. Click this to clear notification.",
"improve-performance-and-quality-with-this-tip": "Improve performance and quality with this tip",
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded.",
"cannot-see-videos": "Cannot see videos",
"cannot-hear-others": "Cannot hear others",
"see-director-only": "See director only",
"show-mini-preview": "Show Mini preview",
"raise-hand-button": "Raise hand button",
"show-labels": "Show labels",
"transfer-to-a-new-room": "Transfer to a new Room",
"enable-custom-password": "Enable custom password",
"hide-this-window": "Hide this window"
},
"innerHTML": {
"logo-header": "\n\t\t\t\t\t<font id=\"qos\">O</font>BS.Ninja \n\t\t\t\t",
@ -189,7 +234,77 @@
"add-a-password": " Додайте пароль:",
"toggle-remote-speaker": "Віддалений звук",
"toggle-remote-display": "Відео гістю",
"force-keyframe": "Райдуга"
"force-keyframe": "Райдуга",
"push-to-talk-enable": " enable director`s microphone or video<br>(only guests can see this feed)",
"click-here-for-help": "Click Here for a quick overview and help",
"guests-hear-others": "Guests hear others",
"capture-a-group-scene": "CAPTURE A GROUP SCENE",
"auto-add-guests": "Auto-add guests",
"pro-audio-mode": "Pro-audio mode",
"hide-audio-only-sources": "Hide audio-only sources",
"remote-monitoring": "Invite saved to cookie",
"ask-for-display-name": "Ask for display name",
"show-display-names": "Show display names",
"show-active-speaker": "Show active speakers",
"auto-select-microphone": "Auto-select default microphone",
"auto-select-camera": "Auto-select default camera",
"hide-setting-buttons": "Hide settings button",
"mini-self-preview": "Mini self-preview",
"virtual-backgrounds": "Virtual backgrounds",
"fade-videos-in": "Fade videos in",
"powerful-computers-only": "Only use with powerful computers and small groups!!",
"guests-see-HD-video": "Guests see HD video",
"no-self-preview": "Disable self-preview",
"raise-hand-button": "Display 'raise-hand' button",
"enable-compressor": "Enable audio compressor",
"enable-equalizer": "Enable equalizer as option",
"show-guest-tips": "Show guest setup tips",
"low-cpu=broadcast-codec": "Low-CPU broadcast codec",
"only-see-director-feed": "Only see the director's feed",
"mute-microphone-by-default": "Muted; guest can unmute",
"unmute-by-director-only": "Muted; director can unmute",
"guest-joins-with-no-camera": "Guest joins with no camera",
"obfuscate-link": "Obfuscate link and parameters",
"this-can-reduce-packet-loss": "Can reduce packet loss video corruption in OBS on PC",
"use-h264-codec": "Use H264 codec",
"show-active-speakers": "Show active speakers",
"green-background": "Green background",
"add-margin": "Add margin to videos",
"force-mono-audio": "Force mono audio",
"fill-video-space": "Crop video to fit",
"vertical-aspect-ratio": "Vertical video mode",
"learn-more-about-params": "Learn more about URL parameters at ",
"More-scene-options": "More scene options",
"add-to-scene2": "add to scene 2",
"stats-remote": " Scene Stats",
"additional-controls": "Additional controls",
"solo-video": "Highlight guest",
"hide-guest": "hide guest",
"change-url": "Change URL",
"change-params": "URL Params",
"user-raised-hand": "Lower Raised Hand",
"unmute": "un-mute",
"unhide-guest": "un-hide",
"undeafen": "un-deafen",
"unblind": "un-blind",
"close": "close",
"send-message": "send message<s pan=\"\"> </s>",
"record-director-local": " Record",
"select-digital-effect": " Digital Video Effects: ",
"no-effects-applied": "No effects applied",
"blurred-background": "Blurred background",
"digital-greenscreen": "Digital greenscreen",
"virtual-background": "Virtual background",
"select-local-image": "Select Local Image",
"close-settings": "Close Settings",
"advanced": "Advanced ",
"apply-new-guest-settings": "Apply settings",
"cancel": "Cancel",
"invisible-guests": "Not Visible",
"add-to-calendar": "Add details to your Calendar:",
"add-to-google-calendar": "Add to Google Calendar",
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar"
},
"placeholders": {
"join-by-room-name-here": "приєднано до кімнати тут ",
@ -199,6 +314,56 @@
"add-an-optional-password": "Додайте необов`язковий пароль",
"enter-room-name-here": "Введіть назву кімнати",
"enter-chat-message-to-send-here": "Введіть чат повідомлення тут",
"optional": "опціонально"
"optional": "опціонально",
"enter-your-message-here": "Enter your message here",
"enter-the-room-name-here": "Enter the room name here",
"enter-the-room-password-here": "Enter the room password here"
},
"miscellaneous": {
"new-display-name": "Enter a new Display Name for this stream",
"submit-error-report": "Press OK to submit any error logs to VDO.Ninja. Error logs may contain private information.",
"director-redirect-1": "The director wishes to redirect you to the URL: ",
"director-redirect-2": "\n\nPress OK to be redirected.",
"add-a-label": "Add a label",
"audio-processing-disabled": "Audio processing is disabled with this guest. Can't mute or change volume",
"not-the-director": "<font color='red'>You are not the director of this room. You will have limited to no control. You can try claiming the room after the first director leaves.</font>",
"room-is-claimed": "The room is already claimed by someone else.\n\nOnly the first person to join a room is the assigned director.\n\nRefresh after the first director leaves to claim.",
"streamid-already-published": "The stream ID you are publishing to is already in use.\n\nPlease try with a different invite link or refresh to retry again.\n\nYou will now be disconnected.",
"director": "Director",
"unknown-user": "Unknown User",
"room-test-not-good": "The room name 'test' is very commonly used and may not be secure.\n\nAre you sure you wish to proceed?",
"load-previous-session": "Would you like to load your previous session's settings?",
"enter-password": "Please enter the password below: \n\n(Note: Passwords are case-sensitive and you will not be alerted if it is incorrect.)",
"enter-password-2": "Please enter the password below: \n\n(Note: Passwords are case-sensitive.)",
"password-incorrect": "The password was incorrect.\n\nRefresh and try again.",
"enter-display-name": "Please enter your display name:",
"enter-new-display-name": "Enter a new Display Name for this stream",
"what-bitrate": "What bitrate would you like to record at? (kbps)",
"enter-website": "Enter a website URL to share",
"press-ok-to-record": "Press OK to start recording. Press again to stop and download.\n\nWarning: Keep this browser tab active to continue recording.\n\nYou can change the default video bitrate if desired below (kbps)",
"no-streamID-provided": "No streamID was provided; one will be generated randomily.\n\nStream ID: ",
"alphanumeric-only": "Info: Only AlphaNumeric characters should be used for the stream ID.\n\nThe offending characters have been replaced by an underscore",
"stream-id-too-long": "The Stream ID should be less than 45 alPhaNuMeric characters long.\n\nWe will trim it to length.",
"share-with-trusted": "Share only with those you trust",
"pass-recommended": "A password is recommended",
"insecure-room-name": "Insecure room name.",
"allowed-chars": "Allowed chars",
"transfer": "transfer",
"armed": "armed",
"transfer-guest-to-room": "Transfer guests to room:\n\n(Please note rooms must share the same password)",
"transfer-guest-to-url": "Transfer guests to new website URL.\n\n(Guests will be prompted to accept)",
"change-url": "change URL",
"mute-in-scene": "mute in scene",
"unmute-guest": "un-mute guest",
"undeafen": "un-deafen",
"deafen": "deafen guest",
"unblind": "un-blind",
"blind": "blind guest",
"unmute": "un-mute",
"mute-guest": "mute guest",
"unhide": "unhide guest",
"hide-guest": "hide guest",
"confirm-disconnect-users": "Are you sure you wish to disconnect these users?",
"confirm-disconnect-user": "Are you sure you wish to disconnect this user?"
}
}
}

File diff suppressed because one or more lines are too long