mirror of
https://github.com/eliasstepanik/vdo.ninja.git
synced 2026-01-16 08:08:28 +00:00
commit
922a7f7965
463
convert.html
463
convert.html
@ -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>
|
||||
@ -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
25
examples/changepass.html
Normal file
@ -0,0 +1,25 @@
|
||||
<html><body><script>
|
||||
var generateHash = function (str, length=false){
|
||||
var buffer = new TextEncoder("utf-8").encode(str);
|
||||
return crypto.subtle.digest("SHA-256", buffer).then(
|
||||
function (hash) {
|
||||
hash = new Uint8Array(hash);
|
||||
if (length){
|
||||
hash = hash.slice(0, parseInt(parseInt(length)/2));
|
||||
}
|
||||
hash = toHexString(hash);
|
||||
return hash;
|
||||
}
|
||||
);
|
||||
};
|
||||
function toHexString(byteArray){
|
||||
return Array.prototype.map.call(byteArray, function(byte){
|
||||
return ('0' + (byte & 0xFF).toString(16)).slice(-2);
|
||||
}).join('');
|
||||
}
|
||||
var password = prompt("Please enter the password");
|
||||
|
||||
generateHash(password + location.hostname, 4).then(function(hash) { // million to one error.
|
||||
alert("hash value: "+hash)
|
||||
});
|
||||
</script></body></html>
|
||||
331
examples/dual.html
Normal file
331
examples/dual.html
Normal 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
3
examples/mini.css
Normal file
@ -0,0 +1,3 @@
|
||||
.tile {
|
||||
max-width:200px !important;
|
||||
}
|
||||
172
examples/status.html
Normal file
172
examples/status.html
Normal 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
133
examples/webhid.html
Normal 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
182
examples/zoom.html
Normal 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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
149
index.html
149
index.html
@ -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="© 2020 Steve Seguin" />
|
||||
<meta name="copyright" content="© 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;">
|
||||
|
||||
<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>
|
||||
|
||||
193
main.css
193
main.css
@ -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;
|
||||
|
||||
199
speedtest.html
199
speedtest.html
@ -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
5
thirdparty/ffmpeg.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1497
thirdparty/tfjs/face-landmarks-detection.js
vendored
Normal file
1497
thirdparty/tfjs/face-landmarks-detection.js
vendored
Normal file
File diff suppressed because one or more lines are too long
16300
thirdparty/tfjs/tf-backend-webgl.js
vendored
Normal file
16300
thirdparty/tfjs/tf-backend-webgl.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
thirdparty/tfjs/tf-backend-webgl.js.map
vendored
Normal file
1
thirdparty/tfjs/tf-backend-webgl.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
8058
thirdparty/tfjs/tf-converter.js
vendored
Normal file
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
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
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
1
thirdparty/tfjs/tf-core.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -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 & 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": " <i class=\"las la-video-slash\"></i>",
|
||||
"change-to-medium-quality": " <i class=\"las la-video\"></i>",
|
||||
"change-to-high-quality": " <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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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 & 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 &broadcast, &roombitrate=0 or &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 &codec=vp9 or &codec=h264 as a URL in OBS can help to reduce corrupted video puke issues.</li>\n\t\t\t\t\t\t<li>&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 &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": " <i class=\"las la-video-slash\"></i>",
|
||||
"change-to-medium-quality": " <i class=\"las la-video\"></i>",
|
||||
"change-to-high-quality": " <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?"
|
||||
}
|
||||
}
|
||||
@ -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 & 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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -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?"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user