Compare commits
150 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c28ecebc13 | ||
|
|
28a79b20b7 | ||
|
|
9172ebade1 | ||
|
|
c4aed40be6 | ||
|
|
1927b84d25 | ||
|
|
b6b39b893f | ||
|
|
1f408e645f | ||
|
|
eee79d2ef9 | ||
|
|
abe5028458 | ||
|
|
09e1111be3 | ||
|
|
c2b8b1769d | ||
|
|
7c9ba6fd12 | ||
|
|
f50ca54b32 | ||
|
|
a4edbf1a18 | ||
|
|
308664fdc2 | ||
|
|
8c68737501 | ||
|
|
50e50c4d1b | ||
|
|
f05efc5288 | ||
|
|
a6b500bfa8 | ||
|
|
32f4527784 | ||
|
|
d45584c444 | ||
|
|
70d83b35a7 | ||
|
|
5198817371 | ||
|
|
d483b8ca3a | ||
|
|
a6c903fe1a | ||
|
|
4a203a1e60 | ||
|
|
c9849849a5 | ||
|
|
705c8028a1 | ||
|
|
4618426724 | ||
|
|
5b86a4f906 | ||
|
|
2d0908f326 | ||
|
|
843c49fa20 | ||
|
|
e4d6862d9f | ||
|
|
5538afdd71 | ||
|
|
e34b68a573 | ||
|
|
0af23bf6de | ||
|
|
8819b2fe95 | ||
|
|
0913cc204d | ||
|
|
e31571e508 | ||
|
|
a26cd7a1c9 | ||
|
|
e412f486bd | ||
|
|
547a914a59 | ||
|
|
89b651bb89 | ||
|
|
b0b992c3a9 | ||
|
|
d7117cede1 | ||
|
|
ec4940b139 | ||
|
|
dda1c48b00 | ||
|
|
94e6380081 | ||
|
|
7f46ea944d | ||
|
|
217b9e102b | ||
|
|
11e7f6162d | ||
|
|
986675a747 | ||
|
|
c75e641c3a | ||
|
|
bf3a576507 | ||
|
|
423081ba4f | ||
|
|
e965aacedf | ||
|
|
980afc35cb | ||
|
|
a74a128227 | ||
|
|
b9e556908c | ||
|
|
614d8fcf51 | ||
|
|
5fd0facefb | ||
|
|
20d9339c14 | ||
|
|
7ef903d6b5 | ||
|
|
43c5e89c2d | ||
|
|
98270abc37 | ||
|
|
7e96ef72a3 | ||
|
|
a0e765fa4d | ||
|
|
4f8d2c2d38 | ||
|
|
78b7b9cba9 | ||
|
|
26288e685a | ||
|
|
b25632188a | ||
|
|
f7adb67e3e | ||
|
|
2f3570dc19 | ||
|
|
c25ca2c5a2 | ||
|
|
91545d7a9a | ||
|
|
de68524b32 | ||
|
|
99cdff796d | ||
|
|
e8d5fca0d0 | ||
|
|
b45be651fc | ||
|
|
5989cc8022 | ||
|
|
b14ebeffb9 | ||
|
|
ebc42a9665 | ||
|
|
e745daf082 | ||
|
|
53600179d1 | ||
|
|
4ec34fdb8a | ||
|
|
bd5cb836c5 | ||
|
|
e5178e7c6d | ||
|
|
dfc6fdfcf0 | ||
|
|
bbe5629e2c | ||
|
|
c6f442288e | ||
|
|
e9a4ffa3c8 | ||
|
|
b1b5d7f0ff | ||
|
|
d8ddcb6d65 | ||
|
|
785e531d47 | ||
|
|
e621e497f9 | ||
|
|
60a0167ac3 | ||
|
|
8f28cf50e4 | ||
|
|
84b6a2c211 | ||
|
|
6f697a638f | ||
|
|
a0e545da4e | ||
|
|
40834d04ba | ||
|
|
edb531d8a1 | ||
|
|
eb8d45daa3 | ||
|
|
53eb8c41f6 | ||
|
|
c1e9eb6dae | ||
|
|
083ec819dd | ||
|
|
0f293e4922 | ||
|
|
9bcbebca14 | ||
|
|
33e79daf9d | ||
|
|
5bfdfe325a | ||
|
|
beb5881352 | ||
|
|
7baa26c99d | ||
|
|
eb86f2f6e7 | ||
|
|
6b9242532c | ||
|
|
9a7446a083 | ||
|
|
c87781dcbd | ||
|
|
6bc6736cdf | ||
|
|
d7c0e0cfcd | ||
|
|
c361aa19c1 | ||
|
|
bd4763a087 | ||
|
|
1d93b28595 | ||
|
|
aebd62fdcc | ||
|
|
51438daec8 | ||
|
|
820b06d518 | ||
|
|
017d2b2de5 | ||
|
|
bdb50bd8cb | ||
|
|
f502bbbec3 | ||
|
|
a237d9b025 | ||
|
|
dd47dee760 | ||
|
|
574f9c6652 | ||
|
|
1084c8efd7 | ||
|
|
a2436704df | ||
|
|
82a709cf6f | ||
|
|
e8abdb4e96 | ||
|
|
a93556e662 | ||
|
|
1332a62b5e | ||
|
|
3e7d538156 | ||
|
|
6b09ee3b45 | ||
|
|
accf4ce228 | ||
|
|
3c8e93e9a1 | ||
|
|
0eee6d6c4f | ||
|
|
b0bfebc451 | ||
|
|
9617ef3739 | ||
|
|
46d978d908 | ||
|
|
df2e3c9d7f | ||
|
|
f5f2114446 | ||
|
|
d48483f113 | ||
|
|
595b233327 | ||
|
|
e64fa5c598 | ||
|
|
40ff06c77b |
@@ -20,6 +20,8 @@ Adding that iframe to the DOM will reveal a simple page accessing for a user to
|
||||
An example of how this API is used by OBS.Ninja is with its Internet Speedtest, which has two OBS.Ninja IFrames on a single page. One iframe feeds video to the other iframe, and the speed at which it does this is a measure of the system's performance. Detailed stats of the connection are made available to the parent window, which displays the results.
|
||||
https://obs.ninja/speedtest
|
||||
|
||||
More community-contributed IFRAME examples can be found here: https://github.com/steveseguin/obsninja/tree/master/examples
|
||||
|
||||
A sandbox of options is available at this page, too: https://obs.ninja/iframe You can enter an OBS.Ninja URL in the input box to start using it. For developers, viewing the source of that page will reveal examples of how all the available functions work, along with a way to test and play with each of them. You can also see here for the source-code on GitHub: https://github.com/steveseguin/obsninja/blob/master/iframe.html
|
||||
|
||||
One thing to note about this iframe API is that it is a mix of URL parameters given to the iframe *src* URL, but also the postMessage and addEventListener methods of the browser. The later is used to dynamically control OBS.Ninja, while the former is used to initiate the instance to a desired state.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
<img src="images/obsNinja_logo_full.png" alt="Logo by brimace" data-canonical-src="https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png" height="150" />
|
||||
<img src="media/obsNinja_logo_full.png" alt="Logo by brimace" data-canonical-src="https://gyazo.com/eb5c5741b6a9a16c692170a41a49c858.png" height="150" />
|
||||
|
||||
## What is OBS NINJA
|
||||
OBS.Ninja uses peer-to-peer technology to bring remote cameras into OBS. In most cases, all video data is transferred directly from peer to peer, without needing to go through any video server. This results in high-quality video with super low latency. In a small number of cases, video data may go through an encrypted TURN server, which is used to facilitate peer connections when otherwise not possible.
|
||||
@@ -26,7 +26,7 @@ MacOS users will face some challenges in using OBS 25/26, but there are workarou
|
||||
This repo contains software for OBS.Ninja, including the HTML landing page for its Electron Capture app offering. A sample config file and instructions for setting up a TURN server (video relay server), is also provided. You may also find the Wiki for the project in this repo, which contains added information on how to use the software.
|
||||
|
||||
## How to Deploy this Repo:
|
||||
To use, just download and host the files on a HTTPS-enabled webserver. You may want to hide the .html extensions within your HTTP server as well, else the generated links will not work. See [here](https://github.com/steveseguin/obsninja/blob/master/install.md) for added details, although I don't really recommend it.
|
||||
To use, just download and host the files on a HTTPS-enabled webserver. You may want to hide the .html extensions within your HTTP server as well, else the generated links will not work. See [here](https://github.com/steveseguin/obsninja/blob/master/install.md) for added details and alternative install options.
|
||||
|
||||
Directions on how to deploy a TURN server are listed in the turnserver.md file. You may wish to do so, although not all use cases will not need one. Only about 10% of remote guests, those often connected via 4G LTE, will require a TURN server. While OBS.Ninja does host some TURN servers, they are quite expensive to operate and not really for private deployment use. If you are deploying your own version of OBS.Ninja, I'd ask you use your own TURN servers instead.
|
||||
|
||||
@@ -70,7 +70,7 @@ https://obs.ninja may unavoidably use cookies that are exempt from EU laws of re
|
||||
Additional security features are being added weekly on request. Please ask about these options if added security and privacy are requirements for you.
|
||||
|
||||
## Feedback
|
||||
Ideas, feedback, bugs, etc -- all welcomed. I'm dumping many of my ideas as issues into Github. Feedback is typcially most welcomed via Email or Discord.
|
||||
Ideas, feedback, bugs, etc -- all welcomed. I'm dumping many of my ideas as issues into Github. Feedback is typically most welcomed via Email or Discord.
|
||||
|
||||
## Licence
|
||||
OBS.Ninja is available as open-source; please see the LICENCE.md file for details.
|
||||
|
||||
177
animations.js
@@ -1,177 +0,0 @@
|
||||
|
||||
/* We need to create dynamic keyframes to show the animation from full-screen to normal. So we create a stylesheet in which we can insert CSS keyframe rules */
|
||||
$("body").append('<style id="lightbox-animations" type="text/css"></style>');
|
||||
|
||||
/* Click on the container */
|
||||
$(".column").on('click', function() {
|
||||
/* The position of the container will be set to fixed, so set the top & left properties of the container */
|
||||
|
||||
if ( $(this).hasClass( "skip-animation" )){
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var bounding_box = $(this).get(0).getBoundingClientRect();
|
||||
$(this).css({ top: bounding_box.top + 'px', left: bounding_box.left -20+ 'px' });
|
||||
|
||||
/* Set container to fixed position. Add animation */
|
||||
$(this).addClass('in-animation').removeClass('pointer');
|
||||
|
||||
/* An empty container has to be added in place of the lightbox container so that the elements below don't come up
|
||||
Dimensions of this empty container is the same as the original container */
|
||||
$("#empty-container").remove();
|
||||
$('<div id="empty-container" class="column"></div>').insertAfter(this);
|
||||
|
||||
/* To animate the container from full-screen to normal, we need dynamic keyframes */
|
||||
var styles = '';
|
||||
styles = '@keyframes outlightbox {';
|
||||
styles += '0% {';
|
||||
styles += 'height: 100%;';
|
||||
styles += 'width: 100%;';
|
||||
styles += 'top: 0px;';
|
||||
styles += 'left: 0px;';
|
||||
styles += '}';
|
||||
styles += '50% {';
|
||||
styles += 'height: 220px;';
|
||||
styles += 'top: ' + bounding_box.y + 'px;';
|
||||
styles += '}';
|
||||
styles += '100% {';
|
||||
styles += 'height: 220px;';
|
||||
styles += 'width: '+bounding_box.width+'px;';
|
||||
styles += 'top: ' + bounding_box.y + 'px;';
|
||||
styles += 'left: ' + bounding_box.x + 'px;';
|
||||
styles += '}';
|
||||
styles += '}';
|
||||
|
||||
/* Add keyframe to CSS */
|
||||
$("#lightbox-animations").empty();
|
||||
$("#lightbox-animations").get(0).sheet.insertRule(styles, 0);
|
||||
|
||||
/* Hide the window scrollbar */
|
||||
$("body").css('overflow', 'hidden');
|
||||
});
|
||||
|
||||
|
||||
/* Click on close button when full-screen */
|
||||
$(".close").on('click', function(e) {
|
||||
$(this).hide();
|
||||
$(".container-inner").hide();
|
||||
|
||||
$("body").css('overflow', 'auto');
|
||||
|
||||
var bounding_box = $(this).parent().get(0).getBoundingClientRect();
|
||||
$(this).parent().css({ top: bounding_box.top + 'px', left: bounding_box.left + 'px' });
|
||||
|
||||
/* Show animation */
|
||||
$(this).parent().addClass('out-animation');
|
||||
|
||||
|
||||
try{
|
||||
|
||||
var oldstream = getById('previewWebcam').srcObject;
|
||||
|
||||
if (oldstream){
|
||||
log("old stream found");
|
||||
oldstream.getTracks().forEach(function(track) {
|
||||
track.stop();
|
||||
oldstream.removeTrack(track);
|
||||
log("stopping old track");
|
||||
});
|
||||
}
|
||||
activatedPreview=false;
|
||||
} catch (e){
|
||||
errorlog(e);
|
||||
}
|
||||
log("Cleaned up Video");
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
/* On animationend : from normal to full screen & full screen to normal */
|
||||
$(".column").on('animationend', function(e) {
|
||||
/* On animation end from normal to full-screen */
|
||||
if(e.originalEvent.animationName == 'inlightbox') {
|
||||
$(this).children(".close").show();
|
||||
$(this).children(".container-inner").show();
|
||||
}
|
||||
/* On animation end from full-screen to normal */
|
||||
else if(e.originalEvent.animationName == 'outlightbox') {
|
||||
/* Remove fixed positioning, remove animation rules */
|
||||
$(this).removeClass('in-animation').removeClass('out-animation').removeClass('columnfade').addClass('pointer');
|
||||
|
||||
/* Remove the empty container that was earlier added */
|
||||
$("#empty-container").remove();
|
||||
|
||||
/* Delete the dynamic keyframe rule that was earlier created */
|
||||
$("#lightbox-animations").get(0).sheet.deleteRule(0);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$('#audioSource').on('mousedown touchend focusin focusout', function(e) {
|
||||
var state = $('#multiselect-trigger').data('state') || 0;
|
||||
if( state == 0 ) {
|
||||
////open the dropdown
|
||||
$('#multiselect-trigger').data('state', '1').addClass('open').removeClass('closed');
|
||||
$('#multiselect-trigger').find('.chevron').removeClass('bottom');
|
||||
$('#multiselect-trigger').parent().find('.multiselect-contents').show();
|
||||
$('#multiselect-trigger').parent().find('.multiselect-contents').find('input[type="checkbox"]').parent().show();;
|
||||
$('#multiselect-trigger').parent().find('.multiselect-contents').find('input[type="checkbox"]').show();;
|
||||
}
|
||||
// e.preventDefault();
|
||||
});
|
||||
|
||||
$('#audioSource3').on('mousedown touchend focusin focusout', function(e) {
|
||||
var state = $('#multiselect-trigger3').data('state') || 0;
|
||||
if( state == 0 ) {
|
||||
////open the dropdown
|
||||
$('#multiselect-trigger3').data('state', '1').addClass('open').removeClass('closed');
|
||||
$('#multiselect-trigger3').find('.chevron').removeClass('bottom');
|
||||
$('#multiselect-trigger3').parent().find('.multiselect-contents').show();
|
||||
$('#multiselect-trigger3').parent().find('.multiselect-contents').find('input[type="checkbox"]').parent().show();;
|
||||
$('#multiselect-trigger3').parent().find('.multiselect-contents').find('input[type="checkbox"]').show();;
|
||||
}
|
||||
// e.preventDefault();
|
||||
});
|
||||
|
||||
// multiselect dropdowns
|
||||
$('#multiselect-trigger').on('mousedown touchend focusin focusout', function(e) {
|
||||
var state = $(this).data('state') || 0;
|
||||
if( state == 0 ) {
|
||||
// open the dropdown
|
||||
$(this).data('state', '1').addClass('open').removeClass('closed');
|
||||
$(this).find('.chevron').removeClass('bottom');
|
||||
$(this).parent().find('.multiselect-contents').show();
|
||||
$(this).parent().find('.multiselect-contents').find('input[type="checkbox"]').parent().show();;
|
||||
$(this).parent().find('.multiselect-contents').find('input[type="checkbox"]').show();;
|
||||
} else {
|
||||
// close the dropdown
|
||||
$(this).data('state', '0').addClass('closed').removeClass('open');
|
||||
$(this).find('.chevron').addClass('bottom');
|
||||
$(this).parent().find('.multiselect-contents').find('input[type="checkbox"]').not(":checked").parent().hide();;
|
||||
$(this).parent().find('.multiselect-contents').find('input[type="checkbox"]').hide();;
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
// multiselect dropdowns
|
||||
$('#multiselect-trigger3').on('mousedown touchend focusin focusout', function(e) {
|
||||
var state = $(this).data('state') || 0;
|
||||
if( state == 0 ) {
|
||||
// open the dropdown
|
||||
$(this).data('state', '1').addClass('open').removeClass('closed');
|
||||
$(this).find('.chevron').removeClass('bottom');
|
||||
$(this).parent().find('.multiselect-contents').show();
|
||||
$(this).parent().find('.multiselect-contents').find('input[type="checkbox"]').parent().show();;
|
||||
$(this).parent().find('.multiselect-contents').find('input[type="checkbox"]').show();;
|
||||
} else {
|
||||
// close the dropdown
|
||||
$(this).data('state', '0').addClass('closed').removeClass('open');
|
||||
$(this).find('.chevron').addClass('bottom');
|
||||
$(this).parent().find('.multiselect-contents').find('input[type="checkbox"]').not(":checked").parent().hide();;
|
||||
$(this).parent().find('.multiselect-contents').find('input[type="checkbox"]').hide();;
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
157
convert.html
Normal file
@@ -0,0 +1,157 @@
|
||||
<head>
|
||||
<link rel="stylesheet" href="./main.css?ver=39" />
|
||||
<style>
|
||||
|
||||
body {
|
||||
|
||||
}
|
||||
|
||||
input {padding:10px;}
|
||||
|
||||
h3 { margin-top:10px; padding:5px;}
|
||||
|
||||
hr {
|
||||
margin: 20px 0;
|
||||
}
|
||||
video{
|
||||
max-width:640px;
|
||||
max-height:360px;
|
||||
padding:20px;
|
||||
}
|
||||
audio{
|
||||
max-width:640px;
|
||||
max-height:360px;
|
||||
padding:20px;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body style='color:white'>
|
||||
|
||||
<video id="player" controls style="display:none"></video>
|
||||
<audio id="player2" controls style="display:none"></audio>
|
||||
<div id="info">
|
||||
<h1>Web-based Media Conversion Tools</h1>
|
||||
<hr>
|
||||
<h3>Transcodes WebM files to MP4 files with a fixed 1280x720 resolution. (very slow!)</h3><br />
|
||||
<small><p>This tool performs the following action in your browser: <i> fmpeg -i input.webm -vf scale=1280:720 output.mp4</i></p></small>
|
||||
<input type="file" id="uploader" title="Convert WebM to MP4">
|
||||
|
||||
<hr>
|
||||
<h3>Remuxes MKV files to MP4 files without transcoding.</h3> </p><br /><small><i> fmpeg -i INPUTFILE -vcodec copy -acodec copy output.mp4</i></small>
|
||||
<br /><input type="file" id="uploader2" accept=".mkv" title="Convert MKV to MP4">
|
||||
|
||||
<hr>
|
||||
|
||||
<h3>Remuxes WebM files to MP4 files without transcoding (attempts to force high resolutions, also)</h3>
|
||||
<input type="file" id="uploader3" accept=".webm" title="Convert WebM to MP4">
|
||||
|
||||
<hr>
|
||||
<h3>Remuxes WebM to Audio-only files (opus or wav)</h3>
|
||||
<input type="file" id="uploader4" accept=".webm" title="Convert WebM to OPUS">
|
||||
|
||||
<hr>
|
||||
|
||||
</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('info').innerText = "Transcoding file... this will take a while";
|
||||
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('info').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('info').innerText = "Transcoding file... this will take a while";
|
||||
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('info').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('info').innerText = "Tweaking file... this will take a moment";
|
||||
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('info').innerText = "Operation Done. Play video or download it.";
|
||||
}
|
||||
|
||||
const convertToAudioOnly = async ({ target: { files } }) => {
|
||||
const { name } = files[0];
|
||||
document.getElementById('info').innerText = "Transcoding file... this will take a while";
|
||||
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('info').innerText = "Operation Done. Play audio or download it.";
|
||||
}
|
||||
|
||||
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>
|
||||
122
devices.css
Normal file
@@ -0,0 +1,122 @@
|
||||
#devices {
|
||||
max-width: 80%;
|
||||
width: fit-content;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 1.5em;
|
||||
padding:10px;
|
||||
background-color:#457b9d;
|
||||
color:white;
|
||||
}
|
||||
|
||||
.device {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 10px 0px;
|
||||
font-size: 1rem;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.device.selected {
|
||||
background-color: #3ea03c;
|
||||
}
|
||||
|
||||
.device.selected::before {
|
||||
content: "\f00c";
|
||||
font-family: "Line Awesome Free";
|
||||
font-weight: 900;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.device:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.device-name{
|
||||
font-weight: bold;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.device-id {
|
||||
|
||||
}
|
||||
|
||||
.card {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.card > div {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.notice {
|
||||
background-color: orange;
|
||||
margin: 10px;
|
||||
padding: 20px 20px;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.notice a {
|
||||
color: #457b9d;
|
||||
}
|
||||
|
||||
@media only screen
|
||||
and (min-device-width: 375px)
|
||||
and (max-device-width: 812px)
|
||||
and (orientation: portrait) {
|
||||
#devices {
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
.device-id {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#sharedDevices {
|
||||
position: fixed;
|
||||
bottom: 20px;
|
||||
width: 80%;
|
||||
left: 10%;
|
||||
color: white;
|
||||
overflow-wrap: anywhere;
|
||||
background: #141926;
|
||||
padding: 20px;
|
||||
box-shadow: 0px 0px 10px 5px #00000047;
|
||||
border: 1px solid #333c52;
|
||||
}
|
||||
|
||||
#sharedDevices span {
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#sharedDevices input {
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
|
||||
}
|
||||
|
||||
span#close {
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
right: -10px;
|
||||
display: block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background: #457b9d;
|
||||
text-align: center;
|
||||
border-radius: 20px;
|
||||
line-height: 20px;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
208
devices.html
@@ -1,28 +1,188 @@
|
||||
<html>
|
||||
<head><meta charset="UTF-8"></head>
|
||||
<head>
|
||||
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css" />
|
||||
<link rel="stylesheet" href="./main.css?ver=11" />
|
||||
<link rel="stylesheet" href="./devices.css?ver=1" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta charset="utf8" />
|
||||
</head>
|
||||
<body>
|
||||
<pre><code id="json-container"></code></pre>
|
||||
<script>
|
||||
|
||||
|
||||
<div id="header">
|
||||
<a
|
||||
id="logoname"
|
||||
href="./"
|
||||
style="text-decoration: none; color: white; margin: 2px"
|
||||
>
|
||||
<span data-translate="logo-header">
|
||||
<font id="qos">O</font>BS.Ninja
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id="devices">
|
||||
<div class="notice">
|
||||
Device IDs are bound to a combination of domain and browser. <br />If
|
||||
you want to use electron-capture, open this URL on the electron-capture
|
||||
app.
|
||||
</div>
|
||||
<div class="notice">
|
||||
Check for browser and camera capabilities <a href="/supports">here</a>.
|
||||
</div>
|
||||
<div class="card">
|
||||
<h1>🎤 Audio Inputs</h1>
|
||||
<div id="audioInputs"></div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h1>📹 Video Inputs</h1>
|
||||
<div id="videoInputs"></div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h1>🔉 Audio Outputs</h1>
|
||||
<div id="audioOutputs"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="sharedDevices" style="display: none">
|
||||
<span>Click to copy. Send this to your host:</span>
|
||||
<span id="close" onclick="this.parentNode.style.display='none'">×</span>
|
||||
<input id="devicesUrl" value="" />
|
||||
</div>
|
||||
|
||||
var list = [];
|
||||
|
||||
<script>
|
||||
var list = [];
|
||||
var url = new URL(document.location.origin);
|
||||
var audioInputDevices = [];
|
||||
|
||||
navigator.mediaDevices.enumerateDevices()
|
||||
.then(function(devices) {
|
||||
devices.forEach(function(device) {
|
||||
console.log(device.kind + ": " + device.label +
|
||||
" id = " + device.deviceId);
|
||||
list.push(device);
|
||||
});
|
||||
document.getElementById('json-container').innerHTML = JSON.stringify(list, null, 2);
|
||||
})
|
||||
.catch(function(err) {
|
||||
console.log(err.name + ": " + err.message);
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
function isAudioInput(value) {
|
||||
return value.kind == "audioinput";
|
||||
}
|
||||
|
||||
function isAudioOutput(value) {
|
||||
return value.kind == "audiooutput";
|
||||
}
|
||||
|
||||
function isVideoInput(value) {
|
||||
return value.kind == "videoinput";
|
||||
}
|
||||
|
||||
function addDevice(element) {
|
||||
var info = element.getElementsByClassName("device-id")[0];
|
||||
var type = info.dataset.deviceType;
|
||||
|
||||
if (type == "audioinput") {
|
||||
setAudioSearchParams(info);
|
||||
}
|
||||
if (type == "videoinput") {
|
||||
setVideoSearchParams(info);
|
||||
}
|
||||
if (type == "audiooutput") {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
Allows for multiple audio devices to be selected
|
||||
Will be output as a comma separated string to &ad
|
||||
*/
|
||||
function setAudioSearchParams(info) {
|
||||
// Device was already selected
|
||||
if (info.parentNode.className == "device selected") {
|
||||
// Remove device from list of selected devices
|
||||
var index = audioInputDevices.indexOf(info.innerText);
|
||||
if (index !== -1) {
|
||||
audioInputDevices.splice(index, 1);
|
||||
}
|
||||
|
||||
// Set the url param to the devices that are left
|
||||
url.searchParams.set("ad", audioInputDevices.join(","));
|
||||
element.className = "device";
|
||||
|
||||
// If no audio devices remained, just remove the param completely
|
||||
if (audioInputDevices.length == 0) {
|
||||
url.searchParams.delete("ad");
|
||||
}
|
||||
} else {
|
||||
// Device is unselected
|
||||
audioInputDevices.push(info.innerText);
|
||||
url.searchParams.set("ad", audioInputDevices.join(","));
|
||||
element.className = "device selected";
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Only allows for a single video device to be selected
|
||||
*/
|
||||
function setVideoSearchParams(info) {
|
||||
// Device was already selected
|
||||
if (info.parentNode.className == "device selected") {
|
||||
info.parentNode.className = "device";
|
||||
|
||||
// Set the url param to the devices that are left
|
||||
url.searchParams.set("vd", info.innerText);
|
||||
element.className = "device";
|
||||
|
||||
// If no devices remained, just remove the param completely
|
||||
if (audioInputDevices.length == 0) {
|
||||
url.searchParams.delete("vd");
|
||||
}
|
||||
} else {
|
||||
// Device is unselected
|
||||
url.searchParams.set("vd", info.innerText);
|
||||
element.className = "device selected";
|
||||
}
|
||||
}
|
||||
|
||||
// Update UI
|
||||
showDeviceIdsPopup();
|
||||
}
|
||||
|
||||
function showDeviceIdsPopup() {
|
||||
document.getElementById("devicesUrl").value = decodeURIComponent(url);
|
||||
document.getElementById("sharedDevices").style.display = "block";
|
||||
}
|
||||
|
||||
function prettyPrint(json, element) {
|
||||
var output = "<div class='prettyJson two-col'>";
|
||||
var nestedObjs;
|
||||
|
||||
Object.entries(json)
|
||||
.sort()
|
||||
.forEach(([key, value]) => {
|
||||
output += "<div class='device' onclick='addDevice(this)'>";
|
||||
|
||||
output +=
|
||||
"<span class='device-name'>" +
|
||||
value.label +
|
||||
"</span><span class='device-id' data-device-type='" +
|
||||
value.kind +
|
||||
"'>" +
|
||||
value.deviceId +
|
||||
"</span>";
|
||||
|
||||
output += "</div>";
|
||||
});
|
||||
output += "</div>";
|
||||
document.getElementById(element).innerHTML = output;
|
||||
}
|
||||
|
||||
document.getElementById("devicesUrl").onclick = function () {
|
||||
this.select();
|
||||
document.execCommand("copy");
|
||||
};
|
||||
|
||||
navigator.mediaDevices
|
||||
.enumerateDevices()
|
||||
.then(function (devices) {
|
||||
devices.forEach(function (device) {
|
||||
console.log(
|
||||
device.kind + ": " + device.label + " id = " + device.deviceId
|
||||
);
|
||||
list.push(device);
|
||||
});
|
||||
prettyPrint(devices.filter(isAudioInput), "audioInputs");
|
||||
prettyPrint(devices.filter(isAudioOutput), "audioOutputs");
|
||||
prettyPrint(devices.filter(isVideoInput), "videoInputs");
|
||||
})
|
||||
.catch(function (err) {
|
||||
console.log(err.name + ": " + err.message);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
24
devices.json.html
Normal file
@@ -0,0 +1,24 @@
|
||||
<html>
|
||||
<head><meta charset="UTF-8"></head>
|
||||
<body>
|
||||
<script>
|
||||
var list = [];
|
||||
|
||||
|
||||
navigator.mediaDevices.enumerateDevices()
|
||||
.then(function(devices) {
|
||||
devices.forEach(function(device) {
|
||||
console.log(device.kind + ": " + device.label +
|
||||
" id = " + device.deviceId);
|
||||
list.push(device);
|
||||
});
|
||||
document.write(JSON.stringify(list, null, 2));
|
||||
})
|
||||
.catch(function(err) {
|
||||
console.log(err.name + ": " + err.message);
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
33
dock.html
@@ -117,22 +117,25 @@ function generateInvite(){
|
||||
if (getById("invite_vp9").checked){
|
||||
viewstr+="&codec=vp9";
|
||||
}
|
||||
if (getById("invite_h264").checked){
|
||||
viewstr+="&codec=h264";
|
||||
}
|
||||
if (getById("invite_stereo").checked){
|
||||
viewstr+="&stereo";
|
||||
sendstr+="&stereo";
|
||||
}
|
||||
if (getById("invite_secure").checked){
|
||||
sendstr+="&secure";
|
||||
}
|
||||
//if (getById("invite_secure").checked){
|
||||
// sendstr+="&secure";
|
||||
//}
|
||||
if (getById("invite_hidescreen").checked){
|
||||
sendstr+="&webcam";
|
||||
}
|
||||
|
||||
if (getById("invite_remotecontrol").checked){ //
|
||||
var remote_gen_id = generateStreamID();
|
||||
sendstr+="&remote="+remote_gen_id; // security
|
||||
viewstr+="&remote="+remote_gen_id;
|
||||
}
|
||||
//if (getById("invite_remotecontrol").checked){ //
|
||||
// var remote_gen_id = generateStreamID();
|
||||
// sendstr+="&remote="+remote_gen_id; // security
|
||||
// viewstr+="&remote="+remote_gen_id;
|
||||
//}
|
||||
|
||||
if (getById("invite_joinroom").value.trim().length){
|
||||
sendstr+="&room="+getById("invite_joinroom").value.replace(/[\W]+/g,"_");
|
||||
@@ -231,7 +234,9 @@ document.addEventListener("dragstart", event => {
|
||||
|
||||
<input type="checkbox" id="invite_bitrate" /><label for="invite_bitrate"> <span data-translate="unlock-video-bitrate">Unlock Video Bitrate (20mbps)</span></label>
|
||||
<br />
|
||||
<input type="checkbox" id="invite_vp9" /><label for="invite_vp9"> <span data-translate="force-vp9-video-codec">VP9 Video Codec</span></label>
|
||||
<input type="checkbox" id="invite_vp9" onclick="getById('invite_h264').checked=false;" /><label for="invite_vp9"> <span data-translate="force-vp9-video-codec">VP9 Video Codec</span></label>
|
||||
<br />
|
||||
<input type="checkbox" id="invite_h264" onclick="getById('invite_vp9').checked=false;" /><label for="invite_h264"> <span data-translate="force-h264-video-codec">H264 Video Codec</span></label>
|
||||
<br />
|
||||
<input type="checkbox" id="invite_stereo" /><label for="invite_stereo"> <span data-translate="enable-stereo-and-pro">Stereo and Pro HD Audio</span></label>
|
||||
<br />
|
||||
@@ -245,17 +250,11 @@ document.addEventListener("dragstart", event => {
|
||||
</select>
|
||||
<br />
|
||||
<br />
|
||||
<input type="checkbox" id="invite_secure" />
|
||||
<label for="invite_secure"> <span data-translate="high-security-mode">High Security Mode</span></label>
|
||||
<br />
|
||||
<input type="checkbox" id="invite_hidescreen" />
|
||||
<label for="invite_hidescreen"> <span data-translate="hide-screen-share">Hide Screenshare Option</span></label>
|
||||
<br />
|
||||
<input type="checkbox" id="invite_remotecontrol" />
|
||||
<label for="invite_remotecontrol"> <span data-translate="allow-remote-control">Remote Control Camera Zoom</span></label>
|
||||
<br />
|
||||
<br />
|
||||
<label for="videoname">Stream label:</label>
|
||||
<label for="videoname">Stream Label:</label>
|
||||
<input id="videoname" placeholder="Give stream a description" />
|
||||
<br />
|
||||
<br />
|
||||
@@ -293,7 +292,7 @@ document.addEventListener("dragstart", event => {
|
||||
</div>
|
||||
<div class="gone" >
|
||||
<!-- This image is used when dragging elements -->
|
||||
<img src="./images/favicon-32x32.png" id="dragImage" />
|
||||
<img src="./media/favicon-32x32.png" id="dragImage" />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -125,7 +125,7 @@ input[type='checkbox']:checked {
|
||||
<div id="header" style="-webkit-app-region: drag;color:white;font-size:2em">OBS.Ninja</div>
|
||||
<div class="formcss" >
|
||||
|
||||
<div id='warning4mac' style="border:2px dotted; display:none;max-width:700px; padding:10px; margin:0 90px 20px 90px;color:white;font-size:1.3em"> 🚨 If using OBS v26 on macOS, right-click the Electron Capture app and disable <i>Always-on-Top</i> to reveal it during window-selection. You can enable it again afterwards.</div>
|
||||
<div id='warning4mac' style="border:2px dotted; display:none;max-width:800px; padding:10px; margin:0 90px 20px 90px;color:white;font-size:1.3em"> ✨ Great News! OBS v26.1.2 <a href="https://github.com/obsproject/obs-browser/issues/209#issuecomment-748683083">now supports</a> OBS.Ninja without needing the Electron Capture app! 🥳</div>
|
||||
|
||||
<input type="checkbox" class="check" id="prefervp9" name="prefervp9" value="false" onclick="modURL(this);">
|
||||
<label for="prefervp9">Force VP9 Codec</label>
|
||||
@@ -164,9 +164,9 @@ input[type='checkbox']:checked {
|
||||
*
|
||||
*/
|
||||
|
||||
//if (navigator.userAgent.indexOf('Mac OS X') != -1){
|
||||
// document.getElementById("warning4mac").style.display="block";
|
||||
//}
|
||||
if (navigator.userAgent.indexOf('Mac OS X') != -1){
|
||||
document.getElementById("warning4mac").style.display="block";
|
||||
}
|
||||
|
||||
var audioOutputSelect = document.querySelector('select#audioOutput');
|
||||
audioOutputSelect.disabled = !('sinkId' in HTMLMediaElement.prototype);
|
||||
|
||||
264
examples/iframe.outbound-stats.html
Normal file
@@ -0,0 +1,264 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>OBS.Ninja IFRAME Outgoing Stats Example</title>
|
||||
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="./images/favicon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="./images/favicon-16x16.png" />
|
||||
<link rel="icon" href="./images/favicon.ico" />
|
||||
<link itemprop="thumbnailUrl" href="./images/obsNinja_logo_full.png" />
|
||||
<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
|
||||
<style>
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background-color: rgb(20, 25, 38);
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
margin: 2px auto;
|
||||
padding: 0;
|
||||
display: block;
|
||||
margin: 10px;
|
||||
width: 640px;
|
||||
height: 320px;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
input {
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container-fluid">
|
||||
<div class="row controls" style="margin-bottom:15px;border-bottom:1px solid black;">
|
||||
<div class="col-8">
|
||||
<input type="text" class="form-control" style="width:95%;margin:10px auto;" placeholder="Enter an OBS.Ninja View URL here" value="" id="viewlink" />
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="row">
|
||||
<div class="col-2"></div>
|
||||
<div class="col-10">
|
||||
<button type="button" class="btn btn-primary" style="margin:10px 0;width:calc(90% + 15px);margin-left:5px;" id="btnStart">Start</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row output">
|
||||
<div class="col-7" id="source">
|
||||
<iframe style="margin:0 auto;" allow="autoplay;camera;microphone" src=""></iframe>
|
||||
</div>
|
||||
<div class="col-5" id="sourcecontrols">
|
||||
<div class="row text-light" style="margin-top:15px;">
|
||||
<div class="col">
|
||||
<p>This example will show all connections to the stream generated from this page using statistics gathered using the <a href="https://github.com/steveseguin/obsninja/blob/master/IFRAME.md">iFrame API</a>.</p>
|
||||
<p>Click start to generate a stream using the OBS.Ninja URL shown. If you use the example URL shown, you can <a id="aView" href="" target="_blank">click here</a> to connect to this stream as a viewer in a new window/tab, this will then show in the table below. Expired connections will be removed after a short delay.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" style="margin-top:5px;">
|
||||
<div style="padding-top:10px;" class="col-4 text-right font-weight-bold text-light">Audio:</div>
|
||||
<div class="col-8">
|
||||
<button type="button" class="btn btn-sm btn-secondary" style="width:45%;" id="btnMuteAudio">Disable</button>
|
||||
<button type="button" class="btn btn-sm btn-success" style="width:45%;" id="btnUnMuteAudio">Enabled</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div style="padding-top:10px;" class="col-4 text-right font-weight-bold text-light">Video:</div>
|
||||
<div class="col-8">
|
||||
<button type="button" class="btn btn-sm btn-secondary" style="width:45%;" id="btnMuteVidio">Disable</button>
|
||||
<button type="button" class="btn btn-sm btn-success" style="width:45%;" id="btnUnMuteVidio">Enabled</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div style="padding-top:10px;" class="col-4 text-right font-weight-bold text-light">Stats:</div>
|
||||
<div class="col-8">
|
||||
<button type="button" class="btn btn-sm btn-secondary" style="width:45%;" id="btnStatsAuto">Auto Refresh Off</button>
|
||||
<button type="button" class="btn btn-sm btn-secondary" style="width:45%;" id="btnStatsRefresh">Refresh</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div style="padding-top:5px;" class="col-6 text-right font-weight-bold text-light">Outbound Connections:</div>
|
||||
<div style="padding-top:5px;" class="col-6 font-weight-bold text-light" id="divTotalConnections">0</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<table id="viewers" style="margin-top:15px;" class="table table-hover text-center table-striped table-dark">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="align-middle">Label</th>
|
||||
<th scope="col" class="align-middle">Added</th>
|
||||
<th scope="col" class="align-middle">Quality Limit Reason</th>
|
||||
<th scope="col" class="align-middle">Resolution</th>
|
||||
<th scope="col" class="align-middle">Platform</th>
|
||||
<th scope="col" class="align-middle">Encoder</th>
|
||||
<th scope="col" class="align-middle">User Agent</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
|
||||
<script>
|
||||
var autorefresh = false;
|
||||
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
|
||||
var eventer = window[eventMethod];
|
||||
var messageEvent = eventMethod === "attachEvent" ? "onmessage" : "message";
|
||||
|
||||
eventer(messageEvent, function(e) {
|
||||
//Check message is coming from our iframe, otherwise we don't care
|
||||
if (e.source != $('#source iframe')[0].contentWindow) return;
|
||||
|
||||
if ("stats" in e.data) {
|
||||
var now = new Date(); //Used for "Added" column and to remove stale viewers
|
||||
for (var viewer in e.data.stats.outbound_stats) {
|
||||
//Check to see if a row exists for this viewier, if not then its a new viewer and we should create a row
|
||||
if ($("#obsn_viewer_" + viewer).length == 0) {
|
||||
var h = now.getHours();
|
||||
var m = now.getMinutes();
|
||||
var s = now.getSeconds();
|
||||
$('#viewers tbody').append('<tr id="obsn_viewer_' + viewer + '"><th class="obsn_viewer_label" scope="row"></th><td class="obsn_viewer_added">' + ("0" + h).slice(-2) + ':' + ("0" + m).slice(-2) + ':' + ("0" + s).slice(-2) + '</td><td class="obsn_viewer_qlr"></td><td class="obsn_viewer_resolution"></td><td class="obsn_viewer_platform"></td><td class="obsn_viewer_encoder"></td><td class="obsn_viewer_useragent"></td></tr>');
|
||||
}
|
||||
//Insert/update stats
|
||||
//Initially objects can be available but without any attributes, check they exist and ignore till the basics are available
|
||||
if (e.data.stats.outbound_stats[viewer] == undefined) continue;
|
||||
if (e.data.stats.outbound_stats[viewer].info == undefined) continue;
|
||||
//Checking these exist as not all attributes are available straight away when stats are created
|
||||
if (e.data.stats.outbound_stats[viewer].info.label != undefined) {
|
||||
$("#obsn_viewer_" + viewer).find('.obsn_viewer_label').text(e.data.stats.outbound_stats[viewer].info.label);
|
||||
}
|
||||
if (e.data.stats.outbound_stats[viewer].quality_Limitation_Reason != undefined) {
|
||||
$("#obsn_viewer_" + viewer).find('.obsn_viewer_qlr').text(e.data.stats.outbound_stats[viewer].quality_Limitation_Reason);
|
||||
}
|
||||
if (e.data.stats.outbound_stats[viewer].resolution != undefined) {
|
||||
$("#obsn_viewer_" + viewer).find('.obsn_viewer_resolution').text(e.data.stats.outbound_stats[viewer].resolution);
|
||||
}
|
||||
if (e.data.stats.outbound_stats[viewer].info.platform != undefined) {
|
||||
$("#obsn_viewer_" + viewer).find('.obsn_viewer_platform').text(e.data.stats.outbound_stats[viewer].info.platform);
|
||||
}
|
||||
if (e.data.stats.outbound_stats[viewer].encoder != undefined) {
|
||||
$("#obsn_viewer_" + viewer).find('.obsn_viewer_encoder').text(e.data.stats.outbound_stats[viewer].encoder);
|
||||
}
|
||||
if (e.data.stats.outbound_stats[viewer].info.useragent != undefined) {
|
||||
$("#obsn_viewer_" + viewer).find('.obsn_viewer_useragent').text(e.data.stats.outbound_stats[viewer].info.useragent);
|
||||
}
|
||||
$("#obsn_viewer_" + viewer).data('last', now.getTime()); //Used below to remove old viewers
|
||||
}
|
||||
//Mark and then remove viewers who have not been seen for a while
|
||||
$('#viewers tbody tr').each(function(el) {
|
||||
if (parseInt($(this).data('last')) < (now.getTime() - 10000)) { //10 seconds
|
||||
$(this).remove();
|
||||
} else if (parseInt($(this).data('last')) < (now.getTime())) { //Mark viewer in red to show they have disappeared, note that it takes a few seconds for this to happen
|
||||
$(this).addClass('bg-danger');
|
||||
} else { //Viewer is there, make sure they're not marked as missing
|
||||
$(this).removeClass('bg-danger');
|
||||
}
|
||||
});
|
||||
$('#divTotalConnections').text(e.data.stats.total_outbound_connections);
|
||||
}
|
||||
});
|
||||
|
||||
$(document).ready(function() {
|
||||
$('#btnMuteAudio').on('click', function() {
|
||||
$(this).addClass('btn-success').removeClass('btn-secondary').text('Disabled');
|
||||
$('#btnUnMuteAudio').removeClass('btn-success').addClass('btn-secondary').text('Enable');
|
||||
$('#source iframe')[0].contentWindow.postMessage({
|
||||
"mic": false
|
||||
}, '*');
|
||||
});
|
||||
$('#btnUnMuteAudio').on('click', function() {
|
||||
$(this).addClass('btn-success').removeClass('btn-secondary').text('Enabled');
|
||||
$('#btnMuteAudio').removeClass('btn-success').addClass('btn-secondary').text('Disable');
|
||||
$('#source iframe')[0].contentWindow.postMessage({
|
||||
"mic": true
|
||||
}, '*');
|
||||
});
|
||||
$('#btnMuteVidio').on('click', function() {
|
||||
$(this).addClass('btn-success').removeClass('btn-secondary').text('Disabled');
|
||||
$('#btnUnMuteVidio').removeClass('btn-success').addClass('btn-secondary').text('Enable');
|
||||
$('#source iframe')[0].contentWindow.postMessage({
|
||||
"camera": false
|
||||
}, '*');
|
||||
});
|
||||
$('#btnUnMuteVidio').on('click', function() {
|
||||
$(this).addClass('btn-success').removeClass('btn-secondary').text('Enabled');
|
||||
$('#btnMuteVidio').removeClass('btn-success').addClass('btn-secondary').text('Disable');
|
||||
$('#source iframe')[0].contentWindow.postMessage({
|
||||
"camera": true
|
||||
}, '*');
|
||||
});
|
||||
|
||||
$('#btnStatsAuto').on('click', function() {
|
||||
if (autorefresh) {
|
||||
autorefresh = false;
|
||||
$('#btnStatsAuto').removeClass('btn-success').addClass('btn-secondary').text('Auto Refresh Off');
|
||||
} else {
|
||||
autorefresh = true;
|
||||
$('#btnStatsAuto').addClass('btn-success').removeClass('btn-secondary').text('Auto Refresh On');
|
||||
}
|
||||
});
|
||||
$('#btnStatsRefresh').on('click', function() {
|
||||
$(this).addClass('btn-success').removeClass('btn-secondary').attr('disabled', true);
|
||||
$('#source iframe')[0].contentWindow.postMessage({
|
||||
"getStats": true
|
||||
}, '*');
|
||||
setTimeout(function() {
|
||||
$('#btnStatsRefresh').addClass('btn-secondary').removeClass('btn-success').attr('disabled', false);
|
||||
}, 700);
|
||||
});
|
||||
|
||||
$('#btnStart').on('click', function() {
|
||||
//Reset buttons as currently we can't check the state of these properties
|
||||
$('#btnMuteAudio,#btnMuteVidio').removeClass('btn-success').addClass('btn-secondary').text('Disable');
|
||||
$('#btnUnMuteAudio,#btnUnMuteVidio').addClass('btn-success').removeClass('btn-secondary').text('Enabled');
|
||||
//Update the iframe source from the input field, yup, that simple
|
||||
$('#source iframe').attr('src', $('#viewlink').val());
|
||||
//Start autorefresh of stats
|
||||
autorefresh = true;
|
||||
$('#btnStatsAuto').addClass('btn-success').removeClass('btn-secondary').text('Auto Refresh On');
|
||||
});
|
||||
//Start checking for stats
|
||||
setInterval(function() {
|
||||
if (autorefresh == false) return;
|
||||
$('#source iframe')[0].contentWindow.postMessage({
|
||||
"getStats": true
|
||||
}, '*');
|
||||
}, 1000);
|
||||
//Add in random ID and password strings to URL's, the below is purely for the purposes of this example
|
||||
var pushid = makeid();
|
||||
var password = makeid();
|
||||
var baseUrl = "https://obs.ninja/";
|
||||
$('#aView').attr('href', baseUrl + '?view=' + pushid + '&password=' + password + '&label=Test_Link');
|
||||
$('#viewlink').val(baseUrl + '?push=' + pushid + '&password=' + password + '&autostart&turn=false&fps=25&maxbitrate=1000&cleanoutput&audiobitrate=32&aec=0&denoise=0&webcam');
|
||||
});
|
||||
//This function is purely used to generate random push id and password strings for the purposes of this example
|
||||
function makeid() {
|
||||
var result = '';
|
||||
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
var charactersLength = characters.length;
|
||||
for (var i = 0; i < 8; i++) {
|
||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
118
iframe.html
@@ -4,7 +4,7 @@
|
||||
body{
|
||||
padding:0;
|
||||
margin:0;
|
||||
background-color: rgb(253,253,253);
|
||||
background-color: rgb(222,242,253);
|
||||
}
|
||||
iframe {
|
||||
border:0;
|
||||
@@ -33,13 +33,14 @@ button{
|
||||
</style>
|
||||
<script>
|
||||
|
||||
function loadIframe(){
|
||||
function loadIframe(){ // this is pretty important if you want to avoid camera permission popup problems. You can also call it automatically via: <body onload=>loadIframe();"> , but don't call it before the page loads.
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("div");
|
||||
var iframesrc = document.getElementById("viewlink").value;
|
||||
iframe.allow="autoplay;camera;microphone";
|
||||
iframe.allowtransparency="true"
|
||||
iframe.allowtransparency="true";
|
||||
iframe.allowfullscreen ="true";
|
||||
|
||||
if (iframesrc==""){
|
||||
iframesrc="./";
|
||||
@@ -108,6 +109,24 @@ function loadIframe(){
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"mic":"toggle"}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Mute Camera";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"camera":false}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Unmute Camera";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"camera":true}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Toggle Camera";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"camera":"toggle"}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Disconnect";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"close":true}, '*');};
|
||||
@@ -163,17 +182,71 @@ function loadIframe(){
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"sendChat":"Hello!"}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Insert Style Sheet";
|
||||
var stylesheet = "#main { zoom: 0.5;} video {float: left; margin: 0; padding: 0; } #info {display:none;}";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"style":stylesheet}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "get StreamIDs and labels";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"getStreamIDs":true}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Start AutoMixer";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"automixer":true}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Stop AutoMixer";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"automixer":false}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "ENABLE TALLY LIGHT";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"sceneState":true}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "STOP TALLY LIGHT";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"sceneState":false}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Add Target Video";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"target":"*", "add":true, "settings":{"style":{"width":"640px", "height":"360px", "float":"left", "border":"10px solid red", "display":"block"}}}, '*');}; // target can be a stream ID or * for all.
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Remove Target Video";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"target":"*", "remove": true}, '*');}; // target can be a stream ID or * for all.
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "previewWebcam()";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"function":"previewWebcam"}, '*');}; // publishScreen
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "eval('alert(\"DANGERUS\")'";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"function":"eval", "value":'alert(\"DANGERUS\")'}, '*');}; // publishScreen
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Change Add Camera text";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"function":"changeHTML", "target":"add_camera", "value":"NEW CAMERA TEXT"}, '*');}; // change text of add camera button
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "CLOSE IFRAME";
|
||||
button.onclick = function(){iframeContainer.parentNode.removeChild(iframeContainer);};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//////////// LISTEN FOR EVENTS
|
||||
|
||||
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
|
||||
@@ -217,6 +290,17 @@ function loadIframe(){
|
||||
iframeContainer.appendChild(outputWindow);
|
||||
}
|
||||
|
||||
|
||||
if ("streamIDs" in e.data){
|
||||
var outputWindow = document.createElement("div");
|
||||
outputWindow.innerHTML = "child-page-action: streamIDs<br />";
|
||||
for (var key in e.data.streamIDs) {
|
||||
outputWindow.innerHTML += "streamID: " + key + ", label:"+e.data.streamIDs[key] + "\n";
|
||||
}
|
||||
outputWindow.style.border="1px dotted black";
|
||||
iframeContainer.appendChild(outputWindow);
|
||||
}
|
||||
|
||||
if ("loudness" in e.data){
|
||||
console.log(e.data);
|
||||
if (document.getElementById("loudness")){
|
||||
@@ -235,7 +319,33 @@ function loadIframe(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ("sensors" in e.data){
|
||||
console.log(e.data);
|
||||
if (document.getElementById("sensors")){
|
||||
outputWindow = document.getElementById("sensors");
|
||||
} else {
|
||||
var outputWindow = document.createElement("div");
|
||||
outputWindow.style.border="1px dotted black";
|
||||
iframeContainer.appendChild(outputWindow);
|
||||
outputWindow.id = "sensors";
|
||||
}
|
||||
outputWindow.innerHTML = "child-page-action: sensors<br /><br />";
|
||||
|
||||
for (var key in e.data.sensors.lin) {
|
||||
outputWindow.innerHTML += key + " linear: " + e.data.sensors.lin[key] + "<br />";
|
||||
}
|
||||
for (var key in e.data.sensors.acc) {
|
||||
outputWindow.innerHTML += key + " acceleration: " + e.data.sensors.acc[key] + "<br />";
|
||||
}
|
||||
for (var key in e.data.sensors.gyro) {
|
||||
outputWindow.innerHTML += key + " gyro: " + e.data.sensors.gyro[key] + "<br />";
|
||||
}
|
||||
for (var key in e.data.sensors.mag) {
|
||||
outputWindow.innerHTML += key + " magnet: " + e.data.sensors.mag[key] + "<br />";
|
||||
}
|
||||
outputWindow.style.border="1px black";
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
885
index.html
33
install.md
@@ -2,21 +2,38 @@ Deploying this code. A guide. (INITIAL DRAFT VERSION)
|
||||
|
||||
### PREFACE
|
||||
|
||||
The code is obvious enough already that someone experienced with the NGINX webserver or with basic site deployments should have no problem getting things running.
|
||||
The code is obvious enough already that someone experienced with NGINX webservers or with basic site deployments should have no problem getting things running.
|
||||
|
||||
I'm concerned at times that less experienced users will be deploying the code without really understanding why or properly how to. There are few cases a person needs to deploy any code.
|
||||
I'm concerned at times that less experienced users will be deploying the code without really understanding why or properly how to. There are few cases a person needs to deploy any code. Those reasons are: wanting custom branding; contributing as a developer to the codebase; or deploying a private TURN server.
|
||||
|
||||
Those reasons are: wanting custom branding; contributing as a developer to the codebase; or deploying a private TURN server.
|
||||
There may be misconceptions that deploying the website code will make the service faster; it will not. The service is video peer-to-peer based, so deploying webservers servers will not make it faster. Deploying a TURN server may help in some cases, although using a VPN, a cloud VM (for OBS), or disabling any symmetrical firewall will often provide a better end result than a private TURN server.
|
||||
|
||||
For a subset of those users even, they might still have better options available.
|
||||
For those looking for a brand-free experience already with a different domain name, I offer https://rtc.ninja, and as well as other alternate domain names, such as:
|
||||
|
||||
I offer https://rtc.ninja for those looking for a brand-free experience already. You can also point your domain to the OBS.Ninja IP address (provided on request), which will also rebrand the site automatically to match your domain name.
|
||||
- https://chromicam.com
|
||||
- https://invite.cam (via URL obfuscation option)
|
||||
- https://ltt.ninja
|
||||
- https://obsn.me
|
||||
- https://rtc.ninja
|
||||
- https://vmix.ninja
|
||||
- https://webrtc.party
|
||||
- https://callin.ninja
|
||||
- https://auxiliary.live (backup hosted)
|
||||
- https://backup.obs.ninja (fully backup hosted)
|
||||
|
||||
For those wanting a private TURN server setup, you can load the settings for those via the URL parameters. If infrequently needing a private TURN, this is a great solution.
|
||||
There is also an isolated version specificly designed for use in mainland China, hosted at https://insecure.cam in Hong Kong AWS.
|
||||
|
||||
There are also misconceptions. Deploying the website code will NOT make the service faster. The service is peer-to-peer based, so deploying servers will not make it faster. Even deploying a TURN server is often not the best choice, as using a VPN, cloud VM for OBS, or disabling any symmetrical firewall will often provide a better end result.
|
||||
You can also point your domain to the OBS.Ninja IP address (provided on request), which will also rebrand the site automatically to match your domain name. (Requires Cloudflare as DNS server and proxy, Flexible SSL cert on, and HTTPs always on - all free.)
|
||||
|
||||
Understanding clearly why you need to deploy any code or server is important. If you do know why, please continue.
|
||||
For those wanting a private TURN server setup, you can load the settings for those via the URL parameters. If infrequently needing a private TURN, this is a great solution. You can also use URL forwarding services to load up a customized link to OBS.Ninja, with URL parameters already included, such as https://invite.mypersonaldomain.com , which might secretly resolve to https://obs.ninja/?room=myRoom&hash=3423&label or such.
|
||||
|
||||
OBS.Ninja also supports IFRAMES, so you can embed OBS.Ninja into your website and customize it via both URL parameters, but also via the IFRAME API. You can insert custom CSS styles with this method, giving OBS.Ninja quite a bit of flare.
|
||||
|
||||
See more on IFRAMES here: https://github.com/steveseguin/obsninja/blob/master/IFRAME.md
|
||||
|
||||
Understanding clearly why you need to deploy any code or server is important. Maintaining updated deployed code can be quite hard, as OBS.Ninja updates frequently, so there are good reasons to consider an IFRAME approach instead. Feature requests there are welcomed.
|
||||
|
||||
That all aside, please continue:
|
||||
|
||||
### SETUP
|
||||
|
||||
|
||||
BIN
media/cap.webm
Normal file
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 757 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
2
media/hd.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="65" height="64"><style> .a{stroke-width:10;stroke:#000;}</style><title> background</title><rect height="66" width="67" y="-1" x="-1" fill="#0000"/><g height="100" width="100"><rect y="28.56" x="29.5" height="600" width="800" fill="url(#gridpattern)"/></g><title> Layer 1</title><rect height="3" width="1" y="27.02" x="302" style="fill:#0000;stroke-width:2;stroke:#0000"/><rect height="43" width="48" y="10.8" x="8.38" style="fill-opacity:null;fill:#0000;stroke-opacity:null;stroke-width:2;stroke:#FFF"/>
|
||||
<text font-family="Helvetica, Arial, sans-serif" font-size="24" y="40.49" x="15.38" style="fill:#FFF;font-weight:bold"> HQ</text></svg>
|
||||
|
After Width: | Height: | Size: 697 B |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
BIN
media/obsNinja_logo_full.png
Normal file
|
After Width: | Height: | Size: 299 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
BIN
media/robot.mp3
Normal file
BIN
media/screenshare.webm
Normal file
2
media/sd.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="65" height="64"><style> .a{stroke-width:10;stroke:#000;}</style><title> background</title><rect height="66" width="67" y="-1" x="-1" fill="#0000"/><g height="100" width="100"><rect y="28.56" x="29.5" height="600" width="800" fill="url(#gridpattern)"/></g><title> Layer 1</title><rect height="3" width="1" y="27.02" x="302" style="fill:#0000;stroke-width:5;stroke:#0000"/><rect height="43" width="48" y="10.8" x="8.38" style="fill-opacity:null;fill:#0000;stroke-opacity:null;stroke-width:5;stroke:#FFF"/>
|
||||
<text font-family="Helvetica, Arial, sans-serif" font-size="24" y="40.49" x="15.38" style="fill:#FFF;font-weight:bold"> LQ</text></svg>
|
||||
|
After Width: | Height: | Size: 697 B |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
192
popout.html
Normal file
@@ -0,0 +1,192 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta name="theme-color" content="#ffffff" />
|
||||
<!-- <script src="//console.re/connector.js" data-channel="obsninjadev" type="text/javascript" id="consolerescript"></script>-->
|
||||
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css">
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/adapter-latest.js"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/qrcode.min.js"></script>
|
||||
<script type="text/javascript" src="./thirdparty/jquery.min.js"></script>
|
||||
<link rel="stylesheet" href="./main.css?ver=22" />
|
||||
<style>
|
||||
#chatModule{
|
||||
bottom: 0px;
|
||||
position: fixed;
|
||||
align-self: center;
|
||||
width: 100%;
|
||||
}
|
||||
#chatInput{
|
||||
color: #000;
|
||||
background-color: #FFFE;
|
||||
max-width: 700px;
|
||||
min-width: 390px;
|
||||
font-size: 105%;
|
||||
margin-left: 10px;
|
||||
padding: 3px;
|
||||
}
|
||||
#chatBody {
|
||||
z-index: 12;
|
||||
background-color: #0000;
|
||||
width: 100%;
|
||||
border-radius: 5px;
|
||||
padding: 1px 7px;
|
||||
overflow-y: scroll;
|
||||
overflow-wrap: anywhere;
|
||||
max-height: 800px;
|
||||
}
|
||||
body{
|
||||
background-color:#EEE;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="chatModule" >
|
||||
<div id="chatBody">
|
||||
<div class="inMessage" data-translate='welcome-to-obs-ninja-chat'>
|
||||
Welcome to OBS.Ninja! You can send text messages directly to connected peers from here.
|
||||
</div>
|
||||
<div class="outMessage" data-translate='names-and-labels-coming-soon'>
|
||||
Names identifying connected peers will be a feature in an upcoming release.
|
||||
</div>
|
||||
</div>
|
||||
<input id="chatInput" placeholder="Enter chat message to send here" onkeypress="EnterButtonChat(event)" />
|
||||
<button style="width:60px;background-color:#ACA;" onclick="sendChatMessage()" data-translate='send-chat'>Send</button>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
|
||||
/// If you have a routing system setup, you could have just one global listener for all iframes instead.
|
||||
var chatUpdateTimeout = null;
|
||||
var messageList = [];
|
||||
|
||||
(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);
|
||||
|
||||
if (urlParams.has("id")){
|
||||
var bid = urlParams.get("id");
|
||||
}
|
||||
var bc = new BroadcastChannel(bid);
|
||||
bc.postMessage({"loaded":true});
|
||||
bc.onmessage = function (e) {
|
||||
//if (e.source != iframe.contentWindow){return} // reject messages send from other iframes
|
||||
console.log(e);
|
||||
if ("data" in e){
|
||||
if ("msg" in e.data){
|
||||
messageList.push(e.data);
|
||||
messageList = messageList.slice(-100);
|
||||
updateMessages();
|
||||
} else if ("messageList" in e.data){
|
||||
messageList = e.data.messageList;
|
||||
updateMessages();
|
||||
}
|
||||
}
|
||||
};
|
||||
function sanitize(string) {
|
||||
var temp = document.createElement('div');
|
||||
temp.textContent = string;
|
||||
return temp.innerHTML;
|
||||
}
|
||||
|
||||
function EnterButtonChat(event){
|
||||
// Number 13 is the "Enter" key on the keyboard
|
||||
var key = event.which || event.keyCode;
|
||||
if (key === 13) {
|
||||
// Cancel the default action, if needed
|
||||
event.preventDefault();
|
||||
// Trigger the button element with a click
|
||||
sendChatMessage();
|
||||
}
|
||||
}
|
||||
|
||||
function sendChatMessage(chatMsg = false){ // filtered + visual
|
||||
var msg = document.getElementById('chatInput').value;
|
||||
msg = sanitize(msg);
|
||||
if (msg==""){return;}
|
||||
console.log(msg);
|
||||
bc.postMessage({"msg":msg})
|
||||
document.getElementById('chatInput').value = "";
|
||||
}
|
||||
|
||||
function timeSince(date) {
|
||||
|
||||
var seconds = Math.floor((new Date() - date) / 1000);
|
||||
|
||||
var interval = seconds / 31536000;
|
||||
|
||||
if (interval > 1) {
|
||||
return Math.floor(interval) + " years";
|
||||
}
|
||||
interval = seconds / 2592000;
|
||||
if (interval > 1) {
|
||||
return Math.floor(interval) + " months";
|
||||
}
|
||||
interval = seconds / 86400;
|
||||
if (interval > 1) {
|
||||
return Math.floor(interval) + " days";
|
||||
}
|
||||
interval = seconds / 3600;
|
||||
if (interval > 1) {
|
||||
return Math.floor(interval) + " hours";
|
||||
}
|
||||
interval = seconds / 60;
|
||||
if (interval > 1) {
|
||||
return Math.floor(interval) + " minutes";
|
||||
}
|
||||
return "Seconds ago";
|
||||
}
|
||||
|
||||
|
||||
|
||||
function updateMessages(){
|
||||
document.getElementById("chatBody").innerHTML = "";
|
||||
for (i in messageList){
|
||||
|
||||
var time = timeSince(messageList[i].time);
|
||||
var msg = document.createElement("div");
|
||||
////// KEEP THIS IN /////////
|
||||
console.log(messageList[i].msg); // Display Recieved messages for View-Only clients.
|
||||
/////////////////////////////
|
||||
if (messageList[i].type == "sent"){
|
||||
msg.innerHTML = messageList[i].msg + " <i><small> <small>- "+time+"</small></small></i>";
|
||||
msg.classList.add("outMessage");
|
||||
} else if (messageList[i].type == "recv"){
|
||||
var label = "";
|
||||
if (messageList[i].label){
|
||||
label = messageList[i].label;
|
||||
}
|
||||
msg.innerHTML = label+messageList[i].msg + " <i><small> <small>- "+time+"</small></small></i>";
|
||||
msg.classList.add("inMessage");
|
||||
} else if (messageList[i].type == "alert"){
|
||||
msg.innerHTML = messageList[i].msg + " <i><small> <small>- "+time+"</small></small></i>";
|
||||
msg.classList.add("inMessage");
|
||||
} else {
|
||||
msg.innerHTML = messageList[i].msg + " <i><small> <small>- "+time+"</small></small></i>";
|
||||
msg.classList.add("inMessage");
|
||||
}
|
||||
|
||||
document.getElementById("chatBody").appendChild(msg);
|
||||
}
|
||||
if (chatUpdateTimeout){
|
||||
clearInterval(chatUpdateTimeout);
|
||||
}
|
||||
document.getElementById("chatBody").scrollTop = document.getElementById("chatBody").scrollHeight;
|
||||
chatUpdateTimeout = setTimeout(function(){updateMessages()},60000);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
189
speedtest.css
Normal file
@@ -0,0 +1,189 @@
|
||||
body {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: optimizeLegibility;
|
||||
font-family: "Lato", sans-serif;
|
||||
padding: 0 0px;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
opacity: 1;
|
||||
transition: opacity .1s linear;
|
||||
background-color: #141926;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: white;
|
||||
margin: 20px 0px;
|
||||
}
|
||||
|
||||
h1 small {
|
||||
display: block;
|
||||
margin-top: 0.5em;
|
||||
font-size: 0.5em;
|
||||
}
|
||||
|
||||
#explanation {
|
||||
color: white;
|
||||
font-family: sans-serif;
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#container, #graphs, #log {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
|
||||
#explanation h2 {
|
||||
border-bottom: 1px solid #383838;
|
||||
margin-bottom: 10px;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
#feeds {
|
||||
display: inline-block;
|
||||
width:100%;
|
||||
height:380px;
|
||||
|
||||
}
|
||||
|
||||
#feeds span {
|
||||
margin:auto;
|
||||
height: 100%;
|
||||
min-width:50%;
|
||||
display: inline-block;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#button_container{
|
||||
margin:auto;
|
||||
}
|
||||
#feeds h3 {
|
||||
color: whitesmoke;
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
iframe {
|
||||
height: 85%;
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
#controls {
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
#controls button {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
#controls button.active {
|
||||
background-color: #70ff70;
|
||||
}
|
||||
|
||||
canvas {
|
||||
background-color: black;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
#log {
|
||||
margin-top: 10px;
|
||||
background: #313131;
|
||||
padding: 20px 0px;
|
||||
border: 1px solid #383838;
|
||||
cursor: pointer;
|
||||
max-height:300px;
|
||||
}
|
||||
|
||||
#log ul {
|
||||
margin: 20px;
|
||||
list-style: none;
|
||||
color: #cacaca;
|
||||
max-height: 20vh;
|
||||
overflow: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
#graphs {
|
||||
display: block;
|
||||
margin-top: 20px;
|
||||
background: #313131;
|
||||
padding: 20px 0px;
|
||||
border: 1px solid #383838;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
|
||||
.graph {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.graph h2, #log h2 {
|
||||
margin: 0px 20px;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.graph > span {
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
left: 30px;
|
||||
color: #cacaca;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ol {
|
||||
margin-left: 20px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 800px) {
|
||||
|
||||
#container, #graphs, #log {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#graphs {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
iframe {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#feeds {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#feeds h3 {
|
||||
font-size:50%;
|
||||
}
|
||||
|
||||
h1{
|
||||
color: white;
|
||||
margin: 2px;
|
||||
font-size:70%
|
||||
}
|
||||
|
||||
#feeds span{
|
||||
height: 50%;
|
||||
width:100%;
|
||||
display: inline-block;
|
||||
}
|
||||
canvas {
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#statsdiv {display: none;}
|
||||
|
||||
|
||||
|
||||
628
speedtest.html
@@ -1,176 +1,460 @@
|
||||
<html>
|
||||
<head><title>OBSN Speed Test</title>
|
||||
<style>
|
||||
body{
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
iframe {
|
||||
border:0;
|
||||
margin:0;
|
||||
padding:0;
|
||||
display:inline-block;
|
||||
margin:0;
|
||||
width:100%;
|
||||
height:100%;
|
||||
}
|
||||
span {
|
||||
border:0;
|
||||
margin:0;
|
||||
padding:0;
|
||||
display:inline-block;
|
||||
margin:0;
|
||||
width:50%;
|
||||
height:45%;
|
||||
}
|
||||
#viewlink {
|
||||
width:400px;
|
||||
}
|
||||
#container {
|
||||
display:block;
|
||||
padding:0px;
|
||||
}
|
||||
input{
|
||||
padding:5px;
|
||||
margin:5px;
|
||||
}
|
||||
button{
|
||||
padding:5px;
|
||||
margin:5px;
|
||||
}
|
||||
</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 streamID = "";
|
||||
var possible = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
|
||||
for (var i = 0; i < 7; i++){
|
||||
streamID += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
}
|
||||
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("span");
|
||||
|
||||
iframe.allow="autoplay";
|
||||
var srcString = "./?push="+streamID+"&cleanoutput&privacy&audiodevice=0";
|
||||
|
||||
if (urlParams.has('turn')){
|
||||
iframe.src = srcString+"&turn="+urlParams.get("turn");
|
||||
} else {
|
||||
iframe.src = srcString;
|
||||
}
|
||||
|
||||
iframeContainer.appendChild(iframe);
|
||||
document.getElementById("container").appendChild(iframeContainer);
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("span");
|
||||
|
||||
iframe.allow="autoplay";
|
||||
iframe.src = "./?view="+streamID+"&cleanoutput&privacy&noaudio";
|
||||
|
||||
iframeContainer.appendChild(iframe);
|
||||
document.getElementById("container").appendChild(iframeContainer);
|
||||
|
||||
var button = document.createElement("br");
|
||||
document.getElementById("container").appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Disconnect";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"close":true}, '*');}
|
||||
document.getElementById("container").appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Low Bitrate";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"bitrate":30}, '*');}
|
||||
document.getElementById("container").appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "High Bitrate";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"bitrate":6000}, '*');}
|
||||
document.getElementById("container").appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Default Bitrate";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"bitrate":-1}, '*');}
|
||||
document.getElementById("container").appendChild(button);
|
||||
|
||||
setInterval(function(){iframe.contentWindow.postMessage({"getStats":true}, '*');},1000);
|
||||
|
||||
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
|
||||
var eventer = window[eventMethod];
|
||||
var messageEvent = eventMethod === "attachEvent" ? "onmessage" : "message";
|
||||
|
||||
eventer(messageEvent, function (e) {
|
||||
|
||||
if ("stats" in e.data){
|
||||
var out = "";
|
||||
|
||||
for (var streamID in e.data.stats.inbound_stats){
|
||||
out += printValues(e.data.stats.inbound_stats[streamID]);
|
||||
<head>
|
||||
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css" />
|
||||
<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>
|
||||
<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);
|
||||
var quality_reason = "";
|
||||
var encoder = "";
|
||||
var Round_Trip_Time_ms = "";
|
||||
function copyFunction(copyText) {
|
||||
alert("Log copied to the clipboard.");
|
||||
try {
|
||||
copyText.select();
|
||||
copyText.setSelectionRange(0, 99999);
|
||||
document.execCommand("copy");
|
||||
} catch (e) {
|
||||
var dummy = document.createElement("input");
|
||||
document.body.appendChild(dummy);
|
||||
dummy.value = copyText;
|
||||
dummy.select();
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(dummy);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
if (out.split("Bitrate_in_kbps").length>1){
|
||||
document.getElementById("statsdiv").innerHTML = "<b>Bitrate_in_kbps</b>"+out.split("Bitrate_in_kbps")[1];
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
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 />";
|
||||
function loadIframe() {
|
||||
// this is pretty important if you want to avoid camera permission popup problems. YOu need to load the iFRAME after you load the parent body. A quick solution is like: <body onload=>loadIframe();"> !!!
|
||||
|
||||
var streamID = "";
|
||||
var possible =
|
||||
"ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789";
|
||||
for (var i = 0; i < 7; i++) {
|
||||
streamID += possible.charAt(
|
||||
Math.floor(Math.random() * possible.length)
|
||||
);
|
||||
}
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("span");
|
||||
|
||||
iframe.allow="autoplay;camera;microphone";
|
||||
iframe.allowtransparency="true";
|
||||
iframe.allowfullscreen ="true";
|
||||
|
||||
//iframe.allow = "autoplay";
|
||||
var srcString = "./?push=" + streamID + "&cleanoutput&privacy&speedtest&webcam&audiodevice=0&fullscreen&transparent";
|
||||
|
||||
if (urlParams.has("turn")) {
|
||||
srcString = srcString + "&turn=" + urlParams.get("turn");
|
||||
}
|
||||
|
||||
// we are changing some text on page load, just to demonstrate what's possible.
|
||||
iframe.onload = function (e) {
|
||||
e.target.contentWindow.postMessage(
|
||||
{
|
||||
function: "changeHTML",
|
||||
target: "add_camera",
|
||||
value: "Select your Camera",
|
||||
},
|
||||
"*"
|
||||
);
|
||||
};
|
||||
iframe.src = srcString;
|
||||
|
||||
iframeContainer.appendChild(iframe);
|
||||
|
||||
var title = document.createElement("h3");
|
||||
title.innerText = "Local video feed";
|
||||
iframeContainer.appendChild(title);
|
||||
|
||||
var feeds = document.createElement("div");
|
||||
feeds.id = "feeds";
|
||||
|
||||
document.getElementById("container").appendChild(feeds);
|
||||
document.getElementById("feeds").appendChild(iframeContainer);
|
||||
|
||||
|
||||
setInterval(function (iframe1) {
|
||||
iframe1.contentWindow.postMessage({ getStats: true }, "*");
|
||||
}, 1000, iframe);
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("span");
|
||||
|
||||
iframe.allow = "autoplay";
|
||||
var srcString = "./?view=" + streamID + "&cleanoutput&privacy&noaudio&scale=0";
|
||||
|
||||
if (urlParams.has("turn")) {
|
||||
srcString = srcString + "&turn=" + urlParams.get("turn");
|
||||
}
|
||||
|
||||
if (urlParams.has("buffer")) {
|
||||
srcString = srcString + "&buffer=" + urlParams.get("buffer");
|
||||
}
|
||||
|
||||
iframe.src = srcString;
|
||||
|
||||
iframeContainer.appendChild(iframe);
|
||||
|
||||
var title = document.createElement("h3");
|
||||
title.innerText = "Server video feed";
|
||||
iframeContainer.appendChild(title);
|
||||
|
||||
document.getElementById("feeds").appendChild(iframeContainer);
|
||||
|
||||
var button = document.createElement("br");
|
||||
document.getElementById("container").appendChild(button);
|
||||
|
||||
var buttonContainer = document.createElement("div");
|
||||
buttonContainer.id = "controls";
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Low Bitrate";
|
||||
button.className = "grey";
|
||||
button.onclick = function () {
|
||||
iframe.contentWindow.postMessage({ bitrate: 30 }, "*");
|
||||
bitrate.target = 30;
|
||||
};
|
||||
buttonContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "High Bitrate";
|
||||
button.className = "grey";
|
||||
button.onclick = function () {
|
||||
iframe.contentWindow.postMessage({ bitrate: 6000 }, "*");
|
||||
bitrate.target = 6000;
|
||||
};
|
||||
buttonContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Default Bitrate";
|
||||
button.className = "grey active";
|
||||
button.onclick = function () {
|
||||
iframe.contentWindow.postMessage({ bitrate: -1 }, "*");
|
||||
bitrate.target = 3000;
|
||||
};
|
||||
buttonContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Disconnect";
|
||||
button.className = "red";
|
||||
button.style.display = "none";
|
||||
button.onclick = function () {
|
||||
iframe.contentWindow.postMessage({ close: true }, "*");
|
||||
};
|
||||
buttonContainer.appendChild(button);
|
||||
|
||||
document.getElementById("container").appendChild(buttonContainer);
|
||||
|
||||
setInterval(function () {
|
||||
iframe.contentWindow.postMessage({ getStats: true }, "*");
|
||||
}, 1000);
|
||||
|
||||
var eventMethod = window.addEventListener
|
||||
? "addEventListener"
|
||||
: "attachEvent";
|
||||
var eventer = window[eventMethod];
|
||||
var messageEvent =
|
||||
eventMethod === "attachEvent" ? "onmessage" : "message";
|
||||
var previousResolution;
|
||||
|
||||
eventer(messageEvent, function (e) {
|
||||
if ("action" in e.data) {
|
||||
logData(e.data.action, e.data.value);
|
||||
|
||||
if (e.data.action == "new-view-connection") {
|
||||
buttonContainer.querySelectorAll(
|
||||
"#controls button:last-child"
|
||||
)[0].style.display = "inline";
|
||||
}
|
||||
|
||||
if (e.data.action == "setVideoBitrate") {
|
||||
buttonContainer.querySelectorAll("button").forEach((button) => {
|
||||
button.classList.remove("active");
|
||||
});
|
||||
if (e.data.value == 30) {
|
||||
document
|
||||
.querySelectorAll("#controls button")[0]
|
||||
.classList.add("active");
|
||||
}
|
||||
if (e.data.value == 6000) {
|
||||
document
|
||||
.querySelectorAll("#controls button")[1]
|
||||
.classList.add("active");
|
||||
}
|
||||
if (e.data.value == -1) {
|
||||
document
|
||||
.querySelectorAll("#controls button")[2]
|
||||
.classList.add("active");
|
||||
}
|
||||
}
|
||||
}
|
||||
if ("stats" in e.data) {
|
||||
var out = "";
|
||||
|
||||
for (var streamID in e.data.stats.inbound_stats) {
|
||||
out += printValues(e.data.stats.inbound_stats[streamID]);
|
||||
}
|
||||
|
||||
for (var streamID in e.data.stats.outbound_stats) {
|
||||
if (e.data.stats.outbound_stats[streamID].quality_Limitation_Reason){
|
||||
if (quality_reason != e.data.stats.outbound_stats[streamID].quality_Limitation_Reason) {
|
||||
quality_reason = e.data.stats.outbound_stats[streamID].quality_Limitation_Reason;
|
||||
logData("Quality Limitation Reason:", quality_reason);
|
||||
}
|
||||
}
|
||||
|
||||
if (e.data.stats.outbound_stats[streamID].encoder){
|
||||
if (encoder != e.data.stats.outbound_stats[streamID].encoder) {
|
||||
encoder = e.data.stats.outbound_stats[streamID].encoder;
|
||||
logData("Encoder used:", encoder);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (out.split("Bitrate_in_kbps").length > 1) {
|
||||
for (var key in e.data.stats.inbound_stats[streamID]) {
|
||||
if (key.startsWith("RTCMediaStreamTrack_receiver")) {
|
||||
var bitrate =
|
||||
e.data.stats.inbound_stats[streamID][key][
|
||||
"Bitrate_in_kbps"
|
||||
];
|
||||
updateData("bitrate", bitrate);
|
||||
|
||||
var buffer =
|
||||
e.data.stats.inbound_stats[streamID][key][
|
||||
"Buffer_Delay_in_ms"
|
||||
];
|
||||
updateData("buffer", buffer);
|
||||
|
||||
var packetloss =
|
||||
e.data.stats.inbound_stats[streamID][key][
|
||||
"packetLoss_in_percentage"
|
||||
];
|
||||
if (packetloss != undefined) {
|
||||
packetloss = packetloss.toFixed(2);
|
||||
updateData("packetloss", packetloss);
|
||||
}
|
||||
|
||||
var resolution =
|
||||
e.data.stats.inbound_stats[streamID][key]["Resolution"];
|
||||
|
||||
if (previousResolution != resolution) {
|
||||
previousResolution = resolution;
|
||||
logData("Resolution", resolution);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body onload="loadIframe();">
|
||||
<div id="container">
|
||||
</div>
|
||||
<div style="width:48%;padding:0;margin:0;border:0;display:inline-block;">
|
||||
<h3>OBS.Ninja Speed Test - prototype version</h3>
|
||||
(Tests connection to TURN server and back)<br /><br />
|
||||
<li>1.Select your camera.</li>
|
||||
<li>2.Hit start</li>
|
||||
<li>3.Wait for the video to load side-by-side. *If it does not auto-load within 20s, refresh and try again.*</li>
|
||||
<li>4.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>5.Bitrate_in_kbps, Buffer_Delay_in_ms, and packetLoss_percentage are important connection quality metrics</li>
|
||||
<li>6.Increase the video bitrate by pressing <i>High Bitrate</i>; it should approach 6000-kbps if the network allows.</li>
|
||||
</div>
|
||||
<div id="statsdiv" style="width:48%;padding:0;margin:0;border:0;display:inline-block;">
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
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>
|
||||
|
||||
<script>
|
||||
var bitrate = {
|
||||
element: "bitrate-graph",
|
||||
data: 0,
|
||||
max: 6000,
|
||||
target: 3000,
|
||||
};
|
||||
var frames;
|
||||
var buffer = {
|
||||
element: "buffer-graph",
|
||||
data: 0,
|
||||
max: 200,
|
||||
target: 100,
|
||||
};
|
||||
var packetloss = {
|
||||
element: "packetloss-graph",
|
||||
data: 0,
|
||||
max: 3,
|
||||
target: 2,
|
||||
};
|
||||
|
||||
function updateData(type, data) {
|
||||
if (type == "bitrate") {
|
||||
bitrate.data = data;
|
||||
plotData("bitrate", bitrate);
|
||||
}
|
||||
|
||||
if (type == "buffer") {
|
||||
buffer.data = data;
|
||||
plotData("buffer", buffer);
|
||||
}
|
||||
|
||||
if (type == "packetloss") {
|
||||
packetloss.data = data;
|
||||
plotData("packetloss", packetloss);
|
||||
}
|
||||
}
|
||||
|
||||
function plotData(type, stat) {
|
||||
var canvas;
|
||||
var context;
|
||||
var yScale;
|
||||
|
||||
canvas = document.getElementById(stat.element);
|
||||
context = canvas.getContext("2d");
|
||||
|
||||
if (isNaN(stat.data)) {
|
||||
stat.data = 0;
|
||||
}
|
||||
|
||||
var text = (canvas.previousElementSibling.innerHTML = stat.data);
|
||||
|
||||
var height = context.canvas.height;
|
||||
var width = context.canvas.width;
|
||||
|
||||
var borderWidth = 5;
|
||||
var offset = borderWidth * 2;
|
||||
|
||||
// Create gradient
|
||||
var grd = context.createLinearGradient(0, 0, 0, height);
|
||||
|
||||
if (type == "bitrate") {
|
||||
// Higher values are green
|
||||
grd.addColorStop(0, "#33C433");
|
||||
grd.addColorStop(0.7, "#F3F304");
|
||||
grd.addColorStop(0.9, "#F30404");
|
||||
} else {
|
||||
// Higher values are red
|
||||
grd.addColorStop(0, "#F30404");
|
||||
grd.addColorStop(0.3, "#F3F304");
|
||||
grd.addColorStop(0.7, "#33C433");
|
||||
}
|
||||
|
||||
context.strokeStyle = "white";
|
||||
context.fillStyle = grd;
|
||||
//context.fillStyle = "#009933";
|
||||
//context.imageSmoothingEnabled = true;
|
||||
|
||||
yScale = height / stat.target;
|
||||
|
||||
if (stat.data > stat.target) {
|
||||
stat.data = stat.target;
|
||||
}
|
||||
|
||||
if (type == "packetloss" && stat.data == 0.0) {
|
||||
stat.data = 0.1;
|
||||
}
|
||||
|
||||
var x = width - 1;
|
||||
var y = height - stat.data * yScale;
|
||||
var w = 1;
|
||||
|
||||
context.fillStyle = grd;
|
||||
context.fillRect(x, y, w, height);
|
||||
|
||||
// shift everything to the left:
|
||||
var imageData = context.getImageData(1, 0, width - 1, height);
|
||||
context.putImageData(imageData, 0, 0);
|
||||
// now clear the right-most pixels:
|
||||
context.clearRect(width - 1, 0, 1, height);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
139
supports.css
Normal file
@@ -0,0 +1,139 @@
|
||||
#supports .card:nth-child(2){
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
#supports .card {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
#supports .card h1 {
|
||||
font-size: 1.5em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.prettyJson {
|
||||
display: grid;
|
||||
row-gap: 0;
|
||||
column-gap: 10%;
|
||||
}
|
||||
|
||||
|
||||
.prettyJson.two-col {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
.prettyJson.three-col {
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
}
|
||||
|
||||
.prettyJson.four-col {
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||
}
|
||||
|
||||
@media only screen
|
||||
and (min-device-width: 375px)
|
||||
and (max-device-width: 812px)
|
||||
and (orientation: portrait) {
|
||||
|
||||
#supports .card {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.prettyJson.two-col,
|
||||
.prettyJson.three-col {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.subproperty {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
.prettyJson .property {
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 1fr;
|
||||
border-bottom: 1px solid rgb(202, 202, 202);
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.prettyJson > .property > span:nth-child(1) {
|
||||
background: #f3f3f3;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.prettyJson > .property > span:nth-child(2) {
|
||||
background: #d0d0d0;
|
||||
padding: 5px;
|
||||
white-space: pre-wrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.prettyJson .property.ok > span{
|
||||
background: #40916c;
|
||||
font-weight: bold;
|
||||
color:white;
|
||||
}
|
||||
|
||||
.supportedOption {
|
||||
background: #f3f3f3;
|
||||
margin: 5px;
|
||||
border: 1px solid #457b9d;
|
||||
}
|
||||
|
||||
.supportedOption > span:nth-child(1) {
|
||||
font-weight: bold;
|
||||
font-size: 1.3em;
|
||||
background: #457b9d;
|
||||
display: block;
|
||||
padding: 5px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.supportedOption > span:nth-child(2) {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.subproperty {
|
||||
display: flex;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.subproperty:nth-child(even) {
|
||||
background: gainsboro;
|
||||
}
|
||||
|
||||
.subproperty span:nth-child(1) {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.subproperty span:nth-child(2) {
|
||||
flex: 2;
|
||||
}
|
||||
|
||||
div#longCameraSupportedStrings {
|
||||
background: #f3f3f3;
|
||||
border: 1px solid #457b9d;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
#longCameraSupportedStrings > span{
|
||||
display: block;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#longCameraSupportedStrings > span:nth-child(1) {
|
||||
/* padding: 0px; */
|
||||
background: #457b9d;
|
||||
/* margin: 0; */
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
181
supports.html
@@ -1,28 +1,159 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre id="json"><pre>
|
||||
<head>
|
||||
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css" />
|
||||
<link rel="stylesheet" href="./main.css?ver=11" />
|
||||
<link rel="stylesheet" href="./supports.css?ver=1" />
|
||||
<meta charset="utf8" />
|
||||
</head>
|
||||
<body id="supports">
|
||||
<div id="header">
|
||||
<a
|
||||
id="logoname"
|
||||
href="./"
|
||||
style="text-decoration: none; color: white; margin: 2px"
|
||||
>
|
||||
<span data-translate="logo-header"> <font id="qos">O</font>BS.Ninja </span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h1 id="browserSupportedOptionsTitle">💻 Browser supported options</h1>
|
||||
<p style="margin-bottom: 20px">
|
||||
List of options your browser reports as supported. If an option lights up
|
||||
green, your currently selected camera reports that it supports that option.
|
||||
</p>
|
||||
<div id="browserSupportedOptions"></div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h1>Device to check</h1>
|
||||
<select id="cameraSelector" onchange="changeCamera()"></select>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h1 id="cameraSupportedOptionsTitle">📹 Camera supported options</h1>
|
||||
<div id="cameraSupportedOptions"></div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h1>📹 Camera settings</h1>
|
||||
<div id="cameraSettings"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var supports = navigator.mediaDevices.getSupportedConstraints();
|
||||
document.getElementById("json").innerHTML = "BROWSER SUPPORTED OPTIONS<HR>";
|
||||
document.getElementById("json").innerHTML += JSON.stringify(supports, undefined, 2);
|
||||
|
||||
|
||||
navigator.mediaDevices.getUserMedia({video: { facingMode: { ideal: "environment" }}, audio:false}).then(function(mediaStream){
|
||||
console.log("worked");
|
||||
|
||||
setTimeout(function(){
|
||||
mediaStream.getVideoTracks().forEach((track)=>{
|
||||
const capabilities = track.getCapabilities();
|
||||
const settings = track.getSettings();
|
||||
document.getElementById("json").innerHTML += "<HR>CAMERA SUPPORTED<HR>";
|
||||
document.getElementById("json").innerHTML += JSON.stringify(capabilities, undefined, 2);
|
||||
document.getElementById("json").innerHTML += "<HR>CAMERA SETTINGS <HR>";
|
||||
document.getElementById("json").innerHTML += JSON.stringify(settings, undefined, 2);
|
||||
<script>
|
||||
function prettyPrintJsonToId(json, element) {
|
||||
var output = "<div class='prettyJson three-col'>";
|
||||
|
||||
Object.entries(json)
|
||||
.sort()
|
||||
.forEach(([key, value]) => {
|
||||
if (value == true) {
|
||||
value = "<i class='las la-check'></i>";
|
||||
}
|
||||
if (value == false) {
|
||||
value = "<i class='las la-times'></i>";
|
||||
}
|
||||
output += "<div class='property' id=" + key + ">";
|
||||
output += "<span>" + key + "</span><span>" + value + "</span>";
|
||||
output += "</div>";
|
||||
});
|
||||
output += "</div>";
|
||||
document.getElementById(element).innerHTML = output;
|
||||
}
|
||||
|
||||
function prettyPrintSupportedOptions(json, element) {
|
||||
long_ass_strings = [json.deviceId, json.groupId];
|
||||
var output = "<div class='prettyJson two-col'>";
|
||||
|
||||
var nestedObjs;
|
||||
delete json.deviceId;
|
||||
delete json.groupId;
|
||||
|
||||
Object.entries(json)
|
||||
.sort()
|
||||
.forEach(([key, value]) => {
|
||||
output += "<div class='supportedOption'>";
|
||||
nestedObjs = "";
|
||||
if (typeof value === "object" && value !== null) {
|
||||
Object.entries(value)
|
||||
.sort()
|
||||
.forEach(([key, value]) => {
|
||||
nestedObjs +=
|
||||
"<div class='subproperty'><span>" +
|
||||
key +
|
||||
"</span><span>" +
|
||||
value +
|
||||
"</span></div>";
|
||||
});
|
||||
output += "<span>" + key + "</span><span>" + nestedObjs + "</span>";
|
||||
} else {
|
||||
output += "<span>" + key + "</span><span>" + value + "</span>";
|
||||
}
|
||||
output += "</div>";
|
||||
});
|
||||
output += "</div>";
|
||||
output += "<div id='longCameraSupportedStrings'><span>IDs</span>";
|
||||
output += "<span>deviceId: " + long_ass_strings[0] + "</span>";
|
||||
output += "<span>groupId: " + long_ass_strings[1] + "</span></div>";
|
||||
document.getElementById(element).innerHTML = output;
|
||||
}
|
||||
|
||||
function changeCamera() {
|
||||
var deviceId = document.getElementById("cameraSelector").value;
|
||||
getCameraDetails(deviceId);
|
||||
}
|
||||
|
||||
function getCameraDetails(deviceId) {
|
||||
navigator.mediaDevices
|
||||
.getUserMedia({
|
||||
video: {
|
||||
deviceId: deviceId,
|
||||
},
|
||||
audio: false,
|
||||
})
|
||||
.then(function (mediaStream) {
|
||||
console.log("worked");
|
||||
setTimeout(function () {
|
||||
mediaStream.getVideoTracks().forEach((track) => {
|
||||
const capabilities = track.getCapabilities();
|
||||
const settings = track.getSettings();
|
||||
prettyPrintSupportedOptions(capabilities, "cameraSupportedOptions");
|
||||
document
|
||||
.querySelectorAll(".property")
|
||||
.forEach((el) => el.classList.remove("ok"));
|
||||
|
||||
Object.entries(capabilities)
|
||||
.sort()
|
||||
.forEach(([key, value]) => {
|
||||
document.getElementById(key).classList.add("ok");
|
||||
});
|
||||
prettyPrintJsonToId(settings, "cameraSettings");
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
}
|
||||
|
||||
var supports = navigator.mediaDevices.getSupportedConstraints();
|
||||
prettyPrintJsonToId(supports, "browserSupportedOptions");
|
||||
document.getElementById("browserSupportedOptionsTitle").innerText +=
|
||||
" (" + Object.keys(supports).length + ")";
|
||||
|
||||
navigator.mediaDevices
|
||||
.enumerateDevices()
|
||||
.then(function (devices) {
|
||||
setTimeout(function () {
|
||||
console.log("Listing devices");
|
||||
devices.forEach(function (device) {
|
||||
if (device.kind == "videoinput") {
|
||||
var element = document.createElement("option");
|
||||
element.setAttribute("value", device.deviceId);
|
||||
element.innerText = device.label;
|
||||
document.getElementById("cameraSelector").appendChild(element);
|
||||
console.log(device);
|
||||
}
|
||||
});
|
||||
getCameraDetails(devices[0]);
|
||||
}, 1000);
|
||||
})
|
||||
.catch(function (err) {
|
||||
console.log(err.name + ": " + err.message);
|
||||
});
|
||||
},1000);
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
21
thirdparty/CodecsHandler.js
vendored
@@ -315,12 +315,23 @@ var CodecsHandler = (function() {
|
||||
|
||||
// Please see https://tools.ietf.org/html/rfc7587 for more details on OPUS settings
|
||||
|
||||
|
||||
if (typeof params.minptime != 'undefined') { // max packet size in milliseconds
|
||||
if (params.minptime != false) {
|
||||
appendOpusNext += ';minptime:' + params.minptime; // 3, 5, 10, 20, 40, 60 and the default is 120. (20 is minimum recommended for webrtc)
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof params.maxptime != 'undefined') { // max packet size in milliseconds
|
||||
appendOpusNext += ';maxptime:' + params.maxptime; // 3, 5, 10, 20, 40, 60 and the default is 120. (20 is minimum recommended for webrtc)
|
||||
if (params.maxptime != false) {
|
||||
appendOpusNext += ';maxptime:' + params.maxptime; // 3, 5, 10, 20, 40, 60 and the default is 120. (20 is minimum recommended for webrtc)
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof params.ptime != 'undefined') { // packet size; webrtc doesn't support less than 10 or 20 I think.
|
||||
appendOpusNext += ';ptime:' + params.ptime;
|
||||
if (params.ptime != false) {
|
||||
appendOpusNext += ';ptime:' + params.ptime;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof params.stereo != 'undefined'){
|
||||
@@ -346,9 +357,9 @@ var CodecsHandler = (function() {
|
||||
appendOpusNext += ';cbr=' + params.cbr; // default is 0 (vbr)
|
||||
}
|
||||
|
||||
//if (typeof params.useinbandfec != 'undefined') { // useful for handling packet loss
|
||||
// appendOpusNext += '; useinbandfec=' + params.useinbandfec; // Defaults to 0
|
||||
//}
|
||||
if (typeof params.useinbandfec != 'undefined') { // useful for handling packet loss
|
||||
appendOpusNext += ';useinbandfec=' + params.useinbandfec; // Defaults to 0
|
||||
}
|
||||
|
||||
if (typeof params.usedtx != 'undefined') { // Default is 0
|
||||
appendOpusNext += ';usedtx=' + params.usedtx; // if decoder prefers the use of DTX.
|
||||
|
||||
4
thirdparty/StreamSaver.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/* global chrome location ReadableStream define MessageChannel TransformStream */
|
||||
// https://github.com/jimmywarting/StreamSaver.js
|
||||
// MIT License
|
||||
((e,t)=>{"undefined"!=typeof module?module.exports=t():"function"==typeof define&&"object"==typeof define.amd?define(t):this.streamSaver=t()})(0,()=>{"use strict";const e="object"==typeof window?window:this;e.HTMLElement||console.warn("streamsaver is meant to run on browsers main thread");let t=null,a=!1;const r=e.WebStreamsPolyfill||{},n=e.isSecureContext;let o=/constructor/i.test(e.HTMLElement)||!!e.safari||!!e.WebKitPoint;const s=n||"MozAppearance"in document.documentElement.style?"iframe":"navigate",i={createWriteStream:function(r,m,d){let c={size:null,pathname:null,writableStrategy:void 0,readableStrategy:void 0},p=0,f=null,u=null,w=null;Number.isFinite(m)?([d,m]=[m,d],console.warn("[StreamSaver] Depricated pass an object as 2nd argument when creating a write stream"),c.size=d,c.writableStrategy=m):m&&m.highWaterMark?(console.warn("[StreamSaver] Depricated pass an object as 2nd argument when creating a write stream"),c.size=d,c.writableStrategy=m):c=m||{};if(!o){t||(t=n?l(i.mitm):function(t){const a=document.createDocumentFragment(),r={frame:e.open(t,"popup","width=200,height=100"),loaded:!1,isIframe:!1,isPopup:!0,remove(){r.frame.close()},addEventListener(...e){a.addEventListener(...e)},dispatchEvent(...e){a.dispatchEvent(...e)},removeEventListener(...e){a.removeEventListener(...e)},postMessage(...e){r.frame.postMessage(...e)}},n=t=>{t.source===r.frame&&(r.loaded=!0,e.removeEventListener("message",n),r.dispatchEvent(new Event("load")))};return e.addEventListener("message",n),r}(i.mitm)),u=new MessageChannel,r=encodeURIComponent(r.replace(/\//g,":")).replace(/['()]/g,escape).replace(/\*/g,"%2A");const o={transferringReadable:a,pathname:c.pathname||Math.random().toString().slice(-6)+"/"+r,headers:{"Content-Type":"application/octet-stream; charset=utf-8","Content-Disposition":"attachment; filename*=UTF-8''"+r}};c.size&&(o.headers["Content-Length"]=c.size);const m=[o,"*",[u.port2]];if(a){const e="iframe"===s?void 0:{transform(e,t){if(!(e instanceof Uint8Array))throw new TypeError("Can only wirte Uint8Arrays");p+=e.length,t.enqueue(e),f&&(location.href=f,f=null)},flush(){f&&(location.href=f)}},t=(w=new i.TransformStream(e,c.writableStrategy,c.readableStrategy)).readable;u.port1.postMessage({readableStream:t},[t])}u.port1.onmessage=(e=>{e.data.download&&("navigate"===s?(t.remove(),t=null,p?location.href=e.data.download:f=e.data.download):(t.isPopup&&(t.remove(),t=null,"iframe"===s&&l(i.mitm)),l(e.data.download)))}),t.loaded?t.postMessage(...m):t.addEventListener("load",()=>{t.postMessage(...m)},{once:!0})}let g=[];return!o&&w&&w.writable||new i.WritableStream({write(e){if(!(e instanceof Uint8Array))throw new TypeError("Can only wirte Uint8Arrays");o?g.push(e):(u.port1.postMessage(e),p+=e.length,f&&(location.href=f,f=null))},close(){if(o){const e=new Blob(g,{type:"application/octet-stream; charset=utf-8"}),t=document.createElement("a");t.href=URL.createObjectURL(e),t.download=r,t.click()}else u.port1.postMessage("end")},abort(){g=[],u.port1.postMessage("abort"),u.port1.onmessage=null,u.port1.close(),u.port2.close(),u=null}},c.writableStrategy)},WritableStream:e.WritableStream||r.WritableStream,supported:!0,version:{full:"2.0.5",major:2,minor:0,dot:5},mitm:"./thirdparty/mitm.html?version=2.0.0"};function l(e){if(!e)throw new Error("meh");const t=document.createElement("iframe");return t.hidden=!0,t.src=e,t.loaded=!1,t.name="iframe",t.isIframe=!0,t.postMessage=((...e)=>t.contentWindow.postMessage(...e)),t.addEventListener("load",()=>{t.loaded=!0},{once:!0}),document.body.appendChild(t),t}try{new Response(new ReadableStream),!n||"serviceWorker"in navigator||(o=!0)}catch(e){o=!0}return(e=>{try{e()}catch(e){}})(()=>{const{readable:e}=new TransformStream,t=new MessageChannel;t.port1.postMessage(e,[e]),t.port1.close(),t.port2.close(),a=!0,Object.defineProperty(i,"TransformStream",{configurable:!1,writable:!1,value:TransformStream})}),i});
|
||||
10
thirdparty/adapter.min.js
vendored
Normal file
35
thirdparty/aes.js
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
CryptoJS v3.1.2
|
||||
code.google.com/p/crypto-js
|
||||
(c) 2009-2013 by Jeff Mott. All rights reserved.
|
||||
code.google.com/p/crypto-js/wiki/License
|
||||
*/
|
||||
var CryptoJS=CryptoJS||function(u,p){var d={},l=d.lib={},s=function(){},t=l.Base={extend:function(a){s.prototype=this;var c=new s;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},
|
||||
r=l.WordArray=t.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=p?c:4*a.length},toString:function(a){return(a||v).stringify(this)},concat:function(a){var c=this.words,e=a.words,j=this.sigBytes;a=a.sigBytes;this.clamp();if(j%4)for(var k=0;k<a;k++)c[j+k>>>2]|=(e[k>>>2]>>>24-8*(k%4)&255)<<24-8*((j+k)%4);else if(65535<e.length)for(k=0;k<a;k+=4)c[j+k>>>2]=e[k>>>2];else c.push.apply(c,e);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<
|
||||
32-8*(c%4);a.length=u.ceil(c/4)},clone:function(){var a=t.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],e=0;e<a;e+=4)c.push(4294967296*u.random()|0);return new r.init(c,a)}}),w=d.enc={},v=w.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j<a;j++){var k=c[j>>>2]>>>24-8*(j%4)&255;e.push((k>>>4).toString(16));e.push((k&15).toString(16))}return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j<c;j+=2)e[j>>>3]|=parseInt(a.substr(j,
|
||||
2),16)<<24-4*(j%8);return new r.init(e,c/2)}},b=w.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j<a;j++)e.push(String.fromCharCode(c[j>>>2]>>>24-8*(j%4)&255));return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j<c;j++)e[j>>>2]|=(a.charCodeAt(j)&255)<<24-8*(j%4);return new r.init(e,c)}},x=w.Utf8={stringify:function(a){try{return decodeURIComponent(escape(b.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return b.parse(unescape(encodeURIComponent(a)))}},
|
||||
q=l.BufferedBlockAlgorithm=t.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=x.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,e=c.words,j=c.sigBytes,k=this.blockSize,b=j/(4*k),b=a?u.ceil(b):u.max((b|0)-this._minBufferSize,0);a=b*k;j=u.min(4*a,j);if(a){for(var q=0;q<a;q+=k)this._doProcessBlock(e,q);q=e.splice(0,a);c.sigBytes-=j}return new r.init(q,j)},clone:function(){var a=t.clone.call(this);
|
||||
a._data=this._data.clone();return a},_minBufferSize:0});l.Hasher=q.extend({cfg:t.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){q.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,e){return(new a.init(e)).finalize(b)}},_createHmacHelper:function(a){return function(b,e){return(new n.HMAC.init(a,
|
||||
e)).finalize(b)}}});var n=d.algo={};return d}(Math);
|
||||
(function(){var u=CryptoJS,p=u.lib.WordArray;u.enc.Base64={stringify:function(d){var l=d.words,p=d.sigBytes,t=this._map;d.clamp();d=[];for(var r=0;r<p;r+=3)for(var w=(l[r>>>2]>>>24-8*(r%4)&255)<<16|(l[r+1>>>2]>>>24-8*((r+1)%4)&255)<<8|l[r+2>>>2]>>>24-8*((r+2)%4)&255,v=0;4>v&&r+0.75*v<p;v++)d.push(t.charAt(w>>>6*(3-v)&63));if(l=t.charAt(64))for(;d.length%4;)d.push(l);return d.join("")},parse:function(d){var l=d.length,s=this._map,t=s.charAt(64);t&&(t=d.indexOf(t),-1!=t&&(l=t));for(var t=[],r=0,w=0;w<
|
||||
l;w++)if(w%4){var v=s.indexOf(d.charAt(w-1))<<2*(w%4),b=s.indexOf(d.charAt(w))>>>6-2*(w%4);t[r>>>2]|=(v|b)<<24-8*(r%4);r++}return p.create(t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();
|
||||
(function(u){function p(b,n,a,c,e,j,k){b=b+(n&a|~n&c)+e+k;return(b<<j|b>>>32-j)+n}function d(b,n,a,c,e,j,k){b=b+(n&c|a&~c)+e+k;return(b<<j|b>>>32-j)+n}function l(b,n,a,c,e,j,k){b=b+(n^a^c)+e+k;return(b<<j|b>>>32-j)+n}function s(b,n,a,c,e,j,k){b=b+(a^(n|~c))+e+k;return(b<<j|b>>>32-j)+n}for(var t=CryptoJS,r=t.lib,w=r.WordArray,v=r.Hasher,r=t.algo,b=[],x=0;64>x;x++)b[x]=4294967296*u.abs(u.sin(x+1))|0;r=r.MD5=v.extend({_doReset:function(){this._hash=new w.init([1732584193,4023233417,2562383102,271733878])},
|
||||
_doProcessBlock:function(q,n){for(var a=0;16>a;a++){var c=n+a,e=q[c];q[c]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360}var a=this._hash.words,c=q[n+0],e=q[n+1],j=q[n+2],k=q[n+3],z=q[n+4],r=q[n+5],t=q[n+6],w=q[n+7],v=q[n+8],A=q[n+9],B=q[n+10],C=q[n+11],u=q[n+12],D=q[n+13],E=q[n+14],x=q[n+15],f=a[0],m=a[1],g=a[2],h=a[3],f=p(f,m,g,h,c,7,b[0]),h=p(h,f,m,g,e,12,b[1]),g=p(g,h,f,m,j,17,b[2]),m=p(m,g,h,f,k,22,b[3]),f=p(f,m,g,h,z,7,b[4]),h=p(h,f,m,g,r,12,b[5]),g=p(g,h,f,m,t,17,b[6]),m=p(m,g,h,f,w,22,b[7]),
|
||||
f=p(f,m,g,h,v,7,b[8]),h=p(h,f,m,g,A,12,b[9]),g=p(g,h,f,m,B,17,b[10]),m=p(m,g,h,f,C,22,b[11]),f=p(f,m,g,h,u,7,b[12]),h=p(h,f,m,g,D,12,b[13]),g=p(g,h,f,m,E,17,b[14]),m=p(m,g,h,f,x,22,b[15]),f=d(f,m,g,h,e,5,b[16]),h=d(h,f,m,g,t,9,b[17]),g=d(g,h,f,m,C,14,b[18]),m=d(m,g,h,f,c,20,b[19]),f=d(f,m,g,h,r,5,b[20]),h=d(h,f,m,g,B,9,b[21]),g=d(g,h,f,m,x,14,b[22]),m=d(m,g,h,f,z,20,b[23]),f=d(f,m,g,h,A,5,b[24]),h=d(h,f,m,g,E,9,b[25]),g=d(g,h,f,m,k,14,b[26]),m=d(m,g,h,f,v,20,b[27]),f=d(f,m,g,h,D,5,b[28]),h=d(h,f,
|
||||
m,g,j,9,b[29]),g=d(g,h,f,m,w,14,b[30]),m=d(m,g,h,f,u,20,b[31]),f=l(f,m,g,h,r,4,b[32]),h=l(h,f,m,g,v,11,b[33]),g=l(g,h,f,m,C,16,b[34]),m=l(m,g,h,f,E,23,b[35]),f=l(f,m,g,h,e,4,b[36]),h=l(h,f,m,g,z,11,b[37]),g=l(g,h,f,m,w,16,b[38]),m=l(m,g,h,f,B,23,b[39]),f=l(f,m,g,h,D,4,b[40]),h=l(h,f,m,g,c,11,b[41]),g=l(g,h,f,m,k,16,b[42]),m=l(m,g,h,f,t,23,b[43]),f=l(f,m,g,h,A,4,b[44]),h=l(h,f,m,g,u,11,b[45]),g=l(g,h,f,m,x,16,b[46]),m=l(m,g,h,f,j,23,b[47]),f=s(f,m,g,h,c,6,b[48]),h=s(h,f,m,g,w,10,b[49]),g=s(g,h,f,m,
|
||||
E,15,b[50]),m=s(m,g,h,f,r,21,b[51]),f=s(f,m,g,h,u,6,b[52]),h=s(h,f,m,g,k,10,b[53]),g=s(g,h,f,m,B,15,b[54]),m=s(m,g,h,f,e,21,b[55]),f=s(f,m,g,h,v,6,b[56]),h=s(h,f,m,g,x,10,b[57]),g=s(g,h,f,m,t,15,b[58]),m=s(m,g,h,f,D,21,b[59]),f=s(f,m,g,h,z,6,b[60]),h=s(h,f,m,g,C,10,b[61]),g=s(g,h,f,m,j,15,b[62]),m=s(m,g,h,f,A,21,b[63]);a[0]=a[0]+f|0;a[1]=a[1]+m|0;a[2]=a[2]+g|0;a[3]=a[3]+h|0},_doFinalize:function(){var b=this._data,n=b.words,a=8*this._nDataBytes,c=8*b.sigBytes;n[c>>>5]|=128<<24-c%32;var e=u.floor(a/
|
||||
4294967296);n[(c+64>>>9<<4)+15]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360;n[(c+64>>>9<<4)+14]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(n.length+1);this._process();b=this._hash;n=b.words;for(a=0;4>a;a++)c=n[a],n[a]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return b},clone:function(){var b=v.clone.call(this);b._hash=this._hash.clone();return b}});t.MD5=v._createHelper(r);t.HmacMD5=v._createHmacHelper(r)})(Math);
|
||||
(function(){var u=CryptoJS,p=u.lib,d=p.Base,l=p.WordArray,p=u.algo,s=p.EvpKDF=d.extend({cfg:d.extend({keySize:4,hasher:p.MD5,iterations:1}),init:function(d){this.cfg=this.cfg.extend(d)},compute:function(d,r){for(var p=this.cfg,s=p.hasher.create(),b=l.create(),u=b.words,q=p.keySize,p=p.iterations;u.length<q;){n&&s.update(n);var n=s.update(d).finalize(r);s.reset();for(var a=1;a<p;a++)n=s.finalize(n),s.reset();b.concat(n)}b.sigBytes=4*q;return b}});u.EvpKDF=function(d,l,p){return s.create(p).compute(d,
|
||||
l)}})();
|
||||
CryptoJS.lib.Cipher||function(u){var p=CryptoJS,d=p.lib,l=d.Base,s=d.WordArray,t=d.BufferedBlockAlgorithm,r=p.enc.Base64,w=p.algo.EvpKDF,v=d.Cipher=t.extend({cfg:l.extend(),createEncryptor:function(e,a){return this.create(this._ENC_XFORM_MODE,e,a)},createDecryptor:function(e,a){return this.create(this._DEC_XFORM_MODE,e,a)},init:function(e,a,b){this.cfg=this.cfg.extend(b);this._xformMode=e;this._key=a;this.reset()},reset:function(){t.reset.call(this);this._doReset()},process:function(e){this._append(e);return this._process()},
|
||||
finalize:function(e){e&&this._append(e);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(e){return{encrypt:function(b,k,d){return("string"==typeof k?c:a).encrypt(e,b,k,d)},decrypt:function(b,k,d){return("string"==typeof k?c:a).decrypt(e,b,k,d)}}}});d.StreamCipher=v.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var b=p.mode={},x=function(e,a,b){var c=this._iv;c?this._iv=u:c=this._prevBlock;for(var d=0;d<b;d++)e[a+d]^=
|
||||
c[d]},q=(d.BlockCipherMode=l.extend({createEncryptor:function(e,a){return this.Encryptor.create(e,a)},createDecryptor:function(e,a){return this.Decryptor.create(e,a)},init:function(e,a){this._cipher=e;this._iv=a}})).extend();q.Encryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize;x.call(this,e,a,c);b.encryptBlock(e,a);this._prevBlock=e.slice(a,a+c)}});q.Decryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize,d=e.slice(a,a+c);b.decryptBlock(e,a);x.call(this,
|
||||
e,a,c);this._prevBlock=d}});b=b.CBC=q;q=(p.pad={}).Pkcs7={pad:function(a,b){for(var c=4*b,c=c-a.sigBytes%c,d=c<<24|c<<16|c<<8|c,l=[],n=0;n<c;n+=4)l.push(d);c=s.create(l,c);a.concat(c)},unpad:function(a){a.sigBytes-=a.words[a.sigBytes-1>>>2]&255}};d.BlockCipher=v.extend({cfg:v.cfg.extend({mode:b,padding:q}),reset:function(){v.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;this._mode=c.call(a,
|
||||
this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var n=d.CipherParams=l.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),b=(p.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;return(a?s.create([1398893684,
|
||||
1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=s.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return n.create({ciphertext:a,salt:c})}},a=d.SerializableCipher=l.extend({cfg:l.extend({format:b}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var l=a.createEncryptor(c,d);b=l.finalize(b);l=l.cfg;return n.create({ciphertext:b,key:c,iv:l.iv,algorithm:a,mode:l.mode,padding:l.padding,blockSize:a.blockSize,formatter:d.format})},
|
||||
decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),p=(p.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=s.random(8));a=w.create({keySize:b+c}).compute(a,d);c=s.create(a.words.slice(b),4*c);a.sigBytes=4*b;return n.create({key:a,iv:c,salt:d})}},c=d.PasswordBasedCipher=a.extend({cfg:a.cfg.extend({kdf:p}),encrypt:function(b,c,d,l){l=this.cfg.extend(l);d=l.kdf.execute(d,
|
||||
b.keySize,b.ivSize);l.iv=d.iv;b=a.encrypt.call(this,b,c,d.key,l);b.mixIn(d);return b},decrypt:function(b,c,d,l){l=this.cfg.extend(l);c=this._parse(c,l.format);d=l.kdf.execute(d,b.keySize,b.ivSize,c.salt);l.iv=d.iv;return a.decrypt.call(this,b,c,d.key,l)}})}();
|
||||
(function(){for(var u=CryptoJS,p=u.lib.BlockCipher,d=u.algo,l=[],s=[],t=[],r=[],w=[],v=[],b=[],x=[],q=[],n=[],a=[],c=0;256>c;c++)a[c]=128>c?c<<1:c<<1^283;for(var e=0,j=0,c=0;256>c;c++){var k=j^j<<1^j<<2^j<<3^j<<4,k=k>>>8^k&255^99;l[e]=k;s[k]=e;var z=a[e],F=a[z],G=a[F],y=257*a[k]^16843008*k;t[e]=y<<24|y>>>8;r[e]=y<<16|y>>>16;w[e]=y<<8|y>>>24;v[e]=y;y=16843009*G^65537*F^257*z^16843008*e;b[k]=y<<24|y>>>8;x[k]=y<<16|y>>>16;q[k]=y<<8|y>>>24;n[k]=y;e?(e=z^a[a[a[G^z]]],j^=a[a[j]]):e=j=1}var H=[0,1,2,4,8,
|
||||
16,32,64,128,27,54],d=d.AES=p.extend({_doReset:function(){for(var a=this._key,c=a.words,d=a.sigBytes/4,a=4*((this._nRounds=d+6)+1),e=this._keySchedule=[],j=0;j<a;j++)if(j<d)e[j]=c[j];else{var k=e[j-1];j%d?6<d&&4==j%d&&(k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255]):(k=k<<8|k>>>24,k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255],k^=H[j/d|0]<<24);e[j]=e[j-d]^k}c=this._invKeySchedule=[];for(d=0;d<a;d++)j=a-d,k=d%4?e[j]:e[j-4],c[d]=4>d||4>=j?k:b[l[k>>>24]]^x[l[k>>>16&255]]^q[l[k>>>
|
||||
8&255]]^n[l[k&255]]},encryptBlock:function(a,b){this._doCryptBlock(a,b,this._keySchedule,t,r,w,v,l)},decryptBlock:function(a,c){var d=a[c+1];a[c+1]=a[c+3];a[c+3]=d;this._doCryptBlock(a,c,this._invKeySchedule,b,x,q,n,s);d=a[c+1];a[c+1]=a[c+3];a[c+3]=d},_doCryptBlock:function(a,b,c,d,e,j,l,f){for(var m=this._nRounds,g=a[b]^c[0],h=a[b+1]^c[1],k=a[b+2]^c[2],n=a[b+3]^c[3],p=4,r=1;r<m;r++)var q=d[g>>>24]^e[h>>>16&255]^j[k>>>8&255]^l[n&255]^c[p++],s=d[h>>>24]^e[k>>>16&255]^j[n>>>8&255]^l[g&255]^c[p++],t=
|
||||
d[k>>>24]^e[n>>>16&255]^j[g>>>8&255]^l[h&255]^c[p++],n=d[n>>>24]^e[g>>>16&255]^j[h>>>8&255]^l[k&255]^c[p++],g=q,h=s,k=t;q=(f[g>>>24]<<24|f[h>>>16&255]<<16|f[k>>>8&255]<<8|f[n&255])^c[p++];s=(f[h>>>24]<<24|f[k>>>16&255]<<16|f[n>>>8&255]<<8|f[g&255])^c[p++];t=(f[k>>>24]<<24|f[n>>>16&255]<<16|f[g>>>8&255]<<8|f[h&255])^c[p++];n=(f[n>>>24]<<24|f[g>>>16&255]<<16|f[h>>>8&255]<<8|f[k&255])^c[p++];a[b]=q;a[b+1]=s;a[b+2]=t;a[b+3]=n},keySize:8});u.AES=p._createHelper(d)})();
|
||||
2
thirdparty/jquery.min.js
vendored
7
thirdparty/mitm.html
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<!--
|
||||
https://github.com/jimmywarting/StreamSaver.js/blob/master/mitm.html
|
||||
// MIT License
|
||||
-->
|
||||
<script>
|
||||
let keepAlive=()=>{keepAlive=(()=>{});var e=location.href.substr(0,location.href.lastIndexOf("/"))+"/ping",a=setInterval(()=>{sw?sw.postMessage("ping"):fetch(e).then(e=>e.text(!e.ok&&clearInterval(a)))},1e4)},messages=[];window.onmessage=(e=>messages.push(e));let sw=null,scope="";function registerWorker(){return navigator.serviceWorker.getRegistration("./").then(e=>e||navigator.serviceWorker.register("sw.js",{scope:"./thirdparty/"})).then(e=>{const a=e.installing||e.waiting;return scope=e.scope,(sw=e.active)||new Promise(r=>{a.addEventListener("statechange",fn=(()=>{"activated"===a.state&&(a.removeEventListener("statechange",fn),sw=e.active,r())}))})})}function onMessage(e){let{data:a,ports:r,origin:t}=e;if(!r||!r.length)throw new TypeError("[StreamSaver] You didn't send a messageChannel");if("object"!=typeof a)throw new TypeError("[StreamSaver] You didn't send a object");a.origin=t,a.referrer=a.referrer||document.referrer||t,a.streamSaverVersion=new URLSearchParams(location.search).get("version"),"1.2.0"===a.streamSaverVersion&&console.warn("[StreamSaver] please update streamsaver"),a.headers?new Headers(a.headers):console.warn("[StreamSaver] pass `data.headers` that you would like to pass along to the service worker\nit should be a 2D array or a key/val object that fetch's Headers api accepts"),"string"==typeof a.filename&&(console.warn("[StreamSaver] You shouldn't send `data.filename` anymore. It should be included in the Content-Disposition header option"),a.filename=a.filename.replace(/\//g,":")),a.size&&console.warn("[StreamSaver] You shouldn't send `data.size` anymore. It should be included in the content-length header option"),a.readableStream&&console.warn("[StreamSaver] You should send the readableStream in the messageChannel, not throught mitm"),a.pathname||(console.warn("[StreamSaver] Please send `data.pathname` (eg: /pictures/summer.jpg)"),a.pathname=Math.random().toString().slice(-6)+"/"+a.filename),a.pathname=a.pathname.replace(/^\/+/g,"");let n=t.replace(/(^\w+:|^)\/\//,"");if(a.url=new URL(`${scope+n}/${a.pathname}`).toString(),!a.url.startsWith(`${scope+n}/`))throw new TypeError("[StreamSaver] bad `data.pathname`");const s=a.readableStream?[r[0],a.readableStream]:[r[0]];return a.readableStream||a.transferringReadable||keepAlive(),sw.postMessage(a,s)}window.opener&&window.opener.postMessage("StreamSaver::loadedPopup","*"),navigator.serviceWorker?registerWorker().then(()=>{window.onmessage=onMessage,messages.forEach(window.onmessage)}):keepAlive();
|
||||
</script>
|
||||
4
thirdparty/polyfill.min.js
vendored
Normal file
1
thirdparty/polyfill.min.js.map
vendored
Normal file
4
thirdparty/sw.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/* global self ReadableStream Response */
|
||||
// https://github.com/jimmywarting/StreamSaver.js/blob/master/sw.js
|
||||
// MIT License
|
||||
self.addEventListener("install",()=>{self.skipWaiting()}),self.addEventListener("activate",e=>{e.waitUntil(self.clients.claim())});const map=new Map;function createStream(e){return new ReadableStream({start(t){e.onmessage=(({data:e})=>{if("end"===e)return t.close();"abort"!==e?t.enqueue(e):t.error("Aborted the download")})},cancel(){console.log("user aborted")}})}self.onmessage=(e=>{if("ping"===e.data)return;const t=e.data,n=t.url||self.registration.scope+Math.random()+"/"+("string"==typeof t?t:t.filename),a=e.ports[0],s=new Array(3);s[1]=t,s[2]=a,e.data.readableStream?s[0]=e.data.readableStream:e.data.transferringReadable?a.onmessage=(e=>{a.onmessage=null,s[0]=e.data.readableStream}):s[0]=createStream(a),map.set(n,s),a.postMessage({download:n})}),self.onfetch=(e=>{const t=e.request.url;if(t.endsWith("/ping"))return e.respondWith(new Response("pong"));const n=map.get(t);if(!n)return null;const[a,s,o]=n;map.delete(t);const r=new Headers({"Content-Type":"application/octet-stream; charset=utf-8","Content-Security-Policy":"default-src 'none'","X-Content-Security-Policy":"default-src 'none'","X-WebKit-CSP":"default-src 'none'","X-XSS-Protection":"1; mode=block"});let i=new Headers(s.headers||{});i.has("Content-Length")&&r.set("Content-Length",i.get("Content-Length")),i.has("Content-Disposition")&&r.set("Content-Disposition",i.get("Content-Disposition")),s.size&&(console.warn("Depricated"),r.set("Content-Length",s.size));let l="string"==typeof s?s:s.filename;l&&(console.warn("Depricated"),l=encodeURIComponent(l).replace(/['()]/g,escape).replace(/\*/g,"%2A"),r.set("Content-Disposition","attachment; filename*=UTF-8''"+l)),e.respondWith(new Response(a,{headers:r})),o.postMessage({debug:"Download started"})});
|
||||
31
thirdparty/webmidi.js
vendored
Normal file
@@ -1,51 +1,172 @@
|
||||
{
|
||||
"GO": "GO",
|
||||
"add-group-chat": "Add Group Chat",
|
||||
"add-to-group": "Add to Group Scene",
|
||||
"add-your-camera": "Add your Camera",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Added Notes:</i></u>\n\t\t\t\t<li>Anyone can enter a room if they know the name, so keep it unique</li>\n\t\t\t\t<li>Having more than four (4) people in a room is not advisable due to performance reasons, but it depends on your hardware.</li>\n\t\t\t\t<li>iOS devices will have their video only be visible to the director. This is a hardware limitation.</li>\n\t\t\t\t<li>The \"Recording\" option is new and is considered experimental.</li>\n\t\t\t\t<li>You must \"Add\" a video feed to the \"Group Scene\" for it to appear there.</li>\n\t\t\t\t<li>There is a new \"enhanced fullscreen\" button added to the Guest's view.</li>\n\t\t\t\t",
|
||||
"advanced-paramaters": "Advanced Parameters",
|
||||
"audio-sources": "Audio Sources",
|
||||
"back": "Back",
|
||||
"balanced": "Balanced",
|
||||
"copy-this-url": "Sharable Link to this video",
|
||||
"copy-to-clipboard": "Copy to Clipboard",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"enable-stereo-and-pro": "Enable Stereo and Pro HD Audio",
|
||||
"enter-the-rooms-control": "Enter the Room's Control Center",
|
||||
"force-vp9-video-codec": "Force VP9 Video Codec (less artifacting)",
|
||||
"generate-invite-link": "GENERATE THE INVITE LINK",
|
||||
"here-you-can-pre-generate": "Here you can pre-generate a reusable view link and a related guest invite link.",
|
||||
"high-security-mode": "High Security Mode",
|
||||
"info-blob": "",
|
||||
"joining-room": "You are joining room",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja",
|
||||
"max-resolution": "Max Resolution",
|
||||
"mute": "Mute",
|
||||
"no-audio": "No Audio",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>note</b>: Do not forget to click \"Share audio\" in Chrome.<br>(Firefox does not support audio sharing.)",
|
||||
"open-in-new-tab": "Open in new Tab",
|
||||
"record": "Record",
|
||||
"remote-control-for-obs": "Remote Control",
|
||||
"remote-screenshare-obs": "Remote Screenshare",
|
||||
"room-name": "Room Name",
|
||||
"rooms-allow-for": "Rooms allow for simplified group-chat and the advanced management of multiple streams at once.",
|
||||
"select-audio-source": "Select Audio Sources",
|
||||
"select-audio-video": "Select the audio/video source below",
|
||||
"select-screen-to-share": "SELECT SCREEN TO SHARE",
|
||||
"show-tips": "Show me some tips..",
|
||||
"smooth-cool": "Smooth and Cool",
|
||||
"unlock-video-bitrate": "Unlock Video Bitrate (20mbps)",
|
||||
"video-source": "Video source",
|
||||
"volume": "Volume",
|
||||
"you-are-in-the-control-center": "You are in the room's control center",
|
||||
"waiting-for-camera": "Waiting for Camera to Load",
|
||||
"video-resolution": "Video Resolution: ",
|
||||
"hide-screen-share": "Hide Screenshare Option",
|
||||
"allow-remote-control": "Remote Control Camera Zoom (android)",
|
||||
"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"
|
||||
"titles": {
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"toggle-the-chat": "Toggle the Chat",
|
||||
"mute-the-speaker": "Mute the Speaker",
|
||||
"mute-the-mic": "Mute the Mic",
|
||||
"disable-the-camera": "Disable the Camera",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"settings": "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",
|
||||
"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-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",
|
||||
"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",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the a Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Remotely Mute this Audio in all remote '&scene' views",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"disable-video-preview": "Disable Video Preview",
|
||||
"low-quality-preview": "Low-Quality Preview",
|
||||
"high-quality-preview": "High-Quality Preview",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"toggle-voice-chat-with-this-guest": "Toggle Voice Chat with this Guest",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\"></font>",
|
||||
"copy-this-url": "Copy this URL into a \"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",
|
||||
"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": "1080p (hi-def)",
|
||||
"balanced": "720p (balanced)",
|
||||
"smooth-cool": "360p (smooth)",
|
||||
"select-audio-source": " Audio Source(s) ",
|
||||
"no-audio": "No Audio",
|
||||
"select-output-source": " Audio Output Destination: ",
|
||||
"remote-screenshare-obs": "Remote Screenshare",
|
||||
"note-share-audio": "\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<video id=\"screenshare\" autoplay=\"true\" muted=\"true\" loop=\"\" src=\"./images/screenshare.webm\"></video>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t",
|
||||
"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",
|
||||
"share-website-iframe": "Share Website",
|
||||
"run-a-speed-test": "Run a Speed Test",
|
||||
"read-the-guides": "Browse the Guides",
|
||||
"info-blob": "",
|
||||
"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> Click Here for a quick overview and help\n\t\t\t\t\t",
|
||||
"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",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in studio software to capture the group video mix",
|
||||
"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",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"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>",
|
||||
"disconnect-guest": "Hangup",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></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",
|
||||
"open-in-new-tab": "Open in new Tab",
|
||||
"copy-to-clipboard": "Copy to Clipboard",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Available Languages:",
|
||||
"add-more-here": "Add More Here!"
|
||||
},
|
||||
"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",
|
||||
"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-chat-message-to-send-here": "Enter chat message to send here"
|
||||
}
|
||||
}
|
||||
192
translations/cs.json
Normal file
@@ -0,0 +1,192 @@
|
||||
{
|
||||
"titles": {
|
||||
"toggle-the-chat": "Vypnout/zapnout chat",
|
||||
"mute-the-speaker": "Vypnout mikrofon mluvčího",
|
||||
"mute-the-mic": "Vypnout mikrofon",
|
||||
"disable-the-camera": "Vypnout kameru",
|
||||
"settings": "Nastavení",
|
||||
"hangup-the-call": "Zavěsit hovor",
|
||||
"show-help-info": "Zobrazit menu pomoci",
|
||||
"language-options": "Jazyková nastavení",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Podržte Ctrl (command), abyste vybrali více najednou",
|
||||
"ideal-for-1080p60-gaming-if-your-computer-and-upload-are-up-for-it": "Ideální pro 1080p60 gaming, pokud vám na to vystačí prostředky počítače",
|
||||
"better-video-compression-and-quality-at-the-cost-of-increased-cpu-encoding-load": "Lepší komprese videa a kvalita za cenu vyšší zátěže procesoru",
|
||||
"disable-digital-audio-effects-and-increase-audio-bitrate": "Zakázat digitální zvukové efekty a zvýšit přenosovou rychlost zvuku",
|
||||
"the-guest-will-not-have-a-choice-over-audio-options": "Host nebude mít na výběr z možností zvuku",
|
||||
"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": "Podržte CTRL a kolečko myši pro vzdálené přiblížení a oddálení kompatibilních video streamů",
|
||||
"add-a-password-to-make-the-stream-inaccessible-to-those-without-the-password": "Přidejte heslo, aby nebyl stream přístupný pro ty, kteří nemají heslo",
|
||||
"add-the-guest-to-a-group-chat-room-it-will-be-created-automatically-if-needed-": "Přidejte hosta do skupinové chatovací místnosti; v případě potřeby se vytvoří automaticky.",
|
||||
"customize-the-room-settings-for-this-guest": "Upravte nastavení místnosti pro tohoto hosta",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Podržením klávesy CTRL (nebo CMD) vyberte více souborů",
|
||||
"enter-an-https-url": "Zadejte URL s HTTPS",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Přidejte toto video k jakémukoliv cílovému rozhraní '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Přesměrujte uživatele na jiný room. Uživatel se může kdykoliv vrátit.",
|
||||
"start-recording-this-stream-experimental-views": "Začít nahrávat tento stream. *experimentální*'",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Odpojit tohoto uživatele. Uživatel se může kdykoliv připojit zpět.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Změnit toto audio ve všech cílových '&scene' pohledech.",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Vzdáleně zlumit toto audio ve všech cílových '&scene' pohledech.",
|
||||
"disable-video-preview": "Vypnout náhled videa",
|
||||
"low-quality-preview": "Náhled videa v nízké kvalitě",
|
||||
"high-quality-preview": "Náhled videa ve vysoké kvalitě",
|
||||
"send-direct-message": "Poslat přímou zprávu",
|
||||
"advanced-settings-and-remote-control": "Pokročilá nastavení a vzálené ovládání",
|
||||
"toggle-voice-chat-with-this-guest": "Vypnout/zapnout voice chat tohoto hosta ",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"copy-this-url": "Zkopírujte tuhle URL do OBS \"Browser Source\"",
|
||||
"you-are-in-the-control-center": "Jsi v administraci místnosti",
|
||||
"joining-room": "Připojujete se",
|
||||
"add-group-chat": "Přidat skupinový chat OBS",
|
||||
"rooms-allow-for": "Místnosti umožnůjí jednoduchý skupinový chat a pokročilou správu více streamů zároveň.",
|
||||
"room-name": "Jméno místnost",
|
||||
"password-input-field": "Heslo",
|
||||
"enter-the-rooms-control": "Vstoupit do administrace místnosti",
|
||||
"show-tips": "Zobrazit tipy..",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Poznámka:</i></u>\n\t\t\t\t<li>Kdokoliv se může připojit, když zná jméno místnosti</li>\n\t\t\t\t<li>Není doporučeno mít v místnosti víc než 4 lidi kvůli náročnosti na Váš počítač, ale za zkoušku nic nedáte.</li>\n\t\t\t\t<li>iOS zařízení jsou omezena pouze na dva účastníky. Toto omezení je způsobeno Applem.</li>\n\t\t\t\t<li> \"Nahrávat\" je nová a EXPERIMENTÁLNÍ funkce.</li>\n\t\t\t\t<li>Musíte \"Přidat\" zdroj video do \"Skupinová scéna\" aby se tu zobrazil.</li>\n\t\t\t\t<li>Tady je nové \"vylepšený fullscreen\" tlačítko přidané pro hostitele.</li>\n\t\t\t\t",
|
||||
"back": "Zpět",
|
||||
"add-your-camera": "Přidat kameru do OBS",
|
||||
"ask-for-permissions": "Allow Access to Camera/Microphone",
|
||||
"waiting-for-camera": "Čekám na načtení kamery",
|
||||
"video-source": "Video zdroj",
|
||||
"max-resolution": "MAX rozlišení",
|
||||
"balanced": "Vyrovnaný",
|
||||
"smooth-cool": "Super a Cool",
|
||||
"select-audio-source": "Zvolit zdroj Audia",
|
||||
"no-audio": "Žádné Audio",
|
||||
"select-output-source": " Audio výstup: \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "Vzdálené sdílení obrazovky do OBS",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>poznámka</b>: Nezapomeňte zakliknout \"Sdílet audio\" v Chromu.<br>(Firefox nepodporuje sdílení zvuku.)",
|
||||
"select-screen-to-share": "VYBRAT OBRAZOVKU KE SDÍLENÍ",
|
||||
"audio-sources": "Audio zdroje",
|
||||
"create-reusable-invite": "Vytvořit pozvánku na více použití",
|
||||
"here-you-can-pre-generate": "Zde můžete generovat linky do OBS i pozvánky na více použití.",
|
||||
"generate-invite-link": "GENEROVAT POZVÁNKU",
|
||||
"advanced-paramaters": "Pokročilé nastavení",
|
||||
"unlock-video-bitrate": "Rozvolnit limit Video Bitrate (20mbps)",
|
||||
"force-vp9-video-codec": "Vynutit VP9 Video Codec (méně artefaktů)",
|
||||
"enable-stereo-and-pro": "Povolit Stereo a Pro HD Audio",
|
||||
"video-resolution": "Rozlišení videa: ",
|
||||
"hide-mic-selection": "Vynutit výchozí mikrofon",
|
||||
"hide-screen-share": "Nezobrazovat možnost sdílet obrazovku",
|
||||
"allow-remote-control": "Vzdálené ovládání přiblížení (android)",
|
||||
"add-a-password-to-stream": " Přidat heslo:",
|
||||
"add-the-guest-to-a-room": " Přidat hosta do místosti:",
|
||||
"invite-group-chat-type": "Člen této místnosti může:",
|
||||
"can-see-and-hear": "Slyšet a vidět ostatní členy",
|
||||
"can-hear-only": "Pouze slyšet ostatní členy",
|
||||
"cant-see-or-hear": "Neslyšet ani nevidět ostatní členy",
|
||||
"share-local-video-file": "Streamovat mediální soubor",
|
||||
"share-website-iframe": "Sdílet webovou stránku",
|
||||
"run-a-speed-test": "Zapnout speed test",
|
||||
"read-the-guides": "Procházejte průvodce",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Co je OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b>zdarma</b>; bez stahování; žádné osobní data; bez přihlašování</li>\n\t\t\t\t\t\t<li>Sdílejte video ze smartphonu, laptopu, počítače či svých kamarádů přímo do OBSka</li>\n\t\t\t\t\t\t<li>Používáme nejmodernější Peer-to-Peer forwarding technologii, která zaručuje bezpečnost a minimální lag</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demo</a> </li>",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"forward-to-room": "Transfer",
|
||||
"record": "Nahrávat",
|
||||
"disconnect-guest": "Hangup",
|
||||
"mute": "Ztišit",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Chatovat",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Pokročilé",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "Otevřít v nové záložce",
|
||||
"copy-to-clipboard": "Kopírovat do schránky",
|
||||
"click-for-quick-room-overview": "❔ Klidni zde pro krátký přehled o funkcích",
|
||||
"push-to-talk-enable": "🔊 Povolit administrátorovi Push-to-Talk mód",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"more-than-four-can-join": "Tyto čtyři sloty pro hosty slouží pouze k předvedení. K místnosti se mohou skutečně připojit více než čtyři hosté.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tVítejte na OBS.Ninja! můžete ihned poslat zprávy ostatním členům této místnosti\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tJména členů bude jedna z budoucích funkcí OBS.ninja.\n\t\t\t\t",
|
||||
"send-chat": "Poslat",
|
||||
"available-languages": "Dostupné jazyky:",
|
||||
"add-more-here": "Přidat další!",
|
||||
"waiting-for-camera-to-load": "Čekám na načtení kamery",
|
||||
"start": "START",
|
||||
"share-your-mic": "Sdílet mikrofon",
|
||||
"share-your-camera": "Sdílet kameru",
|
||||
"share-your-screen": "Sdílet obrazovku",
|
||||
"join-room-with-mic": "Připojit se s mikrofonem",
|
||||
"share-screen-with-room": "Sdílet obrazovku s místností",
|
||||
"join-room-with-camera": "Připojit se s kamerou",
|
||||
"click-start-to-join": "Kliknutím na start se připojíte",
|
||||
"guests-only-see-director": "Guests can only see the Director's Video",
|
||||
"default-codec-select": "Preferred Video Codec: ",
|
||||
"obfuscate_url": "Obfuscate the Invite URL",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings"
|
||||
},
|
||||
"placeholders": {
|
||||
"join-by-room-name-here": "Připojit se s názvem místnosti zde",
|
||||
"enter-a-room-name-here": "Sem zadejte název místnosti",
|
||||
"optional-room-password-here": "Volitelné heslo místnosti zde",
|
||||
"give-this-media-source-a-name-optional-": "Pojmenujte tento zdroj médií (volitelné)",
|
||||
"add-an-optional-password": "Přidat volitelné heslo",
|
||||
"enter-room-name-here": "Sem zadejte název místnosti",
|
||||
"enter-chat-message-to-send-here": "Sem zadejte vaši zprávu"
|
||||
}
|
||||
}
|
||||
@@ -1,68 +1,192 @@
|
||||
{
|
||||
"GO": "LOS",
|
||||
"add-group-chat": "Gruppenchat hinzufügen",
|
||||
"add-to-group": "Zur Gruppen-Szene hinzfügen",
|
||||
"add-your-camera": "Kamera hinzufügen",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Weitere Infos:</i></u>\n\t\t\t\t<li>Räume können von allen betreten werden, die den Raumnamen wissen. Vermeiden Sie daher zu einfache Namen.</li>\n\t\t\t\t<li>Je nach Hardwareausstattung können mehr als vier Teilnehmende in einem Raum zu Performance-Problemen führen.</li>\n\t\t\t\t<li>Aufgrund einer Hardware-Einschränkung können iOS-Devices Video nur mit dem Regisseur/Director teilen.</li>\n\t\t\t\t<li>Bitte betrachten Sie die \"Aufnehmen\"-Funktion als neu und experimentell. Sie sollten sie vermutlich nicht in Produktivumgebungen einsetzen.</li>\n\t\t\t\t<li>Damit ein Video-Feed in einer Gruppen-Szene erscheint, müssen Sie ihn zunächst dort hinzufügen.</li>\n\t\t\t\t<li>Der Gäste-View enthält einen neuen \"fortgeschrittenen Fullscreen\"-Button.</li>\n\t\t\t\t",
|
||||
"advanced-paramaters": "Weitere Einstellungen",
|
||||
"audio-sources": "Audioquellen",
|
||||
"back": "Zurück",
|
||||
"balanced": "Ausgeglichen",
|
||||
"copy-this-url": "Teilbare Links für dieses Video",
|
||||
"copy-to-clipboard": "In die Zwischenablage kopieren",
|
||||
"create-reusable-invite": "Wiederverwendbare Einladung erstellen",
|
||||
"enable-stereo-and-pro": "Stereo und Pro HD Audio einschalten",
|
||||
"enter-the-rooms-control": "Control Center für diesen Raum betreten",
|
||||
"force-vp9-video-codec": "VP9 Video- Codec verwenden (weniger Störungen)",
|
||||
"generate-invite-link": "EINLADUNGS-LINK ERSTELLEN",
|
||||
"here-you-can-pre-generate": "Erzeugen Sie einen wiederwendbaren Empfangs-Link und die zugehörigen Einladungslinks für Gäste.",
|
||||
"high-security-mode": "High Security Modus",
|
||||
"info-blob": "",
|
||||
"joining-room": "Sie betreten Raum",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja",
|
||||
"max-resolution": "Höchste Auflösung",
|
||||
"mute": "Stummschalten",
|
||||
"no-audio": "Kein Audio",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>note</b>: Vergessen Sie nicht, in Chrome \"Audio teilen\" zu klicken.<br>(Firefox unterstütz das Teilen von Audio nicht.)",
|
||||
"open-in-new-tab": "In neuem Tab öffnen.",
|
||||
"record": "Aufnehmen",
|
||||
"remote-control-for-obs": "Fernsteuerung",
|
||||
"remote-screenshare-obs": "Bildschirm teilen",
|
||||
"room-name": "Raum",
|
||||
"rooms-allow-for": "Räume erlauben einfachen Gruppen-Chat und die gleichzeitige Verwaltung verschiedener Streams.",
|
||||
"select-audio-source": "Audio-Quellen auswählen",
|
||||
"select-audio-video": "Wählen Sie die Audio-/Videoquelle unten aus.",
|
||||
"select-screen-to-share": "ZU TEILENDEN BILDSCHIRM AUSWÄHLEN",
|
||||
"show-tips": "Ich möchte Tipps..",
|
||||
"smooth-cool": "Smooth und Cool",
|
||||
"unlock-video-bitrate": "Video-Bitrate auf Maximum (20mbps)",
|
||||
"video-source": "Videoquelle",
|
||||
"volume": "Lautstärke",
|
||||
"you-are-in-the-control-center": "Sie befinden sich im Control-Center dieses Raums",
|
||||
"waiting-for-camera": "Kamera lädt. Bitte warten.",
|
||||
"video-resolution": "Video-Auflösung: ",
|
||||
"hide-screen-share": "Option zum Bildschirm teilen nicht anzeigen",
|
||||
"allow-remote-control": "Gast-Kamera zoomen (Android)",
|
||||
"add-the-guest-to-a-room": " Gast zu diesem Raum hinzufügen:",
|
||||
"invite-group-chat-type": "Dieser Gast..",
|
||||
"can-see-and-hear": "..kann den Gruppen-Chat sehen und hören",
|
||||
"can-hear-only": "..kann den Gruppen-Chat nur hören",
|
||||
"cant-see-or-hear": "..kann den Gruppen-chat weder hören noch sehen",
|
||||
"password-input-field": "Password",
|
||||
"select-output-source": " Audio Output Destination: \n\t\t\t\t\t",
|
||||
"add-a-password-to-stream": " Add a password:",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Available Languages:",
|
||||
"add-more-here": "Add More Here!",
|
||||
"invite-users-to-join": "Invites users to join the group and broadcast their feed to it. These users will see every feed in the room.",
|
||||
"link-to-invite-camera": "Link to invite users to broadcast their feeds to the group. These users will not see or hear any feed from the group.",
|
||||
"this-is-obs-browser-source-link": "This is an OBS Browser Source link that is empty by default. Videos in the room can be manually added to this scene.",
|
||||
"this-is-obs-browser-souce-link-auto": "Also an OBS Browser Source link. All guest videos in this group chat room will automatically be added into this scene.",
|
||||
"click-for-quick-room-overview": "❔ Click Here for a quick overview and help",
|
||||
"push-to-talk-enable": "🔊 Enable Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"guest-will-appaer-here-on-join": "(A video will appear here when a guest joins)",
|
||||
"SOLO-LINK": "SOLO LINK for OBS:"
|
||||
"titles": {
|
||||
"toggle-the-chat": "Chat an/aus",
|
||||
"mute-the-speaker": "Audio stumm",
|
||||
"mute-the-mic": "Mikrofon stumm",
|
||||
"disable-the-camera": "Kamera aus",
|
||||
"settings": "Einstellungen",
|
||||
"hangup-the-call": "Beenden",
|
||||
"show-help-info": "Hilfe anzeigen",
|
||||
"language-options": "Sprachoptionen",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "Tipp: Für Mehrfachauswahl halten Sie CTRL (Mac: command) gedrückt",
|
||||
"ideal-for-1080p60-gaming-if-your-computer-and-upload-are-up-for-it": "Ideal für Gaming mit 1080p60, falls Ihr Computer und Anschluss ausreichen",
|
||||
"better-video-compression-and-quality-at-the-cost-of-increased-cpu-encoding-load": "Höhere Videokompression und bessere Bildqualität, benötigt mehr CPU",
|
||||
"disable-digital-audio-effects-and-increase-audio-bitrate": "Audiofilter aus, höhere Audiobitrate",
|
||||
"the-guest-will-not-have-a-choice-over-audio-options": "Gäste können Audio-Optionen nicht ändern",
|
||||
"the-guest-will-only-be-able-to-select-their-webcam-as-an-option": "Gäste können nur ihre Webcam auswählen",
|
||||
"hold-ctrl-and-the-mouse-wheel-to-zoom-in-and-out-remotely-of-compatible-video-streams": "Drücken Sie CTRL (Mac: command) während sie das Mausrad drehen, um kompatible Kameras ein/auszuzoomen",
|
||||
"add-a-password-to-make-the-stream-inaccessible-to-those-without-the-password": "Passwort hinzufügen. Dem Stream kann ohne Passwort nicht beigetreten werden",
|
||||
"add-the-guest-to-a-group-chat-room-it-will-be-created-automatically-if-needed-": "Gast zu Gruppenraum hinzufügen. Falls nötig, wird der Raum automatisch erzeugt.",
|
||||
"customize-the-room-settings-for-this-guest": "Raum-Einstellungen für diesen Gast anpassen",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Drücken Sie CTRL (Mac: command), um mehrere Dateien auszuwählen",
|
||||
"enter-an-https-url": "Geben Sie eine URL mit HTTPS ein",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Fügen Sie dieses Video zu einer Remote-Szene '&scene=1' hinzu",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Transferieren Sie den Gast in einen anderen Raum. Gäste können immer hierher zurückkehren.",
|
||||
"start-recording-this-stream-experimental-views": "Diesen Stream aufnehmen. *experimentell*",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Verbindung des Gastes abbrechen. Gäste können jederzeit wieder beitreten.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Laustärke in allen '&scene'-Szenen ändern",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Audio mute in allen remote '&scene'-Szenen",
|
||||
"disable-video-preview": "Videovorschau aus",
|
||||
"low-quality-preview": "Videovorschau (niedrige Qualität)",
|
||||
"high-quality-preview": "Videovorschau (hohe Qualität)",
|
||||
"send-direct-message": "Private Message schicken",
|
||||
"advanced-settings-and-remote-control": "Erweiterte Einstellungen / Remote-Einstellungen",
|
||||
"toggle-voice-chat-with-this-guest": "Sprach-Chat mit Gast ein/aus",
|
||||
"join-by-room-name-here": "Geben Sie einen Raumnamen ein",
|
||||
"join-room": "Raum betreten",
|
||||
"share-a-screen-with-others": "Bildschirm teilen",
|
||||
"alert-the-host-you-want-to-speak": "Teilen Sie dem Gastgeber mit, dass Sie sprechen möchten",
|
||||
"record-your-stream-to-disk": "Eigenen Stream lokal aufnehmen",
|
||||
"cancel-the-director-s-video-audio": "Gastgeber-Audio/Video aus",
|
||||
"submit-any-error-logs": "Fehlerprotokoll schicken",
|
||||
"add-group-chat-to-obs": "Video-Gruppenchat zu OBS hinzufügen",
|
||||
"for-large-group-rooms-this-option-can-reduce-the-load-on-remote-guests-substantially": "Bei größeren Gruppen kann diese Option die Systemlast bei den Gästen deutlich reduzieren",
|
||||
"which-video-codec-would-you-want-used-by-default-": "Welchen Codec soll standardmäßig verwendet werden?",
|
||||
"you-ll-enter-as-the-room-s-director": "Sie werden dem Gruppenchat als Gastgeber beitreten",
|
||||
"add-your-camera-to-obs": "Kamera zu OBS hinzufügen",
|
||||
"remote-screenshare-into-obs": "Bildschirm zu OBS hinzufügen",
|
||||
"create-reusable-invite": "Wiederverwendbare Einladung erzeugen",
|
||||
"encode-the-url-so-that-it-s-harder-for-a-guest-to-modify-the-settings-": "URL verschleiern. Das macht es für Gäste schwieriger, Einstellungen zu ändern.",
|
||||
"more-options": "Weitere Einstelllungen",
|
||||
"youtube-video-demoing-how-to-do-this": "Erklär-Video",
|
||||
"invite-a-guest-or-camera-source-to-publish-into-the-group-room": "Gast oder Kamera zum Video-Gruppenchat einladen",
|
||||
"if-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "Gast kann andere Gäste im Gruppenchat weder sehen noch hören.",
|
||||
"use-this-link-in-the-obs-browser-source-to-capture-the-video-or-audio": "Verwenden Sie diesen Link in OBS (Quelle: Browser), um das Video und/oder Audio hinzuzufügen.",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "Video muss manuell zu Szenen hinzugefügt werden.",
|
||||
"disables-echo-cancellation-and-improves-audio-quality": "Echo-Unterdrückung aus. Verbessert die Audioqualität",
|
||||
"audio-only-sources-are-visually-hidden-from-scenes": "Audioquellen ohne Video werden in der Szene nicht angezeigt",
|
||||
"guest-will-be-prompted-to-enter-a-display-name": "Gäste werden beim Betreten des Videochat gebeten, einen Namen einzugeben",
|
||||
"display-names-will-be-shown-in-the-bottom-left-corner-of-videos": "Namen werden in der linken unteren Ecke des Videos angezeigt",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "1080p60 anfordern, falls das Gast-System dies unterstützt (Standard ist 720p60)",
|
||||
"the-default-microphone-will-be-pre-selected-for-the-guest": "Standard-Mikrofon wird ausgewählt",
|
||||
"the-default-camera-device-will-selected-automatically": "Standard-Kamera wird ausgewählt",
|
||||
"the-guest-won-t-have-access-to-changing-camera-settings-or-screenshare": "Gast kann weder Kamera-Einsstellungen ändern, noch den Bildschirm teilen",
|
||||
"the-guest-will-not-see-their-own-self-preview-after-joining": "Eigene Gast-Videovorschau nach Betreten des Videochat aus",
|
||||
"guests-will-have-an-option-to-poke-the-director-by-pressing-a-button": "Gäste können sich über einen Button beim Gastgeber bemerkbar machen",
|
||||
"add-an-audio-compressor-to-the-guest-s-microphone": "Audiokompression",
|
||||
"add-an-equalizer-to-the-guest-s-microphone-that-the-director-can-control": "Equalizer an/aus (wird vom Gastgeber eingestellt)",
|
||||
"the-guest-can-only-see-the-director-s-video-if-provided": "Gast kann nur Video vom Gastgeber sehen, falls dieser Video zurückschickt",
|
||||
"the-guest-s-microphone-will-be-muted-on-joining-they-can-unmute-themselves-": "Gast-Mikrofon wird beim Betreten des Videochat stummgeschaltet. Gäste können die Stummschaltung aufheben.",
|
||||
"have-the-guest-join-muted-so-only-the-director-can-unmute-the-guest-": "Gast-Mikrofon wird beim Betreten des Videochat stummgeschaltet. Nur der Gastgeber kann die Stummschaltung aufheben.",
|
||||
"make-the-invite-url-encoded-so-parameters-are-harder-to-tinker-with-by-guests": "Einladungs-Link verschleiern, um dem Spieltrieb der Gäste etwas Einhalt zu gebieten.",
|
||||
"move-the-user-to-another-room-controlled-by-another-director": "Gast in einen anderen Videochat transferieren, der von einem anderen Gastgeber kontrolliert wird",
|
||||
"send-a-direct-message-to-this-user-": "Private Nachricht schicken.",
|
||||
"remotely-change-the-volume-of-this-guest": "Gast-Lautstärke remote ändern",
|
||||
"mute-this-guest-everywhere": "Gast überall stummschalten",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Remote-Stream lokal (auf diesem Rechner) aufnehmen *experimentell*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "Remote-Stream remote (beim Gast) aufnehmen *experimentell*",
|
||||
"shift-this-video-down-in-order": "Anzeigpriorität/-reihenfolge für dieses Video nach unten verschieben",
|
||||
"current-index-order-of-this-video": "Aktuelle Anzeigepriorität",
|
||||
"shift-this-video-up-in-order": "Anzeigepriorität/-reihenfolge für dieses Video nach oben verschieben",
|
||||
"remote-audio-settings": "Remote Audio-Einstellungen",
|
||||
"advanced-video-settings": "Erweiterte Video-Einstellungen",
|
||||
"activate-or-reload-this-video-device-": "Kamera aktivieren oder neu laden."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja",
|
||||
"copy-this-url": "Link für dieses Video teilen",
|
||||
"you-are-in-the-control-center": "Control-Center für Video-Gruppenchat",
|
||||
"joining-room": "Sie betreten Raum",
|
||||
"add-group-chat": "Gruppenchat hinzufügen",
|
||||
"rooms-allow-for": "Videochat-Räume erlauben einfachen Gruppen-Chat und die Verwaltung verschiedener Streams.",
|
||||
"room-name": "Raum",
|
||||
"password-input-field": "Passwort",
|
||||
"enter-the-rooms-control": "Control Center für diesen Raum betreten",
|
||||
"show-tips": "Ich möchte Tipps..",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Weitere Infos:</i></u>\n\t\t\t\t<li>Räume können von allen betreten werden, die den Raumnamen wissen. Vermeiden Sie daher zu einfache Namen.</li>\n\t\t\t\t<li>Je nach Hardwareausstattung können mehr als vier Teilnehmende in einem Raum zu Performance-Problemen führen.</li>\n\t\t\t\t<li>Aufgrund einer Hardware-Einschränkung können iOS-Devices Video nur mit dem Regisseur/Director teilen.</li>\n\t\t\t\t<li>Bitte betrachten Sie die \"Aufnehmen\"-Funktion als neu und experimentell. Sie sollten sie vermutlich nicht in Produktivumgebungen einsetzen.</li>\n\t\t\t\t<li>Damit ein Video-Feed in einer Gruppen-Szene erscheint, müssen Sie ihn zunächst dort hinzufügen.</li>\n\t\t\t\t<li>Der Gäste-View enthält einen neuen \"fortgeschrittenen Fullscreen\"-Button.</li>\n\t\t\t\t",
|
||||
"back": "Zurück",
|
||||
"add-your-camera": "Kamera hinzufügen",
|
||||
"ask-for-permissions": "Zugriff für Kamera/Mikrofon erlauben",
|
||||
"waiting-for-camera": "Kamera lädt. Bitte warten.",
|
||||
"video-source": "Videoquelle",
|
||||
"max-resolution": "Höchste Auflösung",
|
||||
"balanced": "Ausgeglichen",
|
||||
"smooth-cool": "Smooth und Cool",
|
||||
"select-audio-source": "Audio-Quellen auswählen",
|
||||
"no-audio": "Kein Audio",
|
||||
"select-output-source": " Ausgang für Audio: \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "Bildschirm teilen",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>note</b>: Vergessen Sie nicht, in Chrome \"Audio teilen\" zu klicken.<br>(Firefox unterstütz das Teilen von Audio nicht.)",
|
||||
"select-screen-to-share": "ZU TEILENDEN BILDSCHIRM AUSWÄHLEN",
|
||||
"audio-sources": "Audioquellen",
|
||||
"create-reusable-invite": "Wiederverwendbare Einladung erstellen",
|
||||
"here-you-can-pre-generate": "Erzeugen Sie einen wiederwendbaren Empfangs-Link und die zugehörigen Einladungslinks für Gäste.",
|
||||
"generate-invite-link": "EINLADUNGS-LINK ERSTELLEN",
|
||||
"advanced-paramaters": "Weitere Einstellungen",
|
||||
"unlock-video-bitrate": "Video-Bitrate auf Maximum (20mbps)",
|
||||
"force-vp9-video-codec": "VP9 Video- Codec verwenden (weniger Störungen)",
|
||||
"enable-stereo-and-pro": "Stereo und Pro HD Audio einschalten",
|
||||
"video-resolution": "Video-Auflösung: ",
|
||||
"hide-mic-selection": "Force Default Microphone",
|
||||
"hide-screen-share": "Option zum Bildschirm teilen nicht anzeigen",
|
||||
"allow-remote-control": "Gast-Kamera zoomen (Android)",
|
||||
"add-a-password-to-stream": " Passwort hinzufügen:",
|
||||
"add-the-guest-to-a-room": " Gast zu diesem Raum hinzufügen:",
|
||||
"invite-group-chat-type": "Dieser Gast..",
|
||||
"can-see-and-hear": "..kann den Gruppen-Chat sehen und hören",
|
||||
"can-hear-only": "..kann den Gruppen-Chat nur hören",
|
||||
"cant-see-or-hear": "..kann den Gruppen-chat weder hören noch sehen",
|
||||
"share-local-video-file": "Mediendatei streamen",
|
||||
"share-website-iframe": "Website teilen",
|
||||
"run-a-speed-test": "Speed-Test",
|
||||
"read-the-guides": "Guides",
|
||||
"info-blob": "",
|
||||
"add-to-scene": "Zur Szene hinzufügen",
|
||||
"forward-to-room": "Transferieren",
|
||||
"record": "Aufnehmen",
|
||||
"disconnect-guest": "Auflegen",
|
||||
"mute": "Stummschalten",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Erweitert",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "In neuem Tab öffnen.",
|
||||
"copy-to-clipboard": "In die Zwischenablage kopieren",
|
||||
"click-for-quick-room-overview": "❔ Erste Schritte und Hilfe",
|
||||
"push-to-talk-enable": "🔊 Audio und Video mit Gästen teilen (Push-to-Talk Mode)",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWillkommen zu OBS.Ninja! Schicken Sie anderen Gästen eine Message.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Abschicken",
|
||||
"available-languages": "Verfügbare Sprachen:",
|
||||
"add-more-here": "Weitere hinzufügen",
|
||||
"waiting-for-camera-to-load": "waiting-for-camera-to-load",
|
||||
"start": "START",
|
||||
"share-your-mic": "Mikrofon teilen",
|
||||
"share-your-camera": "Kamera teilen",
|
||||
"share-your-screen": "Bildschirm teilen",
|
||||
"join-room-with-mic": "Raum ohne Video betreten (nur mit Mikrofon)",
|
||||
"share-screen-with-room": "Bildschirm mit Raum teilen",
|
||||
"join-room-with-camera": "Raum mit Video betreten",
|
||||
"click-start-to-join": "Start klicken",
|
||||
"guests-only-see-director": "Gäste können nur das Gastgeber-Video sehen",
|
||||
"default-codec-select": "Bevorzugter Video-Codec: ",
|
||||
"obfuscate_url": "Einladungs-Link verschleiern",
|
||||
"hide-the-links": " LINKS (Einladungslinks & Szenen-Links)",
|
||||
"invite-users-to-join": "Gäste können über diesen Link dem Raum beitreten",
|
||||
"this-is-obs-browser-source-link": "In OBS verwenden, um den Gruppen-Videochat hinzuzufügen",
|
||||
"mute-scene": "in Szene stummschalten",
|
||||
"mute-guest": "Gast stummschalten",
|
||||
"record-local": " lokal aufnehmen",
|
||||
"record-remote": " remote aufnehmen",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio-Einstellungen"
|
||||
},
|
||||
"placeholders": {
|
||||
"join-by-room-name-here": "Raum über Namen betreten",
|
||||
"enter-a-room-name-here": "Raumname eingeben",
|
||||
"optional-room-password-here": "Raum-Passwort (optional)",
|
||||
"give-this-media-source-a-name-optional-": "Namen für Quelle angeben (optional)",
|
||||
"add-an-optional-password": "Passwort hinzufügen (optional)",
|
||||
"enter-room-name-here": "Raumnamen eingeben",
|
||||
"enter-chat-message-to-send-here": "Message"
|
||||
}
|
||||
}
|
||||
50
translations/default.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"GO": "GO",
|
||||
"copy-this-url": "Copy this URL into an OBS \"Browser Source\"",
|
||||
"you-are-in-the-control-center": "You are in the room's control center",
|
||||
"joining-room": "You are joining room",
|
||||
"add-group-chat": "Add Group Chat to OBS",
|
||||
"rooms-allow-for": "Rooms allow for simplified group-chat and the advanced management of multiple streams at once.",
|
||||
"room-name": "Room Name",
|
||||
"enter-the-rooms-control": "Enter the Room's Control Center",
|
||||
"show-tips": "Show me some tips..",
|
||||
"added-notes": "\n<u><i>Added Notes:</i></u>\n<li>Anyone can enter a room if they know the name, so keep it unique</li>\n<li>Invite only guests to the room you trust.</li>\n<li>iOS devices will share just their audio with other guests; this is mainly a hardware limitation</li>\n<li>The \"Recording\" option is considered experimental.</li>\n",
|
||||
"back": "Back",
|
||||
"add-your-camera": "Add your Camera to OBS",
|
||||
"waiting-for-camera": "Waiting for Camera to Load",
|
||||
"video-source": "Video source",
|
||||
"max-resolution": "1080p (hi-def)",
|
||||
"balanced": "720p (balanced)",
|
||||
"smooth-cool": "360p (smooth)",
|
||||
"select-audio-source": "Select Audio Source",
|
||||
"no-audio": "No Audio",
|
||||
"remote-screenshare-obs": "Remote Screenshare into OBS",
|
||||
"note-share-audio": "\n<b>note</b>: Do not forget to click \"Share audio\" in Chrome.<br>(Firefox does not support audio sharing.)",
|
||||
"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 (less artifacting)",
|
||||
"enable-stereo-and-pro": "Enable Stereo and Pro HD Audio",
|
||||
"video-resolution": "Video Resolution: ",
|
||||
"high-security-mode": "High Security Mode",
|
||||
"hide-screen-share": "Hide Screenshare Option",
|
||||
"allow-remote-control": "Remote Control Camera Zoom (android)",
|
||||
"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",
|
||||
"info-blob": "\n<h2>What is OBS.Ninja</h2><br>\n<li>100% <b>free</b>; no downloads; no personal data collection; no sign-in</li>\n<li>Bring video from your smartphone, computer, or friends directly into your OBS video stream</li>\n<li>We use cutting edge Peer-to-Peer forwarding technology that offers privacy and ultra-low latency</li>\n<br>\n<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demoing it here</a> </li>\n<br>\n<i><font style=\"color:red\">Known issues:</font></i><br>\n<li><i class=\"fa fa-apple\" aria-hidden=\"true\"></i> <a href=\"https://github.com/steveseguin/obsninja/wiki/FAQ#mac-os\">MacOS users</a> need to use OBS v23 or resort to <a href=\"https://github.com/steveseguin/electroncapture\">Window Capturing</a> a browser with OBS v25</li>\n<li>Some users will have <a href=\"https://github.com/steveseguin/obsninja/wiki/FAQ#video-is-pixelated\">\"pixelation\" problems</a> with videos. Adding <b>&codec=vp9</b> to the OBS links will often correct it.</li>\n<br>\n",
|
||||
"remote-control-for-obs": "Remote Control for OBS",
|
||||
"add-to-group": "Add to Group Scene",
|
||||
"mute": "Mute",
|
||||
"record": "Record",
|
||||
"volume": "Volume",
|
||||
"open-in-new-tab": "Open in new Tab",
|
||||
"copy-to-clipboard": "Copy to Clipboard"
|
||||
}
|
||||
@@ -1,68 +1,172 @@
|
||||
{
|
||||
"GO": "GO",
|
||||
"add-group-chat": "Add Group Chat to OBS",
|
||||
"add-to-group": "Add to Group Scene",
|
||||
"add-your-camera": "Add your Camera to OBS",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Added Notes:</i></u>\n\t\t\t\t<li>Anyone can enter a room if they know the name, so keep it unique</li>\n\t\t\t\t<li>Having more than four (4) people in a room is not advisable due to performance reasons, but it depends on your hardware.</li>\n\t\t\t\t<li>iOS devices are limited to group sizes of no more than two (2) people. This is a hardware limitation.</li>\n\t\t\t\t<li>The \"Recording\" option is new and is considered experimental.</li>\n\t\t\t\t<li>You must \"Add\" a video feed to the \"Group Scene\" for it to appear there.</li>\n\t\t\t\t<li>There is a new \"enhanced fullscreen\" button added to the Guest's view.</li>\n\t\t\t\t",
|
||||
"advanced-paramaters": "Advanced Parameters",
|
||||
"audio-sources": "Audio Sources",
|
||||
"back": "Back",
|
||||
"balanced": "Balanced",
|
||||
"copy-this-url": "Copy this URL into an OBS \"Browser Source\"",
|
||||
"copy-to-clipboard": "Copy to Clipboard",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"enable-stereo-and-pro": "Enable Stereo and Pro HD Audio",
|
||||
"enter-the-rooms-control": "Enter the Room's Control Center",
|
||||
"force-vp9-video-codec": "Force VP9 Video Codec (less artifacting)",
|
||||
"generate-invite-link": "GENERATE THE INVITE LINK",
|
||||
"here-you-can-pre-generate": "Here you can pre-generate a reusable Browser Source link and a related guest invite link.",
|
||||
"high-security-mode": "High Security Mode",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>What is OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b>free</b>; no downloads; no personal data collection; no sign-in</li>\n\t\t\t\t\t\t<li>Bring video from your smartphone, laptop, computer, or from your friends directly into your OBS video stream</li>\n\t\t\t\t\t\t<li>We use cutting edge Peer-to-Peer forwarding technology that offers privacy and ultra-low latency</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demoing it here</a> </li>\n\t\t\t\t\t\t<li>Code is available here: <i class=\"fa fa-github\" aria-hidden=\"true\"></i> <a href=\"https://github.com/steveseguin/obsninja\">https://github.com/steveseguin/obsninja</a> </li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<i><font style=\"color:red\">Known issues:</font></i><br>\n\n\t\t\t\t\t\t<li><i class=\"fa fa-apple\" aria-hidden=\"true\"></i> MacOS users need to use OBS v23 or resort to <i>Window Capturing</i> a Chrome Browser with OBS v25</li>\n\t\t\t\t\t\t<li>Some users will have \"pixelation\" problems with videos. Please add the URL parameter <b>&codec=vp9</b> to the OBS Links to correct it.</li>\n\t<h3><i>Check out the <a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a> <i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"></i> for help and advanced info. I'm also on <a href=\"https://discord.gg/EksyhGA\">Discord</a> and you can email me at steve@seguin.email</i></h3>\n\t\t\t\t\t",
|
||||
"joining-room": "You are joining room",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"max-resolution": "Max Resolution",
|
||||
"mute": "Mute",
|
||||
"no-audio": "No Audio",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>note</b>: Do not forget to click \"Share audio\" in Chrome.<br>(Firefox does not support audio sharing.)",
|
||||
"open-in-new-tab": "Open in new Tab",
|
||||
"record": "Record",
|
||||
"remote-control-for-obs": "Remote Control for OBS",
|
||||
"remote-screenshare-obs": "Remote Screenshare into OBS",
|
||||
"room-name": "Room Name",
|
||||
"rooms-allow-for": "Rooms allow for simplified group-chat and the advanced management of multiple streams at once.",
|
||||
"select-audio-source": "Select Audio Sources",
|
||||
"select-audio-video": "Select the audio/video source below",
|
||||
"select-screen-to-share": "SELECT SCREEN TO SHARE",
|
||||
"show-tips": "Show me some tips..",
|
||||
"smooth-cool": "Smooth and Cool",
|
||||
"unlock-video-bitrate": "Unlock Video Bitrate (20mbps)",
|
||||
"video-source": "Video source",
|
||||
"volume": "Volume",
|
||||
"you-are-in-the-control-center": "You are in the room's control center",
|
||||
"waiting-for-camera": "Waiting for Camera to Load",
|
||||
"video-resolution": "Video Resolution: ",
|
||||
"hide-screen-share": "Hide Screenshare Option",
|
||||
"allow-remote-control": "Remote Control Camera Zoom (android)",
|
||||
"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",
|
||||
"password-input-field": "Password",
|
||||
"select-output-source": " Audio Output Destination: \n\t\t\t\t\t",
|
||||
"add-a-password-to-stream": " Add a password:",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Available Languages:",
|
||||
"add-more-here": "Add More Here!",
|
||||
"invite-users-to-join": "Invites users to join the group and broadcast their feed to it. These users will see every feed in the room.",
|
||||
"link-to-invite-camera": "Link to invite users to broadcast their feeds to the group. These users will not see or hear any feed from the group.",
|
||||
"this-is-obs-browser-source-link": "This is an OBS Browser Source link that is empty by default. Videos in the room can be manually added to this scene.",
|
||||
"this-is-obs-browser-souce-link-auto": "Also an OBS Browser Source link. All guest videos in this group chat room will automatically be added into this scene.",
|
||||
"click-for-quick-room-overview": "❔ Click Here for a quick overview and help",
|
||||
"push-to-talk-enable": "🔊 Enable Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"guest-will-appaer-here-on-join": "(A video will appear here when a guest joins)",
|
||||
"SOLO-LINK": "SOLO LINK for OBS:"
|
||||
"titles": {
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"toggle-the-chat": "Toggle the Chat",
|
||||
"mute-the-speaker": "Mute the Speaker",
|
||||
"mute-the-mic": "Mute the Mic",
|
||||
"disable-the-camera": "Disable the Camera",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"settings": "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",
|
||||
"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-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Remotely Mute this Audio in all remote '&scene' views",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"disable-video-preview": "Disable Video Preview",
|
||||
"low-quality-preview": "Low-Quality Preview",
|
||||
"high-quality-preview": "High-Quality Preview",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"toggle-voice-chat-with-this-guest": "Toggle Voice Chat with this Guest",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "\n\t\t\t\t\t<font id=\"qos\">O</font>BS.Ninja \n\t\t\t\t",
|
||||
"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",
|
||||
"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>\n\t\t\t\t\t\t\t\t<li><a href=\"https://params.obs.ninja\" style=\"color:black;\"><u>Advanced URL parameters</u></a> are available to customize rooms.</li>\n\t\t\t\t\t\t\t",
|
||||
"back": "Back",
|
||||
"add-your-camera": "Add your Camera to OBS",
|
||||
"ask-for-permissions": "Allow Access to Camera/Microphone",
|
||||
"waiting-for-camera": "Waiting for Camera to Load",
|
||||
"video-source": " Video Source ",
|
||||
"max-resolution": "1080p (hi-def)",
|
||||
"balanced": "720p (balanced)",
|
||||
"smooth-cool": "360p (smooth)",
|
||||
"select-audio-source": " Audio Source(s) ",
|
||||
"no-audio": "No Audio",
|
||||
"select-output-source": " Audio Output Destination: ",
|
||||
"remote-screenshare-obs": "Remote Screenshare into OBS",
|
||||
"note-share-audio": "\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<video id=\"screenshare\" autoplay=\"true\" muted=\"true\" loop=\"\" src=\"./images/screenshare.webm\"></video>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t",
|
||||
"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",
|
||||
"share-website-iframe": "Share Website",
|
||||
"run-a-speed-test": "Run a Speed Test",
|
||||
"read-the-guides": "Browse the Guides",
|
||||
"info-blob": "\n\t\t\t\t\t\t\t<h2>What is OBS.Ninja</h2>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<li>100% \n\t\t\t\t\t\t\t\t<b>free</b>; no downloads; no personal data collection; no sign-in\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>Bring video from your smartphone, computer, or friends directly into your OBS video stream</li>\n\t\t\t\t\t\t\t<li>We use cutting edge Peer-to-Peer forwarding technology that offers privacy and ultra-low latency</li>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t",
|
||||
"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> Click Here for a quick overview and help\n\t\t\t\t\t",
|
||||
"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://github.com/steveseguin/obsninja/wiki/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",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"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",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"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>",
|
||||
"disconnect-guest": "Hangup",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></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",
|
||||
"open-in-new-tab": "Open in new Tab",
|
||||
"copy-to-clipboard": "Copy to Clipboard",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Available Languages:",
|
||||
"add-more-here": "Add More Here!"
|
||||
},
|
||||
"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",
|
||||
"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-chat-message-to-send-here": "Enter chat message to send here"
|
||||
}
|
||||
}
|
||||
@@ -1,68 +1,192 @@
|
||||
{
|
||||
"GO": "IR",
|
||||
"add-group-chat": "Agregar grupo de chat a OBS",
|
||||
"add-to-group": "Agregar a la escena de grupo",
|
||||
"add-your-camera": "Agregar tu camara a OBS",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Notas adicionales:</i></u>\n\t\t\t\t<li>Cualquiera puede entrar en una sala si conoce el nombre, así que mantenlo único</li>\n\t\t\t\t<li>Tener más de cuatro (4) personas en una sala no es recomendable debido a razones de rendimiento, pero depende de tu hardware.</li>\n\t\t\t\t<li>Los dispositivos iOS están limitados a tamaños de grupo de no más de dos (2) personas. Esto es una limitación de hardware.</li>\n\t\t\t\t<li>La opción de \"Grabación\" es nueva y se considera experimental.</li>\n\t\t\t\t<li>Tienes que \"Añadir\" una señal de video a la \"Escena de grupo\" para que aparezca allí.</li>\n\t\t\t\t<li>Hay un botón nuevo añadido \"Pantalla completa mejorada\" a la vista de invitados.</li>\n\t\t\t\t",
|
||||
"advanced-paramaters": "Parámetros Avanzados",
|
||||
"audio-sources": "Fuentes de Audio",
|
||||
"back": "Atrás",
|
||||
"balanced": "Equilibrado",
|
||||
"copy-this-url": "Copia esta URL a una fuente \"Navegador\" de OBS",
|
||||
"copy-to-clipboard": "Copia al portapapeles",
|
||||
"create-reusable-invite": "Crear una invitación reutilizable",
|
||||
"enable-stereo-and-pro": "Habilitar Estéreo y Pro HD Audio",
|
||||
"enter-the-rooms-control": "Entrar a la sala de centro de control",
|
||||
"force-vp9-video-codec": "Forzar VP9 Video Codec (menos artefactos)",
|
||||
"generate-invite-link": "GENERAR EL LINK DE INVITACIÓN",
|
||||
"here-you-can-pre-generate": "Aquí puedes pregenerar un enlace reutilizable para la fuente de navegador y un enlace para invitados.",
|
||||
"high-security-mode": "Modo de alta seguridad",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Qué es OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b>gratis</b>; sin descargas; sin recopilación de datos personales; sin registros</li>\n\t\t\t\t\t\t<li>Lleva video desde tu móbil, portátil, ordenador de sobremesa, o de tus amigos directamente a tu stream en OBS</li>\n\t\t\t\t\t\t<li>Utilizamos tecnología innovadora Peer-to-Peer que ofrece privacidad y ultra baja latencia</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demo aquí</a> </li>\n\t\t\t\t\t\t<li>El cdigo está disponible aquí: <i class=\"fa fa-github\" aria-hidden=\"true\"></i> <a href=\"https://github.com/steveseguin/obsninja\">https://github.com/steveseguin/obsninja</a> </li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<i><font style=\"color:red\">Problemas conocidos:</font></i><br>\n\n\t\t\t\t\t\t<li><i class=\"fa fa-apple\" aria-hidden=\"true\"></i> Los usuarios de MacOS necesitan utilizar OBS v23 o recurrir a i>Capturar ventana de un navegador Chrome con OBS v25</li>\n\t\t\t\t\t\t<li>Algunos usuarios tendrán problemas de \"pixelación\" con videos. Por favor añade en la URL el parametro <b>&codec=vp9</b> a los enlaces de OBS para corregirlo.</li>\n\t<h3><i>Revisa <a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a> <i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"></i> para ayuda e información avanzada. También estoy en <a href=\"https://discord.gg/EksyhGA\">Discord</a> y puedes enviarme un email a steve@seguin.email</i></h3>\n\t\t\t\t\t",
|
||||
"joining-room": "Estás entrado en la sala",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"max-resolution": "Max. Resolución",
|
||||
"mute": "Silenciar",
|
||||
"no-audio": "Sin Audio",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>Nota</b>: No te olvides de hacer clic \"Compartir audio\" en Chrome.<br>(Firefox no soporta compartir audio.)",
|
||||
"open-in-new-tab": "Abrir en una pestaña nueva",
|
||||
"record": "Grabar",
|
||||
"remote-control-for-obs": "Control remoto para OBS",
|
||||
"remote-screenshare-obs": "Compartir pantalla remota en OBS",
|
||||
"room-name": "Nombre de sala",
|
||||
"rooms-allow-for": "Las salas permiten un chat grupal simplificado y la administración avanzada de múltiples transmisiones a la vez.",
|
||||
"select-audio-source": "Seleccionar fuentes de audio",
|
||||
"select-audio-video": "Selecciona la fuente de audio/video a continuación",
|
||||
"select-screen-to-share": "SELECCIONAR PANTALLA PARA COMPARTIR",
|
||||
"show-tips": "Muéstrame algunos consejos..",
|
||||
"smooth-cool": "Fluido",
|
||||
"unlock-video-bitrate": "Desbloquear Video Bitrate (20mbps)",
|
||||
"video-source": "Fuente de video",
|
||||
"volume": "Volumen",
|
||||
"you-are-in-the-control-center": "Estás en la sala de centro de control",
|
||||
"waiting-for-camera": "Esperando a que se cargue la cámara",
|
||||
"video-resolution": "Resolución de vídeo: ",
|
||||
"hide-screen-share": "Ocultar opción compartir pantalla",
|
||||
"allow-remote-control": "Control remoto del zoom de la cámara (android)",
|
||||
"add-the-guest-to-a-room": " Añadir al invitado a una sala:",
|
||||
"invite-group-chat-type": "Este invitado a la sala puede:",
|
||||
"can-see-and-hear": "Puede ver y oir el chat de grupo",
|
||||
"can-hear-only": "Sólo puede oir el chat de grupo",
|
||||
"cant-see-or-hear": "No puede ni oir ni ver el chat de grupo",
|
||||
"password-input-field": "Password",
|
||||
"select-output-source": " Destino de la salida de audio: \n\t\t\t\t\t",
|
||||
"add-a-password-to-stream": " Añadir un password:",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tBienvenido a OBS.Ninja! Puedes enviar mensajes de texto directamente a compañeros conectados desde aquí.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNombres identificando a los compañeros conectados serán una nueva característica en una próxima versión.\n\t\t\t\t",
|
||||
"send-chat": "Enviar",
|
||||
"available-languages": "Idiomas disponibles:",
|
||||
"add-more-here": "¡Añade más aquí!",
|
||||
"invite-users-to-join": "Invita a los usuarios a unirse al grupo y transmitir sus señales. Estos usuarios verán todas las señales de la sala.",
|
||||
"link-to-invite-camera": "Enlace para invitar a los usuarios a transmitir sus señales al grupo. Estos usuarios no verán ni escucharán ninguna señal del grupo.",
|
||||
"this-is-obs-browser-source-link": "Este es un enlace de una fuente de navegador de OBS que está vacía por defecto. Los videos de la sala se pueden agregar manualmente a esta escena.",
|
||||
"this-is-obs-browser-souce-link-auto": "También un enlace de fuente de navegador de OBS. Todos los videos de invitados en esta sala de chat grupal se agregarán automáticamente a esta escena.",
|
||||
"click-for-quick-room-overview": "❔ Haz clic aquí para obtener información general rápida y ayuda",
|
||||
"push-to-talk-enable": "🔊 Habilitar pulsar para hablar en el modo director",
|
||||
"welcome-to-control-room": "Bienvenidos. Esta es la sala de control para el chat grupal. Hay diferentes cosas para las que puedes usar esta habitación:<br><br>\t<li>Puedes organizar un chat grupal con amigos usando una sala. Comparte el enlace azul para invitar a los que se unirán al chat automáticamente.</li>\t<li>Una sala de grupo puede manejar de 4 a 30 invitados, dependiendo de numerosos factores, incluida la CPU y el ancho de banda disponible de todos los invitados en la sala.</li>\t<li>Las vistas individuales de cada vídeo se ofrecen según los videos se van cargando. Estos se pueden usar dentro de una fuente de navegador de OBS.</li>\t<li>Puedes usar la escena de grupo de mezcla automática, el enlace verde, para organizar automáticamente varios videos en OBS.</li>\t<li>Puedes usar esta sala de control para grabar transmisiones de vídeo o audio aisladas, pero es una característica experimental.</li>\t<li>Los videos en la sala del Director serán de baja calidad; para ahorrar ancho de banda/CPU</li>\t<li>Los invitados en la sala verán los videos de los demás con una calidad muy limitada para ahorrar ancho de banda/CPU.</li>\t<li>OBS verá el video de un invitado en alta calidad; la bitrate predeterminado es 2500 kbps.</li>\t<br>\tA medida que los invitados se unen, sus videos aparecerán a continuación. Puedes llevar sus transmisiones de vídeo a OBS como escenas individuales o puedes agregarlas a la escena de grupo.\t<br>La escena de grupo mezcla automáticamente los videos que se han agregado a la escena. Ten en cuenta que el Auto-Mixer requiere que los invitados se agreguen manualmente para que aparezcan en él; no se agregan automáticamente.<br><br>Los dispositivos móviles de Apple, como iPhones y iPads, no son totalmente compatibles con el videochat de grupo. Esta es una restricción de hardware.<br><br>\tPara opciones y parámetros avanzados, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">ver la Wiki.</a>",
|
||||
"guest-will-appaer-here-on-join": "(Aparecerá un video aquí cuando un invitado se una)",
|
||||
"SOLO-LINK": "SOLO LINK para OBS:"
|
||||
}
|
||||
"titles": {
|
||||
"toggle-the-chat": "Toggle the Chat",
|
||||
"mute-the-speaker": "Mute the Speaker",
|
||||
"mute-the-mic": "Mute the Mic",
|
||||
"disable-the-camera": "Disable the Camera",
|
||||
"settings": "Settings",
|
||||
"hangup-the-call": "Hangup the Call",
|
||||
"show-help-info": "Show Help Info",
|
||||
"language-options": "Language Options",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
|
||||
"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",
|
||||
"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",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Hold CTRL (or CMD) to select multiple files",
|
||||
"enter-an-https-url": "Enter an HTTPS URL",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Forward user to another room. They can always return.",
|
||||
"start-recording-this-stream-experimental-views": "Start Recording this stream. *experimental*' views",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Change this Audio's volume in all remote '&scene' views",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Remotely Mute this Audio in all remote '&scene' views",
|
||||
"disable-video-preview": "Disable Video Preview",
|
||||
"low-quality-preview": "Low-Quality Preview",
|
||||
"high-quality-preview": "High-Quality Preview",
|
||||
"send-direct-message": "Send Direct Message",
|
||||
"advanced-settings-and-remote-control": "Advanced Settings and Remote Control",
|
||||
"toggle-voice-chat-with-this-guest": "Toggle Voice Chat with this Guest",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"copy-this-url": "Copia esta URL a una fuente \"Navegador\" de OBS",
|
||||
"you-are-in-the-control-center": "Estás en la sala de centro de control",
|
||||
"joining-room": "Estás entrado en la sala",
|
||||
"add-group-chat": "Agregar grupo de chat a OBS",
|
||||
"rooms-allow-for": "Las salas permiten un chat grupal simplificado y la administración avanzada de múltiples transmisiones a la vez.",
|
||||
"room-name": "Nombre de sala",
|
||||
"password-input-field": "Password",
|
||||
"enter-the-rooms-control": "Entrar a la sala de centro de control",
|
||||
"show-tips": "Muéstrame algunos consejos..",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Notas adicionales:</i></u>\n\t\t\t\t<li>Cualquiera puede entrar en una sala si conoce el nombre, así que mantenlo único</li>\n\t\t\t\t<li>Tener más de cuatro (4) personas en una sala no es recomendable debido a razones de rendimiento, pero depende de tu hardware.</li>\n\t\t\t\t<li>Los dispositivos iOS están limitados a tamaños de grupo de no más de dos (2) personas. Esto es una limitación de hardware.</li>\n\t\t\t\t<li>La opción de \"Grabación\" es nueva y se considera experimental.</li>\n\t\t\t\t<li>Tienes que \"Añadir\" una señal de video a la \"Escena de grupo\" para que aparezca allí.</li>\n\t\t\t\t<li>Hay un botón nuevo añadido \"Pantalla completa mejorada\" a la vista de invitados.</li>\n\t\t\t\t",
|
||||
"back": "Atrás",
|
||||
"add-your-camera": "Agregar tu camara a OBS",
|
||||
"ask-for-permissions": "Allow Access to Camera/Microphone",
|
||||
"waiting-for-camera": "Esperando a que se cargue la cámara",
|
||||
"video-source": "Fuente de video",
|
||||
"max-resolution": "Max. Resolución",
|
||||
"balanced": "Equilibrado",
|
||||
"smooth-cool": "Fluido",
|
||||
"select-audio-source": "Seleccionar fuentes de audio",
|
||||
"no-audio": "Sin Audio",
|
||||
"select-output-source": " Destino de la salida de audio: \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "Compartir pantalla remota en OBS",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>Nota</b>: No te olvides de hacer clic \"Compartir audio\" en Chrome.<br>(Firefox no soporta compartir audio.)",
|
||||
"select-screen-to-share": "SELECCIONAR PANTALLA PARA COMPARTIR",
|
||||
"audio-sources": "Fuentes de Audio",
|
||||
"create-reusable-invite": "Crear una invitación reutilizable",
|
||||
"here-you-can-pre-generate": "Aquí puedes pregenerar un enlace reutilizable para la fuente de navegador y un enlace para invitados.",
|
||||
"generate-invite-link": "GENERAR EL LINK DE INVITACIÓN",
|
||||
"advanced-paramaters": "Parámetros Avanzados",
|
||||
"unlock-video-bitrate": "Desbloquear Video Bitrate (20mbps)",
|
||||
"force-vp9-video-codec": "Forzar VP9 Video Codec (menos artefactos)",
|
||||
"enable-stereo-and-pro": "Habilitar Estéreo y Pro HD Audio",
|
||||
"video-resolution": "Resolución de vídeo: ",
|
||||
"hide-mic-selection": "Force Default Microphone",
|
||||
"hide-screen-share": "Ocultar opción compartir pantalla",
|
||||
"allow-remote-control": "Control remoto del zoom de la cámara (android)",
|
||||
"add-a-password-to-stream": " Añadir un password:",
|
||||
"add-the-guest-to-a-room": " Añadir al invitado a una sala:",
|
||||
"invite-group-chat-type": "Este invitado a la sala puede:",
|
||||
"can-see-and-hear": "Puede ver y oir el chat de grupo",
|
||||
"can-hear-only": "Sólo puede oir el chat de grupo",
|
||||
"cant-see-or-hear": "No puede ni oir ni ver el chat de grupo",
|
||||
"share-local-video-file": "Stream Media File",
|
||||
"share-website-iframe": "Share Website",
|
||||
"run-a-speed-test": "Run a Speed Test",
|
||||
"read-the-guides": "Browse the Guides",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Qué es OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b>gratis</b>; sin descargas; sin recopilación de datos personales; sin registros</li>\n\t\t\t\t\t\t<li>Lleva video desde tu móbil, portátil, ordenador de sobremesa, o de tus amigos directamente a tu stream en OBS</li>\n\t\t\t\t\t\t<li>Utilizamos tecnología innovadora Peer-to-Peer que ofrece privacidad y ultra baja latencia</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demo aquí</a> </li>\n\t\t\t\t\t\t",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"forward-to-room": "Transfer",
|
||||
"record": "Grabar",
|
||||
"disconnect-guest": "Hangup",
|
||||
"mute": "Silenciar",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Advanced",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "Abrir en una pestaña nueva",
|
||||
"copy-to-clipboard": "Copia al portapapeles",
|
||||
"click-for-quick-room-overview": "❔ Haz clic aquí para obtener información general rápida y ayuda",
|
||||
"push-to-talk-enable": "🔊 Habilitar pulsar para hablar en el modo director",
|
||||
"welcome-to-control-room": "Bienvenidos. Esta es la sala de control para el chat grupal. Hay diferentes cosas para las que puedes usar esta habitación:<br><br>\t<li>Puedes organizar un chat grupal con amigos usando una sala. Comparte el enlace azul para invitar a los que se unirán al chat automáticamente.</li>\t<li>Una sala de grupo puede manejar de 4 a 30 invitados, dependiendo de numerosos factores, incluida la CPU y el ancho de banda disponible de todos los invitados en la sala.</li>\t<li>Las vistas individuales de cada vídeo se ofrecen según los videos se van cargando. Estos se pueden usar dentro de una fuente de navegador de OBS.</li>\t<li>Puedes usar la escena de grupo de mezcla automática, el enlace verde, para organizar automáticamente varios videos en OBS.</li>\t<li>Puedes usar esta sala de control para grabar transmisiones de vídeo o audio aisladas, pero es una característica experimental.</li>\t<li>Los videos en la sala del Director serán de baja calidad; para ahorrar ancho de banda/CPU</li>\t<li>Los invitados en la sala verán los videos de los demás con una calidad muy limitada para ahorrar ancho de banda/CPU.</li>\t<li>OBS verá el video de un invitado en alta calidad; la bitrate predeterminado es 2500 kbps.</li>\t<br>\tA medida que los invitados se unen, sus videos aparecerán a continuación. Puedes llevar sus transmisiones de vídeo a OBS como escenas individuales o puedes agregarlas a la escena de grupo.\t<br>La escena de grupo mezcla automáticamente los videos que se han agregado a la escena. Ten en cuenta que el Auto-Mixer requiere que los invitados se agreguen manualmente para que aparezcan en él; no se agregan automáticamente.<br><br>Los dispositivos móviles de Apple, como iPhones y iPads, no son totalmente compatibles con el videochat de grupo. Esta es una restricción de hardware.<br><br>\tPara opciones y parámetros avanzados, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">ver la Wiki.</a>",
|
||||
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tBienvenido a OBS.Ninja! Puedes enviar mensajes de texto directamente a compañeros conectados desde aquí.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNombres identificando a los compañeros conectados serán una nueva característica en una próxima versión.\n\t\t\t\t",
|
||||
"send-chat": "Enviar",
|
||||
"available-languages": "Idiomas disponibles:",
|
||||
"add-more-here": "¡Añade más aquí!",
|
||||
"waiting-for-camera-to-load": "waiting-for-camera-to-load",
|
||||
"start": "START",
|
||||
"share-your-mic": "Share your microphone",
|
||||
"share-your-camera": "Share your Camera",
|
||||
"share-your-screen": "Share your Screen",
|
||||
"join-room-with-mic": "Join room with Microphone",
|
||||
"share-screen-with-room": "Share-screen with Room",
|
||||
"join-room-with-camera": "Join room with Camera",
|
||||
"click-start-to-join": "Click Start to Join",
|
||||
"guests-only-see-director": "Guests can only see the Director's Video",
|
||||
"default-codec-select": "Preferred Video Codec: ",
|
||||
"obfuscate_url": "Obfuscate the Invite URL",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings"
|
||||
},
|
||||
"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",
|
||||
"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-chat-message-to-send-here": "Enter chat message to send here"
|
||||
}
|
||||
}
|
||||
@@ -1,68 +1,192 @@
|
||||
{
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"GO": "Aller",
|
||||
"add-group-chat": "Conversation de groupe",
|
||||
"add-to-group": "Ajouter à la scène de groupe",
|
||||
"add-your-camera": "Ajoutez votre caméra à OBS",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Added Notes:</i></u>\n\t\t\t\t<li>N'importe qui peut entrer dans une pièce s'il connaît le nom, alors gardez-le unique</li>\n\t\t\t\t<li>Il n'est pas conseillé d'avoir plus de quatre (4) personnes dans une pièce pour des raisons de performances, mais cela dépend de votre matériel.</li>\n\t\t\t\t<li>Les appareils iOS sont limités à des groupes de deux (2) personnes maximum. Il s'agit d'une limitation matérielle.</li>\n\t\t\t\t\n\t\t\t\t",
|
||||
"advanced-paramaters": "Paramètres avancés",
|
||||
"audio-sources": "Sources audio",
|
||||
"back": "Retour",
|
||||
"balanced": "Équilibré",
|
||||
"copy-this-url": "Copiez cette URL dans un OBS \"Browser Source\"",
|
||||
"copy-to-clipboard": "Copier dans le presse-papier",
|
||||
"create-reusable-invite": "Créer une invitation réutilisable",
|
||||
"enable-stereo-and-pro": "Activer l'audio stéréo et Pro HD",
|
||||
"enter-the-rooms-control": "Entrez dans le centre de contrôle de la pièce",
|
||||
"force-vp9-video-codec": "Forcer le codec vidéo VP9",
|
||||
"generate-invite-link": "GÉNÉRER LE LIEN D'INVITATION",
|
||||
"here-you-can-pre-generate": "Ici, vous pouvez pré-générer un lien de source de navigateur réutilisable et un lien d'invitation d'invité associé.",
|
||||
"high-security-mode": "Mode haute sécurité",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Qu'est-ce que OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b> gratuit </b>; aucun téléchargement; aucune collecte de données personnelles; pas de connexion</li>\n\t\t\t\t\t\t<li>Importez des vidéos de votre smartphone, ordinateur portable, ordinateur ou de vos amis directement dans votre flux vidéo OBS</li>\n\t\t\t\t\t\t<li>Nous utilisons une technologie de transfert Peer-to-Peer de pointe qui offre une confidentialité et une latence ultra-faible</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Démonstration ici</a> </li>\n\t\t\t\t\t\t<li>Le code est disponible ici: <i class=\"fa fa-github\" aria-hidden=\"true\"></i> <a href=\"https://github.com/steveseguin/obsninja\">https://github.com/steveseguin/obsninja</a> </li>\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t<i>Découvrez le <a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a> <i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"></i> pour de l'aide et des informations avancées.</i></h3>",
|
||||
"joining-room": "Vous rejoignez la salle",
|
||||
"max-resolution": "Résolution max",
|
||||
"mute": "Mute",
|
||||
"no-audio": "Pas de son",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>note</b>: N'oubliez pas de cliquer sur Partager l'audio dans Chrome.<br>(Firefox ne prend pas en charge le partage audio.)",
|
||||
"open-in-new-tab": "Ouvrir dans un nouvel onglet",
|
||||
"record": "Record",
|
||||
"remote-control-for-obs": "Télécommande pour OBS",
|
||||
"remote-screenshare-obs": "Partage d'écran à distance dans OBS",
|
||||
"room-name": "Nom de la salle",
|
||||
"rooms-allow-for": "Les salles permettent une conversation de groupe simplifiée et la gestion avancée de plusieurs flux à la fois.",
|
||||
"select-audio-source": "Sélectionnez les sources audio",
|
||||
"select-audio-video": "Sélectionnez la source audio / vidéo ci-dessous",
|
||||
"select-screen-to-share": "CHOISIR L'ÉCRAN À PARTAGER",
|
||||
"show-tips": "Montrez-moi quelques conseils ..",
|
||||
"smooth-cool": "Lisse et frais",
|
||||
"unlock-video-bitrate": "Déverrouiller le débit vidéo (20 Mbps)",
|
||||
"video-source": "Source vidéo",
|
||||
"volume": "Volume",
|
||||
"you-are-in-the-control-center": "Vous êtes dans le centre de contrôle de la pièce",
|
||||
"waiting-for-camera": "Waiting for Camera to Load",
|
||||
"video-resolution": "Video Resolution: ",
|
||||
"hide-screen-share": "Hide Screenshare Option",
|
||||
"allow-remote-control": "Remote Control Camera Zoom (android)",
|
||||
"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",
|
||||
"password-input-field": "Password",
|
||||
"select-output-source": " Audio Output Destination: \n\t\t\t\t\t",
|
||||
"add-a-password-to-stream": " Add a password:",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Available Languages:",
|
||||
"add-more-here": "Add More Here!",
|
||||
"invite-users-to-join": "Invites users to join the group and broadcast their feed to it. These users will see every feed in the room.",
|
||||
"link-to-invite-camera": "Link to invite users to broadcast their feeds to the group. These users will not see or hear any feed from the group.",
|
||||
"this-is-obs-browser-source-link": "This is an OBS Browser Source link that is empty by default. Videos in the room can be manually added to this scene.",
|
||||
"this-is-obs-browser-souce-link-auto": "Also an OBS Browser Source link. All guest videos in this group chat room will automatically be added into this scene.",
|
||||
"click-for-quick-room-overview": "❔ Click Here for a quick overview and help",
|
||||
"push-to-talk-enable": "🔊 Enable Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"guest-will-appaer-here-on-join": "(A video will appear here when a guest joins)",
|
||||
"SOLO-LINK": "SOLO LINK for OBS:"
|
||||
"titles": {
|
||||
"toggle-the-chat": "Réduire le tchat",
|
||||
"mute-the-speaker": "Mettre le haut parleur en sourdine",
|
||||
"mute-the-mic": "Mettre le micro en sourdine",
|
||||
"disable-the-camera": "Désactiver la caméra",
|
||||
"settings": "Paramètres",
|
||||
"hangup-the-call": "Raccrocher",
|
||||
"show-help-info": "Montrer l'aide",
|
||||
"language-options": "Options de langue",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "conseil : Maintenir CTRL (ou command) pour sélectionner plusieurs",
|
||||
"ideal-for-1080p60-gaming-if-your-computer-and-upload-are-up-for-it": "Idéal pour le format gaming 1080p60 si votre ordinateur le permet",
|
||||
"better-video-compression-and-quality-at-the-cost-of-increased-cpu-encoding-load": "Meilleure compression et qualité vidéo en contrepartie d'un chargement d'encodage CPU plus long",
|
||||
"disable-digital-audio-effects-and-increase-audio-bitrate": "Désactiver les effets audio et augmenter le débit audio",
|
||||
"the-guest-will-not-have-a-choice-over-audio-options": "L'invité ne pourra pas modifier les paramètres audio",
|
||||
"the-guest-will-only-be-able-to-select-their-webcam-as-an-option": "L'invité pourra uniquement modifier sa caméra",
|
||||
"hold-ctrl-and-the-mouse-wheel-to-zoom-in-and-out-remotely-of-compatible-video-streams": "Maintenir CTRL (ou command) et rouler la molette de la souris pour effectuer un zoom avant et arrière à distance sur les flux vidéo compatibles",
|
||||
"add-a-password-to-make-the-stream-inaccessible-to-those-without-the-password": "Ajouter un mot de passe pour que le flux vidéo ne soit pas accessible au personne n'ayant pas le mot de passe",
|
||||
"add-the-guest-to-a-group-chat-room-it-will-be-created-automatically-if-needed-": "Ajouter l'invité à une salle de discussion en groupe; elle sera créée automatiquement si nécessaire.",
|
||||
"customize-the-room-settings-for-this-guest": "Personnaliser les paramètres de la salle pour cet invité",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Maintenir CTRL (ou command) pour sélectionner plusieurs fichiers à la fois",
|
||||
"enter-an-https-url": "Saisir une URL en HTTPS",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Ajouter cette vidéo à n'importe quel flux '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Transférer l'utilisateur vers une autre salle. Il pourra toujours revenir par la suite.",
|
||||
"start-recording-this-stream-experimental-views": "Commencer à enregistrer ce flux. *experimental*' views",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Forcer la déconnexion de l'utilisateur. Il pourra toujours se reconnecter par la suite.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Modifier le volume de l'audio sur l'ensemble des flux '&scene' views",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Mettre en sourdine l'audio sur l'ensemble des flux '&scene' views",
|
||||
"disable-video-preview": "Désactiver l'aperçu vidéo",
|
||||
"low-quality-preview": "Aperçu faible définition",
|
||||
"high-quality-preview": "Aperçu haute définition",
|
||||
"send-direct-message": "Envoyer un message direct",
|
||||
"advanced-settings-and-remote-control": "Paramètres avancés et contrôle à distance",
|
||||
"toggle-voice-chat-with-this-guest": "Basculer le tchat vocal pour cet utilisateur",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"copy-this-url": "Copiez cette URL dans un OBS \"Browser Source\"",
|
||||
"you-are-in-the-control-center": "Vous êtes dans le centre de contrôle de la pièce",
|
||||
"joining-room": "Vous rejoignez la salle",
|
||||
"add-group-chat": "Conversation de groupe",
|
||||
"rooms-allow-for": "Les salles permettent une conversation de groupe simplifiée et la gestion avancée de plusieurs flux à la fois.",
|
||||
"room-name": "Nom de la salle",
|
||||
"password-input-field": "Mot de passe",
|
||||
"enter-the-rooms-control": "Entrez dans le centre de contrôle de la pièce",
|
||||
"show-tips": "Montrez-moi quelques conseils ...",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Added Notes:</i></u>\n\t\t\t\t<li>N'importe qui peut entrer dans une pièce s'il en connaît le nom, alors gardez-le unique</li>\n\t\t\t\t<li>Il n'est pas conseillé d'avoir plus de quatre (4) personnes dans une pièce pour des raisons de performances, mais cela dépend de votre matériel.</li>\n\t\t\t\t<li>Les appareils iOS sont limités à des groupes de deux (2) personnes maximum. Il s'agit d'une limitation matérielle.</li>\n\t\t\t\t\n\t\t\t\t",
|
||||
"back": "Retour",
|
||||
"add-your-camera": "Ajoutez votre caméra à OBS",
|
||||
"ask-for-permissions": "Autoriser l'accès à la caméra / au micro",
|
||||
"waiting-for-camera": "Chargement de la caméra",
|
||||
"video-source": "Source vidéo",
|
||||
"max-resolution": "Résolution max.",
|
||||
"balanced": "Équilibré",
|
||||
"smooth-cool": "Lisse et frais",
|
||||
"select-audio-source": "Sélectionner la source audio : \n\t\t\t\t\t",
|
||||
"no-audio": "Pas de son",
|
||||
"select-output-source": "Sélectionner la sortie audio ",
|
||||
"remote-screenshare-obs": "Partage d'écran à distance dans OBS",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>note</b>: N'oubliez pas de cliquer sur Partager l'audio dans Chrome.<br>(Firefox ne prend pas en charge le partage audio.)",
|
||||
"select-screen-to-share": "Choisir l'écran à partager",
|
||||
"audio-sources": "Sources audio",
|
||||
"create-reusable-invite": "Créer une invitation réutilisable",
|
||||
"here-you-can-pre-generate": "Ici, vous pouvez pré-générer un lien de source de navigateur réutilisable et un lien d'invitation d'invité associé.",
|
||||
"generate-invite-link": "GÉNÉRER LE LIEN D'INVITATION",
|
||||
"advanced-paramaters": "Paramètres avancés",
|
||||
"unlock-video-bitrate": "Déverrouiller le débit vidéo (20 Mbps)",
|
||||
"force-vp9-video-codec": "Forcer le codec vidéo VP9",
|
||||
"enable-stereo-and-pro": "Activer l'audio stéréo et Pro HD",
|
||||
"video-resolution": "Video Resolution: ",
|
||||
"hide-mic-selection": "Forcer l'utilisation du micro par défaut",
|
||||
"hide-screen-share": "Masquer les options de partage d'écran",
|
||||
"allow-remote-control": "Contrôle à distance du zoom de la caméra (android)",
|
||||
"add-a-password-to-stream": " Ajouter un mot de passe:",
|
||||
"add-the-guest-to-a-room": " Ajouter l'invité à une salle:",
|
||||
"invite-group-chat-type": "Cet invité peut:",
|
||||
"can-see-and-hear": "Peut voir et entendre le tchat de groupe",
|
||||
"can-hear-only": "Peut seulement entendre le tchat de groupe",
|
||||
"cant-see-or-hear": "Ne peut ni entendre ni voir le tchat de groupe",
|
||||
"share-local-video-file": "Partager un fichier média",
|
||||
"share-website-iframe": "Partager site internet",
|
||||
"run-a-speed-test": "Exécuter un test de vitesse",
|
||||
"read-the-guides": "Parcourir les guides",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Qu'est-ce que OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b> gratuit </b>; aucun téléchargement; aucune collecte de données personnelles; pas de connexion</li>\n\t\t\t\t\t\t<li>Importez des vidéos de votre smartphone, ordinateur portable, ordinateur ou de vos amis directement dans votre flux vidéo OBS</li>\n\t\t\t\t\t\t<li>Nous utilisons une technologie de transfert Peer-to-Peer de pointe qui offre une confidentialité et une latence ultra-faible</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Démonstration ici</a> </li>\n\t\t\t\t\t\t<h3>\n\t\t\t\t\t<i>Découvrez le <a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a> <i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"></i> pour de l'aide et des informations avancées.</i></h3>",
|
||||
"add-to-scene": "Ajouter à la scène",
|
||||
"forward-to-room": "Transférer",
|
||||
"record": "Enregistrer",
|
||||
"disconnect-guest": "Raccrocher",
|
||||
"mute": "Mettre en sourdine",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Advanced",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "Ouvrir dans un nouvel onglet",
|
||||
"copy-to-clipboard": "Copier dans le presse-papier",
|
||||
"click-for-quick-room-overview": "❔ Cliquez ici pour un aperçu rapide et de l'aide",
|
||||
"push-to-talk-enable": "🔊 Permettre à l'administrateur d'utiliser le push-to-talk",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Options de langues disponibles :",
|
||||
"add-more-here": "Ajouter ici!",
|
||||
"waiting-for-camera-to-load": "Chargement de votre caméra",
|
||||
"start": "REJOINDRE",
|
||||
"share-your-mic": "Partager votre micro",
|
||||
"share-your-camera": "Partager votre caméra",
|
||||
"share-your-screen": "Partager votre écran",
|
||||
"join-room-with-mic": "Rejoindre la salle avec votre micro",
|
||||
"share-screen-with-room": "Partager votre écran avec la salle",
|
||||
"join-room-with-camera": "Rejoindre la salle avec votre caméra",
|
||||
"click-start-to-join": "Appuyer sur rejoindre pour commencer",
|
||||
"guests-only-see-director": "Guests can only see the Director's Video",
|
||||
"default-codec-select": "Preferred Video Codec: ",
|
||||
"obfuscate_url": "Obfuscate the Invite URL",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings"
|
||||
},
|
||||
"placeholders": {
|
||||
"join-by-room-name-here": "Rejoindre via le nom de salle ici",
|
||||
"enter-a-room-name-here": "Saisir un nom de salle ici",
|
||||
"optional-room-password-here": "Mot de passe (optionnel) pour la salle ici",
|
||||
"give-this-media-source-a-name-optional-": "Donner un nom à cette source média (optionnel)",
|
||||
"add-an-optional-password": "Ajouter un mot de passe optionnel",
|
||||
"enter-room-name-here": "Saisir le nom de la salle ici",
|
||||
"enter-chat-message-to-send-here": "Saisir un message ici pour l'envoyer dans le tchat"
|
||||
}
|
||||
}
|
||||
@@ -1,67 +1,192 @@
|
||||
{
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"GO": "Entra",
|
||||
"copy-this-url": "Copia questo URL in un OBS \"Browser Source\"",
|
||||
"you-are-in-the-control-center": "Sei nel pannello di controllo",
|
||||
"joining-room": "Ti stai unendo alla stanza",
|
||||
"add-group-chat": "Aggiungi chat di gruppo a OBS",
|
||||
"rooms-allow-for": "Le stanze consentono una chat di gruppo semplificata e la gestione avanzata di più flussi contemporaneamente.",
|
||||
"room-name": "Nome stanza",
|
||||
"enter-the-rooms-control": "Entra nella gestione della stanza",
|
||||
"show-tips": "Mosta alcuni suggerimenti..",
|
||||
"added-notes": "\n<u><i>Aggiungi note:</i></u>\n<li>Chiunque può entrare in una stanza se conosce il nome, quindi mantienilo unico</li>\n<li>Invita solo persone fidate nella stanza.</li>\n<li>I dispositivi iOS condivideranno solo il loro audio con altri ospiti; questa è principalmente una limitazione hardware</li>\n<li>Opzione \"Registrazione\" è considerata opzioneale.</li>\n",
|
||||
"back": "Indietro",
|
||||
"add-your-camera": "Aggiungi camera ad OBS",
|
||||
"waiting-for-camera": "In attesa di caricamento",
|
||||
"video-source": "Sorgente Video",
|
||||
"max-resolution": "1080p (hi-def)",
|
||||
"balanced": "720p (balanced)",
|
||||
"smooth-cool": "360p (smooth)",
|
||||
"select-audio-source": "Seleziona sorgente audio",
|
||||
"no-audio": "No Audio",
|
||||
"remote-screenshare-obs": "Screenshare remoto dentro OBS",
|
||||
"note-share-audio": "\n<b>note</b>: Do not forget to click \"Condividi audio\" in Chrome.<br>(Firefox non supporta la condivisione dell'audio..)",
|
||||
"select-screen-to-share": "Seleziona lo schermo da condividere",
|
||||
"audio-sources": "Sorgenti Audio",
|
||||
"create-reusable-invite": "Crea un invito riutilizzabile",
|
||||
"here-you-can-pre-generate": "Qui è possibile pre-generare un collegamento Sorgente del browser riutilizzabile e un collegamento di invito ospite correlato.",
|
||||
"generate-invite-link": "Genera Link invito",
|
||||
"advanced-paramaters": "Opzioni avanzate:",
|
||||
"unlock-video-bitrate": "Sblocca Video Bitrate (20mbps)",
|
||||
"force-vp9-video-codec": "Forza VP9 Video Codec (less artifacting)",
|
||||
"enable-stereo-and-pro": "Abilita Stereo e Pro HD Audio",
|
||||
"video-resolution": "Risoluzioni Video: ",
|
||||
"high-security-mode": "Modalità sicurezza alta",
|
||||
"hide-screen-share": "Nascondi opzione Screenshare",
|
||||
"allow-remote-control": "Controllo remoto camera zoom (android)",
|
||||
"add-the-guest-to-a-room": "Aggiungi l'ospite a una stanza:",
|
||||
"invite-group-chat-type": "In questa stanza ospite può fare:",
|
||||
"can-see-and-hear": "Può vedere e ascoltare la chat di gruppo",
|
||||
"can-hear-only": "Può solo ascoltare la chat di gruppo",
|
||||
"cant-see-or-hear": "Impossibile ascoltare o vedere la chat di gruppo",
|
||||
"info-blob": "\n<h2>Cosa è OBS.Ninja</h2><br>\n<li>100% <b>free</b>; nessun download; nessuna raccolta di dati personali; nessun accesso</li>\n<li>Porta video dal tuo smartphone, computer o amici direttamente nel tuo flusso video OBS</li>\n<li>Utilizziamo una tecnologia di inoltro peer-to-peer all'avanguardia che offre privacy e latenza ultra bassa</li>\n<br>\n<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demoing è presente</a> </li>\n<br>\n<i><font style=\"color:red\">Problemi conosciuti:</font></i><br>\n<li><i class=\"fa fa-apple\" aria-hidden=\"true\"></i> <a href=\"https://github.com/steveseguin/obsninja/wiki/FAQ#mac-os\">Utenti MacOS </a> è necessario utilizzare OBS v23 o ricorrere a <a href=\"https://github.com/steveseguin/electroncapture\">Window Capturing</a> a browser with OBS v25</li>\n<li>Alcuni utenti hanno problemi di <a href=\"https://github.com/steveseguin/obsninja/wiki/FAQ#video-is-pixelated\">\"pixelation\" </a>. Aggiungi <b>&codec=vp9</b> ai collegamenti OBS. </li>\n<br>\n<i></i><h3><i>Mi trovi anche su <a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a> <i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"></i> per aiuto e supporto. Sono presente su <a href=\"https://discord.gg/EksyhGA\">Discord</a>e via email su steve@seguin.email</i></h3>\n",
|
||||
"remote-control-for-obs": "Controllo Remoto per OBS",
|
||||
"add-to-group": "Aggiungi a scena di gruppo",
|
||||
"mute": "Muta",
|
||||
"record": "Registra",
|
||||
"volume": "Volume",
|
||||
"open-in-new-tab": "Apri in una nuova Tab",
|
||||
"copy-to-clipboard": "Copia negli appunti",
|
||||
"password-input-field": "Password",
|
||||
"select-output-source": " Destinazione Output Audio : \n\t\t\t\t\t",
|
||||
"add-a-password-to-stream": " Aggiungi Password:",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tBenvenuto in OBS.Ninja! Da qui puoi inviare messaggi di testo direttamente ai peer connessi.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tI nomi che identificano i peer connessi saranno una funzionalità in una prossima versione..\n\t\t\t\t",
|
||||
"send-chat": "Invia",
|
||||
"available-languages": "Lingue Disponibili:",
|
||||
"add-more-here": "Aggiungi altro qui!",
|
||||
"invite-users-to-join": "Invita gli utenti a unirsi al gruppo e a trasmettere il proprio feed. Questi utenti vedranno ogni feed nella stanza.",
|
||||
"link-to-invite-camera": "Link per invitare gli utenti a trasmettere i propri feed al gruppo. Questi utenti non vedranno né sentiranno alcun feed dal gruppo.",
|
||||
"this-is-obs-browser-source-link": "Questo è un collegamento all'origine del browser OBS che è vuoto per impostazione predefinita. I video nella stanza possono essere aggiunti manualmente a questa scena.",
|
||||
"this-is-obs-browser-souce-link-auto": "Anche un collegamento alla sorgente del browser OBS. Tutti i video degli ospiti in questa chat room di gruppo verranno aggiunti automaticamente a questa scena.",
|
||||
"click-for-quick-room-overview": "❔ Fare clic qui per una rapida panoramica e assistenza ",
|
||||
"push-to-talk-enable": "🔊 Abilita Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Benvenuto. Questa è la sala di controllo per la chat di gruppo. Ci sono diverse cose per cui puoi usare questa stanza:<br><br>\t<li>Puoi ospitare una chat di gruppo con gli amici utilizzando una stanza. Condividi il link blu per invitare gli ospiti che si uniranno automaticamente alla chat.</li>\t<li>Una sala per gruppi può ospitare da 4 a 30 persone, a seconda di numerosi fattori, tra cui CPU e larghezza di banda disponibile di tutti gli ospiti nella stanza.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"guest-will-appaer-here-on-join": "(Quando un ospite si unisce, verrà visualizzato un video qui)",
|
||||
"SOLO-LINK": "SOLO LINK for OBS:"
|
||||
"titles": {
|
||||
"toggle-the-chat": "Toggle the Chat",
|
||||
"mute-the-speaker": "Mute the Speaker",
|
||||
"mute-the-mic": "Mute the Mic",
|
||||
"disable-the-camera": "Disable the Camera",
|
||||
"settings": "Settings",
|
||||
"hangup-the-call": "Hangup the Call",
|
||||
"show-help-info": "Show Help Info",
|
||||
"language-options": "Language Options",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
|
||||
"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",
|
||||
"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",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Hold CTRL (or CMD) to select multiple files",
|
||||
"enter-an-https-url": "Enter an HTTPS URL",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Forward user to another room. They can always return.",
|
||||
"start-recording-this-stream-experimental-views": "Start Recording this stream. *experimental*' views",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Change this Audio's volume in all remote '&scene' views",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Remotely Mute this Audio in all remote '&scene' views",
|
||||
"disable-video-preview": "Disable Video Preview",
|
||||
"low-quality-preview": "Low-Quality Preview",
|
||||
"high-quality-preview": "High-Quality Preview",
|
||||
"send-direct-message": "Send Direct Message",
|
||||
"advanced-settings-and-remote-control": "Advanced Settings and Remote Control",
|
||||
"toggle-voice-chat-with-this-guest": "Toggle Voice Chat with this Guest",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"copy-this-url": "Copia questo URL in un OBS \"Browser Source\"",
|
||||
"you-are-in-the-control-center": "Sei nel pannello di controllo",
|
||||
"joining-room": "Ti stai unendo alla stanza",
|
||||
"add-group-chat": "Aggiungi chat di gruppo a OBS",
|
||||
"rooms-allow-for": "Le stanze consentono una chat di gruppo semplificata e la gestione avanzata di più flussi contemporaneamente.",
|
||||
"room-name": "Nome stanza",
|
||||
"password-input-field": "Password",
|
||||
"enter-the-rooms-control": "Entra nella gestione della stanza",
|
||||
"show-tips": "Mosta alcuni suggerimenti..",
|
||||
"added-notes": "\n<u><i>Aggiungi note:</i></u>\n<li>Chiunque può entrare in una stanza se conosce il nome, quindi mantienilo unico</li>\n<li>Invita solo persone fidate nella stanza.</li>\n<li>I dispositivi iOS condivideranno solo il loro audio con altri ospiti; questa è principalmente una limitazione hardware</li>\n<li>Opzione \"Registrazione\" è considerata opzioneale.</li>\n",
|
||||
"back": "Indietro",
|
||||
"add-your-camera": "Aggiungi camera ad OBS",
|
||||
"ask-for-permissions": "Allow Access to Camera/Microphone",
|
||||
"waiting-for-camera": "In attesa di caricamento",
|
||||
"video-source": "Sorgente Video",
|
||||
"max-resolution": "1080p (hi-def)",
|
||||
"balanced": "720p (balanced)",
|
||||
"smooth-cool": "360p (smooth)",
|
||||
"select-audio-source": "Seleziona sorgente audio",
|
||||
"no-audio": "No Audio",
|
||||
"select-output-source": " Destinazione Output Audio : \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "Screenshare remoto dentro OBS",
|
||||
"note-share-audio": "\n<b>note</b>: Do not forget to click \"Condividi audio\" in Chrome.<br>(Firefox non supporta la condivisione dell'audio..)",
|
||||
"select-screen-to-share": "Seleziona lo schermo da condividere",
|
||||
"audio-sources": "Sorgenti Audio",
|
||||
"create-reusable-invite": "Crea un invito riutilizzabile",
|
||||
"here-you-can-pre-generate": "Qui è possibile pre-generare un collegamento Sorgente del browser riutilizzabile e un collegamento di invito ospite correlato.",
|
||||
"generate-invite-link": "Genera Link invito",
|
||||
"advanced-paramaters": "Opzioni avanzate:",
|
||||
"unlock-video-bitrate": "Sblocca Video Bitrate (20mbps)",
|
||||
"force-vp9-video-codec": "Forza VP9 Video Codec (less artifacting)",
|
||||
"enable-stereo-and-pro": "Abilita Stereo e Pro HD Audio",
|
||||
"video-resolution": "Risoluzioni Video: ",
|
||||
"hide-mic-selection": "Force Default Microphone",
|
||||
"hide-screen-share": "Nascondi opzione Screenshare",
|
||||
"allow-remote-control": "Controllo remoto camera zoom (android)",
|
||||
"add-a-password-to-stream": " Aggiungi Password:",
|
||||
"add-the-guest-to-a-room": "Aggiungi l'ospite a una stanza:",
|
||||
"invite-group-chat-type": "In questa stanza ospite può fare:",
|
||||
"can-see-and-hear": "Può vedere e ascoltare la chat di gruppo",
|
||||
"can-hear-only": "Può solo ascoltare la chat di gruppo",
|
||||
"cant-see-or-hear": "Impossibile ascoltare o vedere la chat di gruppo",
|
||||
"share-local-video-file": "Stream Media File",
|
||||
"share-website-iframe": "Share Website",
|
||||
"run-a-speed-test": "Run a Speed Test",
|
||||
"read-the-guides": "Browse the Guides",
|
||||
"info-blob": "\n<h2>Cosa è OBS.Ninja</h2><br>\n<li>100% <b>free</b>; nessun download; nessuna raccolta di dati personali; nessun accesso</li>\n<li>Porta video dal tuo smartphone, computer o amici direttamente nel tuo flusso video OBS</li>\n<li>Utilizziamo una tecnologia di inoltro peer-to-peer all'avanguardia che offre privacy e latenza ultra bassa</li>\n<br>\n<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demoing è presente</a> </li>",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"forward-to-room": "Transfer",
|
||||
"record": "Registra",
|
||||
"disconnect-guest": "Hangup",
|
||||
"mute": "Muta",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Advanced",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "Apri in una nuova Tab",
|
||||
"copy-to-clipboard": "Copia negli appunti",
|
||||
"click-for-quick-room-overview": "❔ Fare clic qui per una rapida panoramica e assistenza ",
|
||||
"push-to-talk-enable": "🔊 Abilita Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Benvenuto. Questa è la sala di controllo per la chat di gruppo. Ci sono diverse cose per cui puoi usare questa stanza:<br><br>\t<li>Puoi ospitare una chat di gruppo con gli amici utilizzando una stanza. Condividi il link blu per invitare gli ospiti che si uniranno automaticamente alla chat.</li>\t<li>Una sala per gruppi può ospitare da 4 a 30 persone, a seconda di numerosi fattori, tra cui CPU e larghezza di banda disponibile di tutti gli ospiti nella stanza.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tBenvenuto in OBS.Ninja! Da qui puoi inviare messaggi di testo direttamente ai peer connessi.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tI nomi che identificano i peer connessi saranno una funzionalità in una prossima versione..\n\t\t\t\t",
|
||||
"send-chat": "Invia",
|
||||
"available-languages": "Lingue Disponibili:",
|
||||
"add-more-here": "Aggiungi altro qui!",
|
||||
"waiting-for-camera-to-load": "waiting-for-camera-to-load",
|
||||
"start": "START",
|
||||
"share-your-mic": "Share your microphone",
|
||||
"share-your-camera": "Share your Camera",
|
||||
"share-your-screen": "Share your Screen",
|
||||
"join-room-with-mic": "Join room with Microphone",
|
||||
"share-screen-with-room": "Share-screen with Room",
|
||||
"join-room-with-camera": "Join room with Camera",
|
||||
"click-start-to-join": "Click Start to Join",
|
||||
"guests-only-see-director": "Guests can only see the Director's Video",
|
||||
"default-codec-select": "Preferred Video Codec: ",
|
||||
"obfuscate_url": "Obfuscate the Invite URL",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings"
|
||||
},
|
||||
"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",
|
||||
"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-chat-message-to-send-here": "Enter chat message to send here"
|
||||
}
|
||||
}
|
||||
@@ -1,68 +1,192 @@
|
||||
{
|
||||
"GO": "GO",
|
||||
"add-group-chat": "OBSにグループミーティングを追加",
|
||||
"add-to-group": "グループシーンに追加",
|
||||
"add-your-camera": "OBSに自分のカメラを追加",
|
||||
"added-notes": "<i><u>追加情報:<u></u></u></i><li><u><u>ルーム名を知っている人は誰でもルームに入れるため、ユニークなルーム名にして下さい。</u></u></li><li><u><u>ハードウェア性能にもよりますが、パフォーマンス上の理由から、4人以上のルーム利用はおすすめできません。</u></u></li><li><u><u>iOSデバイスでは、2人以下のグループサイズに制限されます。これはハードウェアによる制限です。</u></u></li><li><u><u>\"Recording\" オプションは実験的な新機能です。</u></u></li><li><u><u>ビデオフィードを「グループシーン」に表示するには、そこに「追加」する必要があります。</u></u></li><li><u><u>ゲストのビューに、新しい「強化されたフルスクリーン」ボタンが追加されました。</u></u></li>",
|
||||
"advanced-paramaters": "高度なパラメータ",
|
||||
"audio-sources": "音声ソース",
|
||||
"back": "戻る",
|
||||
"balanced": "バランス",
|
||||
"copy-this-url": "このURLをOBSの「ブラウザソース」に追加",
|
||||
"copy-to-clipboard": "クリップボードにコピー",
|
||||
"create-reusable-invite": "再利用可能な招待リンクを作成",
|
||||
"enable-stereo-and-pro": "ステレオ・プロHDオーディオを有効にする",
|
||||
"enter-the-rooms-control": "ルーム管理センターに入る",
|
||||
"force-vp9-video-codec": "VP9ビデオコーデックの使用を強制 (less artifacting)",
|
||||
"generate-invite-link": "招待リンクを作成",
|
||||
"here-you-can-pre-generate": "再利用可能なブラウザソースリンクと、関連するゲスト招待リンクを、事前に作成できます。",
|
||||
"high-security-mode": "高セキュリティモード",
|
||||
"info-blob": "<h2>OBS.Ninja とは?</h2><br><li>超低遅延でプライバシーが保護された、ビデオストリームサービスです。</li><li>ライブ配信でゲストとの対話を配信したり、少人数のグループミーティングにも利用できます。</li><li>100% <strong>無料</strong>、ダウンロード不要、サインイン不要、個人情報を一切収集しません。</li><li>あなたや友人のスマートフォン、タブレット、PCなどから、直接OBSビデオストリームに映像を取り込めます。</li><li>プライバシーと超低遅延を実現するために、最先端のピアツーピア転送技術を使用しています。</li><br><li>YouTube: <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">デモ動画を見る</a> </li><li>Github: <i class=\"fa fa-github\" aria-hidden=\"true\"></i> <a href=\"https://github.com/steveseguin/obsninja\">https://github.com/steveseguin/obsninja</a> </li><br><i><font style=\"color:red\">既知の問題点:</font></i><br><li><i class=\"fa fa-apple\" aria-hidden=\"true\"></i>MacOSユーザーは、OBS v23を使用するか、OBS v25でChromeブラウザーを<i>ウィンドウキャプチャー</i>する必要があります。</li><li>一部のユーザーは「ピクセレーション」問題が発生します。その場合、URLパラメータに <code>&codec=vp9</code> を追加して下さい。</li><br><i>フォーラムや連絡先:</i><br><li>ヘルプや高度な情報は、<a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a><i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"> でチェックして下さい。</i></li><li><i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"><a href=\"https://discord.gg/EksyhGA\">Discord</a> もあります。</i></li><li><i class=\"fa fa-reddit-alien\" aria-hidden=\"true\">メール <a href=\"mailto:steve@seguin.email\">steve@seguin.email</a> でも連絡できます。</i></li>",
|
||||
"joining-room": "ルームに参加しています",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"max-resolution": "最大解像度",
|
||||
"mute": "ミュート",
|
||||
"no-audio": "音声なし",
|
||||
"note-share-audio": "<strong>注意</strong>: Chromeの「音声の共有」を必ずクリックして下さい。<br>(Firefox は音声の共有をサポートしていません)",
|
||||
"open-in-new-tab": "新しいタブで開く",
|
||||
"record": "録画",
|
||||
"remote-control-for-obs": "OBS用リモートコントロール",
|
||||
"remote-screenshare-obs": "OBSに画面共有を追加",
|
||||
"room-name": "ルーム名",
|
||||
"rooms-allow-for": "ルームを利用すると、グループミーティングや複数ストリームを、一つの画面で管理できます。",
|
||||
"select-audio-source": "音声ソースを選択",
|
||||
"select-audio-video": "映像/音声ソースを下から選んで下さい",
|
||||
"select-screen-to-share": "共有する画面を選択",
|
||||
"show-tips": "ヒントを表示",
|
||||
"smooth-cool": "スムーズ&クール",
|
||||
"unlock-video-bitrate": "ビデオビットレートをアンロック (20mbps)",
|
||||
"video-source": "映像ソース",
|
||||
"volume": "ボリューム",
|
||||
"you-are-in-the-control-center": "ルーム管理センター",
|
||||
"waiting-for-camera": "カメラがロードされるのを待っています...",
|
||||
"video-resolution": "ビデオ解像度: ",
|
||||
"hide-screen-share": "画面共有オプションを非表示",
|
||||
"allow-remote-control": "カメラズームのリモートコントロール (android)",
|
||||
"add-the-guest-to-a-room": "ゲストをルームに追加:",
|
||||
"invite-group-chat-type": "このルームのゲストは、次のことができる:",
|
||||
"can-see-and-hear": "グループミーティングの映像・音声を視聴できる",
|
||||
"can-hear-only": "グループミーティングの音声のみ聞ける",
|
||||
"cant-see-or-hear": "グループミーティングの映像・音声を視聴できない",
|
||||
"password-input-field": "Password",
|
||||
"select-output-source": "音声出力先:",
|
||||
"add-a-password-to-stream": "パスワードを追加:",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Available Languages:",
|
||||
"add-more-here": "Add More Here!",
|
||||
"invite-users-to-join": "Invites users to join the group and broadcast their feed to it. These users will see every feed in the room.",
|
||||
"link-to-invite-camera": "Link to invite users to broadcast their feeds to the group. These users will not see or hear any feed from the group.",
|
||||
"this-is-obs-browser-source-link": "This is an OBS Browser Source link that is empty by default. Videos in the room can be manually added to this scene.",
|
||||
"this-is-obs-browser-souce-link-auto": "Also an OBS Browser Source link. All guest videos in this group chat room will automatically be added into this scene.",
|
||||
"click-for-quick-room-overview": "❔ Click Here for a quick overview and help",
|
||||
"push-to-talk-enable": "🔊 Enable Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"guest-will-appaer-here-on-join": "(A video will appear here when a guest joins)",
|
||||
"SOLO-LINK": "SOLO LINK for OBS:"
|
||||
"titles": {
|
||||
"toggle-the-chat": "Toggle the Chat",
|
||||
"mute-the-speaker": "Mute the Speaker",
|
||||
"mute-the-mic": "Mute the Mic",
|
||||
"disable-the-camera": "Disable the Camera",
|
||||
"settings": "Settings",
|
||||
"hangup-the-call": "Hangup the Call",
|
||||
"show-help-info": "Show Help Info",
|
||||
"language-options": "Language Options",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
|
||||
"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",
|
||||
"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",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Hold CTRL (or CMD) to select multiple files",
|
||||
"enter-an-https-url": "Enter an HTTPS URL",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Forward user to another room. They can always return.",
|
||||
"start-recording-this-stream-experimental-views": "Start Recording this stream. *experimental*' views",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Change this Audio's volume in all remote '&scene' views",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Remotely Mute this Audio in all remote '&scene' views",
|
||||
"disable-video-preview": "Disable Video Preview",
|
||||
"low-quality-preview": "Low-Quality Preview",
|
||||
"high-quality-preview": "High-Quality Preview",
|
||||
"send-direct-message": "Send Direct Message",
|
||||
"advanced-settings-and-remote-control": "Advanced Settings and Remote Control",
|
||||
"toggle-voice-chat-with-this-guest": "Toggle Voice Chat with this Guest",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"copy-this-url": "このURLをOBSの「ブラウザソース」に追加",
|
||||
"you-are-in-the-control-center": "ルーム管理センター",
|
||||
"joining-room": "ルームに参加しています",
|
||||
"add-group-chat": "OBSにグループミーティングを追加",
|
||||
"rooms-allow-for": "ルームを利用すると、グループミーティングや複数ストリームを、一つの画面で管理できます。",
|
||||
"room-name": "ルーム名",
|
||||
"password-input-field": "Password",
|
||||
"enter-the-rooms-control": "ルーム管理センターに入る",
|
||||
"show-tips": "ヒントを表示",
|
||||
"added-notes": "<i><u>追加情報:<u></u></u></i><li><u><u>ルーム名を知っている人は誰でもルームに入れるため、ユニークなルーム名にして下さい。</u></u></li><li><u><u>ハードウェア性能にもよりますが、パフォーマンス上の理由から、4人以上のルーム利用はおすすめできません。</u></u></li><li><u><u>iOSデバイスでは、2人以下のグループサイズに制限されます。これはハードウェアによる制限です。</u></u></li><li><u><u>\"Recording\" オプションは実験的な新機能です。</u></u></li><li><u><u>ビデオフィードを「グループシーン」に表示するには、そこに「追加」する必要があります。</u></u></li><li><u><u>ゲストのビューに、新しい「強化されたフルスクリーン」ボタンが追加されました。</u></u></li>",
|
||||
"back": "戻る",
|
||||
"add-your-camera": "OBSに自分のカメラを追加",
|
||||
"ask-for-permissions": "Allow Access to Camera/Microphone",
|
||||
"waiting-for-camera": "カメラがロードされるのを待っています...",
|
||||
"video-source": "映像ソース",
|
||||
"max-resolution": "最大解像度",
|
||||
"balanced": "バランス",
|
||||
"smooth-cool": "スムーズ&クール",
|
||||
"select-audio-source": "音声ソースを選択",
|
||||
"no-audio": "音声なし",
|
||||
"select-output-source": "音声出力先:",
|
||||
"remote-screenshare-obs": "OBSに画面共有を追加",
|
||||
"note-share-audio": "<strong>注意</strong>: Chromeの「音声の共有」を必ずクリックして下さい。<br>(Firefox は音声の共有をサポートしていません)",
|
||||
"select-screen-to-share": "共有する画面を選択",
|
||||
"audio-sources": "音声ソース",
|
||||
"create-reusable-invite": "再利用可能な招待リンクを作成",
|
||||
"here-you-can-pre-generate": "再利用可能なブラウザソースリンクと、関連するゲスト招待リンクを、事前に作成できます。",
|
||||
"generate-invite-link": "招待リンクを作成",
|
||||
"advanced-paramaters": "高度なパラメータ",
|
||||
"unlock-video-bitrate": "ビデオビットレートをアンロック (20mbps)",
|
||||
"force-vp9-video-codec": "VP9ビデオコーデックの使用を強制 (less artifacting)",
|
||||
"enable-stereo-and-pro": "ステレオ・プロHDオーディオを有効にする",
|
||||
"video-resolution": "ビデオ解像度: ",
|
||||
"hide-mic-selection": "Force Default Microphone",
|
||||
"hide-screen-share": "画面共有オプションを非表示",
|
||||
"allow-remote-control": "カメラズームのリモートコントロール (android)",
|
||||
"add-a-password-to-stream": "パスワードを追加:",
|
||||
"add-the-guest-to-a-room": "ゲストをルームに追加:",
|
||||
"invite-group-chat-type": "このルームのゲストは、次のことができる:",
|
||||
"can-see-and-hear": "グループミーティングの映像・音声を視聴できる",
|
||||
"can-hear-only": "グループミーティングの音声のみ聞ける",
|
||||
"cant-see-or-hear": "グループミーティングの映像・音声を視聴できない",
|
||||
"share-local-video-file": "Stream Media File",
|
||||
"share-website-iframe": "Share Website",
|
||||
"run-a-speed-test": "Run a Speed Test",
|
||||
"read-the-guides": "Browse the Guides",
|
||||
"info-blob": "<h2>OBS.Ninja とは?</h2><br><li>超低遅延でプライバシーが保護された、ビデオストリームサービスです。</li><li>ライブ配信でゲストとの対話を配信したり、少人数のグループミーティングにも利用できます。</li><li>100% <strong>無料</strong>、ダウンロード不要、サインイン不要、個人情報を一切収集しません。</li><li>あなたや友人のスマートフォン、タブレット、PCなどから、直接OBSビデオストリームに映像を取り込めます。</li><li>プライバシーと超低遅延を実現するために、最先端のピアツーピア転送技術を使用しています。</li><br><li>YouTube: <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">デモ動画を見る</a> </li>",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"forward-to-room": "Transfer",
|
||||
"record": "録画",
|
||||
"disconnect-guest": "Hangup",
|
||||
"mute": "ミュート",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Advanced",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "新しいタブで開く",
|
||||
"copy-to-clipboard": "クリップボードにコピー",
|
||||
"click-for-quick-room-overview": "❔ Click Here for a quick overview and help",
|
||||
"push-to-talk-enable": "🔊 Enable Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Available Languages:",
|
||||
"add-more-here": "Add More Here!",
|
||||
"waiting-for-camera-to-load": "waiting-for-camera-to-load",
|
||||
"start": "START",
|
||||
"share-your-mic": "Share your microphone",
|
||||
"share-your-camera": "Share your Camera",
|
||||
"share-your-screen": "Share your Screen",
|
||||
"join-room-with-mic": "Join room with Microphone",
|
||||
"share-screen-with-room": "Share-screen with Room",
|
||||
"join-room-with-camera": "Join room with Camera",
|
||||
"click-start-to-join": "Click Start to Join",
|
||||
"guests-only-see-director": "Guests can only see the Director's Video",
|
||||
"default-codec-select": "Preferred Video Codec: ",
|
||||
"obfuscate_url": "Obfuscate the Invite URL",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings"
|
||||
},
|
||||
"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",
|
||||
"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-chat-message-to-send-here": "Enter chat message to send here"
|
||||
}
|
||||
}
|
||||
@@ -1,68 +1,204 @@
|
||||
{
|
||||
"GO": "START",
|
||||
"add-group-chat": "Voeg Groepsgesprek toe",
|
||||
"add-to-group": "Voeg toe aan Groepsscene",
|
||||
"add-your-camera": "Voeg je Camera toe",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Notities:</i></u>\n\t\t\t\t<li>Iedereen kan de kamer binnenkomen als ze de naam kennen, dus hou hem uniek</li>\n\t\t\t\t<li>Meer dan vier (4) mensen in een kamer is niet aan te raden vanwege prestatie redenen, maar is afhankelijk van uw hardware.</li>\n\t\t\t\t<li>Bij iOS apparaten is de video alleen zichtbaar voor de regiseur. Dit is een hardware beperking.</li>\n\t\t\t\t<li>De \"Opname\" optie is nieuw en is experimenteel.</li>\n\t\t\t\t<li>U moet een video stroom \"Toevoegen\" aan de \"Groeps Scene\" om het hier te tonen.</li>\n\t\t\t\t<li>Er is een nieuwe \"uitgebreid volledig scherm\" knop toegevoegd aan het Gasten scherm.</li>\n\t\t\t\t",
|
||||
"advanced-paramaters": "Geavanceerde Parameters",
|
||||
"audio-sources": "Geluidsbronnen",
|
||||
"back": "Terug",
|
||||
"balanced": "Gebalanceerd",
|
||||
"copy-this-url": "Deelbare Link naar deze video",
|
||||
"copy-to-clipboard": "Kopiëren naar Clipboard",
|
||||
"create-reusable-invite": "Maak Herbruikbare Uitnodiging",
|
||||
"enable-stereo-and-pro": "Activeer Stereo en Pro HD Geluid",
|
||||
"enter-the-rooms-control": "Ga de Kamer's Controle Centrum in",
|
||||
"force-vp9-video-codec": "Forceer VP9 Video Codec (minder verstoring)",
|
||||
"generate-invite-link": "GENEREER DE UITNODIGINGS LINK",
|
||||
"here-you-can-pre-generate": "Hier kan u vooraf een herbruikbare weergave link en een bijbehorende gast uitnodigingslink aanmaken.",
|
||||
"high-security-mode": "Hoge Beveilingsstand",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Wat is OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b>gratis</b>; geen downloads; geen persoonlijke gegevens verzamelen; niet inloggen</li>\n\t\t\t\t\t\t<li>Breng video van uw smartphone, laptop, computer, of van uw vrienden direct in uw OBS video stroom</li>\n\t\t\t\t\t\t<li>We gebruiken vooruitstrevende Peer-to-Peer technologie die privacy en ultra lage vertraging biedt</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demonstratie</a> </li>\n\t\t\t\t\t\t<li>Code is beschikbaar op: <i class=\"fa fa-github\" aria-hidden=\"true\"></i> <a href=\"https://github.com/steveseguin/obsninja\">https://github.com/steveseguin/obsninja</a> </li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<i><font style=\"color:red\">Bekende problemen:</font></i><br>\n\n\t\t\t\t\t\t<li><i class=\"fa fa-apple\" aria-hidden=\"true\"></i> MacOS gebruikers moeten OBS v23 gebruiken of terugvallen op <i>Window Capturing</i> van een Chrome Browser met OBS v25</li>\n\t\t\t\t\t\t<li>Sommige gebruikers kunnen \"pixelatie\" problemen met videos ervaren. Voeg dan de URL parameter <b>&codec=vp9</b> toe aan de OBS Links om dit te corrigeren.</li>\n\t<h3><i>Kijk ook op <a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a> <i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"></i> voor hulp en uitgebreide informatie. Ik zit ook op <a href=\"https://discord.gg/EksyhGA\">Discord</a> en u kan me mailen op steve@seguin.email</i></h3>\n\t\t\t\t\t",
|
||||
"joining-room": "U neemt deel aan de kamer",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja",
|
||||
"max-resolution": "Max Resolutie",
|
||||
"mute": "Demp",
|
||||
"no-audio": "Geen Geluid",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>Noot</b>: Vergeet niet op \"Deel geluid\" te klikken in Chrome.<br>(Firefox ondersteung geen geluid delen.)",
|
||||
"open-in-new-tab": "Open in nieuwe Tab",
|
||||
"record": "Neem op",
|
||||
"remote-control-for-obs": "Afstandsbediening",
|
||||
"remote-screenshare-obs": "Deel externe scherm",
|
||||
"room-name": "Kamer Naam",
|
||||
"rooms-allow-for": "Kamers maken eenvoudige groepsgespreken en geavanceerd beheer van meerdere streams tegelijk mogelijk.",
|
||||
"select-audio-source": "Selecteer Geluidsbronnen",
|
||||
"select-audio-video": "Selecteer de geluid/video bron hieronder",
|
||||
"select-screen-to-share": "SELECTEER SCHERM OM TE DELEN",
|
||||
"show-tips": "Toon me wat tips..",
|
||||
"smooth-cool": "Soepel en Koel",
|
||||
"unlock-video-bitrate": "Ontsluit Video Bitrate (20mbps)",
|
||||
"video-source": "Video bron",
|
||||
"volume": "Volume",
|
||||
"you-are-in-the-control-center": "U bent in het kamer beheers centrum",
|
||||
"waiting-for-camera": "Wachten op het Laden van de Camera",
|
||||
"video-resolution": "Video Resolutie: ",
|
||||
"hide-screen-share": "Verberg Scherm Delen Optie",
|
||||
"allow-remote-control": "Afstandsbediening Camera Zoom (android)",
|
||||
"add-the-guest-to-a-room": " Voeg de gast toe aan een kamer:",
|
||||
"invite-group-chat-type": "Deze kamer gast kan:",
|
||||
"can-see-and-hear": "Het groepsgesprek zien en horen",
|
||||
"can-hear-only": "Alleen het groepsgesprek horen",
|
||||
"cant-see-or-hear": "Het groepsgesprek niet horen en zien",
|
||||
"password-input-field": "Password",
|
||||
"select-output-source": " Audio Output Destination: \n\t\t\t\t\t",
|
||||
"add-a-password-to-stream": " Add a password:",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Send",
|
||||
"available-languages": "Available Languages:",
|
||||
"add-more-here": "Add More Here!",
|
||||
"invite-users-to-join": "Invites users to join the group and broadcast their feed to it. These users will see every feed in the room.",
|
||||
"link-to-invite-camera": "Link to invite users to broadcast their feeds to the group. These users will not see or hear any feed from the group.",
|
||||
"this-is-obs-browser-source-link": "This is an OBS Browser Source link that is empty by default. Videos in the room can be manually added to this scene.",
|
||||
"this-is-obs-browser-souce-link-auto": "Also an OBS Browser Source link. All guest videos in this group chat room will automatically be added into this scene.",
|
||||
"click-for-quick-room-overview": "❔ Click Here for a quick overview and help",
|
||||
"push-to-talk-enable": "🔊 Enable Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"guest-will-appaer-here-on-join": "(A video will appear here when a guest joins)",
|
||||
"SOLO-LINK": "SOLO LINK for OBS:"
|
||||
}
|
||||
"titles": {
|
||||
"toggle-the-chat": "Chat aan/uit",
|
||||
"mute-the-speaker": "Demp de sSreker",
|
||||
"mute-the-mic": "Demp de Mic",
|
||||
"disable-the-camera": "Camera uitzetten",
|
||||
"settings": "Instellingen",
|
||||
"hangup-the-call": "Gesprek ophangen",
|
||||
"show-help-info": "Geef Help weer",
|
||||
"language-options": "Taal opties",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Houd CTRL (command) vast om meerdere te selecteren",
|
||||
"ideal-for-1080p60-gaming-if-your-computer-and-upload-are-up-for-it": "Ideaal voor 1080p60 game streaming, als de pc krachtig genoeg is",
|
||||
"better-video-compression-and-quality-at-the-cost-of-increased-cpu-encoding-load": "Betere videocompressie en kwaliteit ten koste van verhoogde CPU encodering belasting",
|
||||
"disable-digital-audio-effects-and-increase-audio-bitrate": "Schakel digitale audio effecten uit en verhoogt audio bitrate",
|
||||
"the-guest-will-not-have-a-choice-over-audio-options": "Gasten kunnen audio opties niet wijzigen",
|
||||
"the-guest-will-only-be-able-to-select-their-webcam-as-an-option": "Gast kan alleen een webcam selecteren",
|
||||
"hold-ctrl-and-the-mouse-wheel-to-zoom-in-and-out-remotely-of-compatible-video-streams": "Scroll in en uit door CTRL vast te houden en te scrollen met d emuis (wanneer mogelijk)",
|
||||
"add-a-password-to-make-the-stream-inaccessible-to-those-without-the-password": "Voeg een wachtwoord toe en eis deze voor toegang",
|
||||
"add-the-guest-to-a-group-chat-room-it-will-be-created-automatically-if-needed-": "Gast toevoegen aan groepschat.(Word automatisch gemaakt)",
|
||||
"customize-the-room-settings-for-this-guest": "Geef (kamer) instellingen op voor deze gast",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Meerdere selecteren? CTRL vasthouden tijdens selecteren",
|
||||
"enter-an-https-url": "Voer een HTTPS URL in",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Stuur gast door naar andere room, kan terugkeren.",
|
||||
"start-recording-this-stream-experimental-views": "Stream opnemen starten. *experimenteel*' views",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Forceer einde verbinding, kan wel opnieuw verbinden.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Change this Audio's volume in all remote '&scene' views",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Remotely Mute this Audio in all remote '&scene' views",
|
||||
"disable-video-preview": "Schakel Video Preview uit",
|
||||
"low-quality-preview": "Lage kwaliteit Preview",
|
||||
"high-quality-preview": "Hoge kwaliteit Preview",
|
||||
"send-direct-message": "Stuur een Direct Message",
|
||||
"advanced-settings-and-remote-control": "Geavanceerde instellingen en Remote Conntrol",
|
||||
"toggle-voice-chat-with-this-guest": "Schakel Voice chat aan/uit met deze gast",
|
||||
"join-by-room-name-here": "Voer een naam in voor snelle toegang",
|
||||
"join-room": "Ga de kamer in",
|
||||
"share-a-screen-with-others": "Deel je scherm met anderen",
|
||||
"alert-the-host-you-want-to-speak": "Geef de director een seintje",
|
||||
"record-your-stream-to-disk": "Streamopname naar lokale opslag",
|
||||
"cancel-the-director-s-video-audio": "Annuleer de Director zijn Video/Audio",
|
||||
"submit-any-error-logs": "Verzend foutmeldingslog",
|
||||
"add-group-chat-to-obs": "Voeg een groepschat toe aan OBS",
|
||||
"for-large-group-rooms-this-option-can-reduce-the-load-on-remote-guests-substantially": "Bij grotere groepen kan deze optie voor een lagere belasting aan gast zijde zorgen",
|
||||
"which-video-codec-would-you-want-used-by-default-": "Welke video codec wil je standaard gebruiken?",
|
||||
"you-ll-enter-as-the-room-s-director": "Je gaat de kamer binnen als Director",
|
||||
"add-your-camera-to-obs": "Voeg je camera aan OBS toe",
|
||||
"remote-screenshare-into-obs": "Schermdelen naar OBS",
|
||||
"create-reusable-invite": "creëer herbruikbaare link",
|
||||
"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.",
|
||||
"more-options": "Meer opties",
|
||||
"youtube-video-demoing-how-to-do-this": "Youtube video voorbeelden, hoe dit te doen!",
|
||||
"invite-a-guest-or-camera-source-to-publish-into-the-group-room": "Vraag een gast zijn beeld te publiceren in de kamer",
|
||||
"if-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "Wanneer deze optie aan staat kan de gast niemand zien of horen",
|
||||
"use-this-link-in-the-obs-browser-source-to-capture-the-video-or-audio": "Gebruik deze link als OBS Browser source om video/audio binnen te halen",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "Wanneer deze optie aanstaat moet je video handmatig toevoegen aan een scene om hem te zien.",
|
||||
"disables-echo-cancellation-and-improves-audio-quality": "Schakelt Echo Cancellation uit en verbetert audio kwaliteit",
|
||||
"audio-only-sources-are-visually-hidden-from-scenes": "Bronnen met alleen audio niet laten zien in de scene",
|
||||
"guest-will-be-prompted-to-enter-a-display-name": "Vraag gasten om een naam om weer te geven",
|
||||
"display-names-will-be-shown-in-the-bottom-left-corner-of-videos": "Namen van gasten komen links onder in de hoek van de video",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Vraag om 1080p60 i.p.v. 720p60, wanneer mogelijk",
|
||||
"the-default-microphone-will-be-pre-selected-for-the-guest": "Voor deze gast standaard microfoon selecteren vooraf",
|
||||
"the-default-camera-device-will-selected-automatically": "Standaard camera word automatisch geselecteerd",
|
||||
"the-guest-won-t-have-access-to-changing-camera-settings-or-screenshare": "De gast kan hierdoor niet wisselen tussen camera en scherm delen",
|
||||
"the-guest-will-not-see-their-own-self-preview-after-joining": "Hierdoor zit de gast zichzelf niet nadat deze het gesprek is binnengekomen",
|
||||
"guests-will-have-an-option-to-poke-the-director-by-pressing-a-button": "Gasten krijgen een optie de director een verzoek tot aandacht te sturen",
|
||||
"add-an-audio-compressor-to-the-guest-s-microphone": "Voeg een audio compressor toe aan de gast zijn microfoon",
|
||||
"add-an-equalizer-to-the-guest-s-microphone-that-the-director-can-control": "Voeg een audio equalizer toe aan gast, onder controle van director",
|
||||
"the-guest-can-only-see-the-director-s-video-if-provided": "Gat kan alleen de director zien,wanneer deze aanwezig is",
|
||||
"the-guest-s-microphone-will-be-muted-on-joining-they-can-unmute-themselves-": "Microfoon van gast standaard uit, kunnen zichzelf wel aanzetten",
|
||||
"have-the-guest-join-muted-so-only-the-director-can-unmute-the-guest-": "Microfoon van gast standaard uit, alleen director kan deze aanzetten",
|
||||
"make-the-invite-url-encoded-so-parameters-are-harder-to-tinker-with-by-guests": "Encodeer de invitatie URL. Om aanpassingen door gast moeilijker te maken",
|
||||
"move-the-user-to-another-room-controlled-by-another-director": "Verplaats gast naar andere room. Beheerd door een andere director",
|
||||
"send-a-direct-message-to-this-user-": "Stuur een Direct Message naar deze gast",
|
||||
"remotely-change-the-volume-of-this-guest": "Op afstand veranderen volume gast",
|
||||
"mute-this-guest-everywhere": "Deze gast niet meer hoorbaar maken overal",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start opname van de remote audio/video stream op de lokale drive *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "Zet opname aan bij gasten zelf op lokale schijf van gast *experimental*",
|
||||
"shift-this-video-down-in-order": "Schuif deze video lager in orde",
|
||||
"current-index-order-of-this-video": "Huidige index plek van deze video",
|
||||
"shift-this-video-up-in-order": "Schuif deze video hoger in orde",
|
||||
"remote-audio-settings": "Audio instellingen op afstand",
|
||||
"advanced-video-settings": "Geavanceerde instellingen van video",
|
||||
"activate-or-reload-this-video-device-": "Activeer of herlaadt deze video bron.",
|
||||
"create-a-seconary-stream": "Create a Seconary Stream",
|
||||
"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",
|
||||
"start-streaming": "start streaming",
|
||||
"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.",
|
||||
"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.",
|
||||
"toggle-solo-voice-chat": "Toggle Solo Voice Chat",
|
||||
"toggle-the-remote-guest-s-speaker-output": "Toggle the remote guest's speaker output",
|
||||
"toggle-the-remote-guest-s-display-output": "Toggle the remote guest's display output"
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja",
|
||||
"copy-this-url": "Deelbare Link naar deze video",
|
||||
"you-are-in-the-control-center": "U bent in het kamer beheers centrum",
|
||||
"joining-room": "U neemt deel aan de kamer",
|
||||
"add-group-chat": "Voeg Groepsgesprek toe",
|
||||
"rooms-allow-for": "Kamers maken eenvoudige groepsgespreken en geavanceerd beheer van meerdere streams tegelijkertijd mogelijk.",
|
||||
"room-name": "Kamer Naam",
|
||||
"password-input-field": "Password",
|
||||
"enter-the-rooms-control": "Ga de Kamer's Controle Centrum in",
|
||||
"show-tips": "Toon me wat tips..",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Notities:</i></u>\n\t\t\t\t<li>Iedereen kan de kamer binnenkomen als ze de naam kennen, dus hou hem uniek</li>\n\t\t\t\t<li>Meer dan vier (4) mensen in een kamer is niet aan te raden vanwege prestatie redenen, maar is afhankelijk van uw hardware.</li>\n\t\t\t\t<li>Bij iOS apparaten is de video alleen zichtbaar voor de regiseur. Dit is een hardware beperking.</li>\n\t\t\t\t<li>De \"Opname\" optie is nieuw en is experimenteel.</li>\n\t\t\t\t<li>U moet een video stroom \"Toevoegen\" aan de \"Groeps Scene\" om het hier te tonen.</li>\n\t\t\t\t<li>Er is een nieuwe \"uitgebreid volledig scherm\" knop toegevoegd aan het Gasten scherm.</li>\n\t\t\t\t",
|
||||
"back": "Terug",
|
||||
"add-your-camera": "Voeg je Camera toe",
|
||||
"ask-for-permissions": "Geef toestemming voor gebruik Camera/Microfoon",
|
||||
"waiting-for-camera": "Wachten op het Laden van de Camera",
|
||||
"video-source": "Video bron",
|
||||
"max-resolution": "Max Resolutie",
|
||||
"balanced": "Gebalanceerd",
|
||||
"smooth-cool": "Soepel en Koel",
|
||||
"select-audio-source": "Selecteer Geluidsbronnen",
|
||||
"no-audio": "Geen Geluid",
|
||||
"select-output-source": " Audio Output Destination: \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "Deel externe scherm",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>Noot</b>: Vergeet niet op \"Deel geluid\" te klikken in Chrome.<br>(Firefox ondersteung geen geluid delen.)",
|
||||
"select-screen-to-share": "SELECTEER SCHERM OM TE DELEN",
|
||||
"audio-sources": "Geluidsbronnen",
|
||||
"create-reusable-invite": "Maak Herbruikbare Uitnodiging",
|
||||
"here-you-can-pre-generate": "Hier kan u vooraf een herbruikbare weergave link en een bijbehorende gast uitnodigingslink aanmaken.",
|
||||
"generate-invite-link": "GENEREER DE UITNODIGINGS LINK",
|
||||
"advanced-paramaters": "Geavanceerde Parameters",
|
||||
"unlock-video-bitrate": "Ontsluit Video Bitrate (20mbps)",
|
||||
"force-vp9-video-codec": "Forceer VP9 Video Codec (minder verstoring)",
|
||||
"enable-stereo-and-pro": "Activeer Stereo en Pro HD Geluid",
|
||||
"video-resolution": "Video Resolutie: ",
|
||||
"hide-mic-selection": "Force Default Microphone",
|
||||
"hide-screen-share": "Verberg Scherm Delen Optie",
|
||||
"allow-remote-control": "Afstandsbediening Camera Zoom (android)",
|
||||
"add-a-password-to-stream": " Add a password:",
|
||||
"add-the-guest-to-a-room": " Voeg de gast toe aan een kamer:",
|
||||
"invite-group-chat-type": "Deze kamer gast kan:",
|
||||
"can-see-and-hear": "Het groepsgesprek zien en horen",
|
||||
"can-hear-only": "Alleen het groepsgesprek horen",
|
||||
"cant-see-or-hear": "Het groepsgesprek niet horen en zien",
|
||||
"share-local-video-file": "Stream Media File",
|
||||
"share-website-iframe": "Share Website",
|
||||
"run-a-speed-test": "Run a Speed Test",
|
||||
"read-the-guides": "Browse the Guides",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Wat is OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b>gratis</b>; geen downloads; geen persoonlijke gegevens verzamelen; niet inloggen</li>\n\t\t\t\t\t\t<li>Breng video van uw smartphone, laptop, computer, of van uw vrienden direct in uw OBS video stroom</li>\n\t\t\t\t\t\t<li>We gebruiken vooruitstrevende Peer-to-Peer technologie die privacy en ultra lage vertraging biedt</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demonstratie</a> </li>\n\t\t\t\t\t\t",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"forward-to-room": "Transfer",
|
||||
"record": "Neem op",
|
||||
"disconnect-guest": "Hangup",
|
||||
"mute": "Demp",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Advanced",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "Open in nieuwe Tab",
|
||||
"copy-to-clipboard": "Kopiëren naar Clipboard",
|
||||
"click-for-quick-room-overview": "❔ Click Here for a quick overview and help",
|
||||
"push-to-talk-enable": "🔊 Enable Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Verstuur",
|
||||
"available-languages": "Beschikbare talen:",
|
||||
"add-more-here": "Voer hier meer toe!",
|
||||
"waiting-for-camera-to-load": "Wachten tot camera geladen is",
|
||||
"start": "START",
|
||||
"share-your-mic": "Deel je microfoon",
|
||||
"share-your-camera": "Deel je camera",
|
||||
"share-your-screen": "Deel je scherm",
|
||||
"join-room-with-mic": "Ga de kamer binnen met microfoon",
|
||||
"share-screen-with-room": "Deel je scherm met de kamer",
|
||||
"join-room-with-camera": "Ga de kamer binnen met camera",
|
||||
"click-start-to-join": "Druk op start om erin te gaan",
|
||||
"guests-only-see-director": "Gasten kunnen alleen de directors video zien",
|
||||
"default-codec-select": "Geprefereerde Video Codec: ",
|
||||
"obfuscate_url": "Verhul originele uitnodigingslink",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Gasten kunnen de link gebruiken om de kamer binnen te gaan",
|
||||
"this-is-obs-browser-source-link": "Gebruik deze link om de video mix te gebruiken in OBS of andere studio software",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Lokale opname",
|
||||
"record-remote": " Opname remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio instellingen",
|
||||
"scenes-can-see-director": "Director will also be a performer",
|
||||
"toggle-remote-speaker": "Deafen Guest",
|
||||
"toggle-remote-display": "Blind Guest"
|
||||
},
|
||||
"placeholders": {
|
||||
"join-by-room-name-here": "Ga binnen met een kamer naam",
|
||||
"enter-a-room-name-here": "Geef hier een kamer naam op",
|
||||
"optional-room-password-here": "Optionele wachtwoord voor kamer",
|
||||
"give-this-media-source-a-name-optional-": "Geef de media bron een naam(optioneel)",
|
||||
"add-an-optional-password": "Voeg optioneel wachtwoord toe",
|
||||
"enter-room-name-here": "Geef hier de kamer naam op",
|
||||
"enter-chat-message-to-send-here": "Type hier om te chatten"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,51 +1,192 @@
|
||||
{
|
||||
"GO": "OGAY",
|
||||
"add-group-chat": "Addway Oupgray Atchay",
|
||||
"add-to-group": "Addway Oupgray Atchay",
|
||||
"add-your-camera": "Addway ouryay Ameracay",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Addedway Otesnay:</i></u>\n\t\t\t\t<li>Anyoneway ancay enterway away oomray ifway eythay owknay ethay amenay, osay eepkay itway uniqueway</li>\n\t\t\t\t<li>Avinghay oremay anthay ourfay (4) eoplepay inway away oomray isway otnay advisableway ueday otay erformancepay easonsray, utbay itway ependsday onway ouryay ardwarehay.</li>\n\t\t\t\t<li>iOSWAY evicesday illway avehay eirthay ideovay onlyway ebay isiblevay otay ethay irectorday. Isthay isway away ardwarehay imitationlay.</li>\n\t\t\t\t<li>Ethay \"Ecordingray\" optionway isway ewnay andway isway onsideredcay experimentalway.</li>\n\t\t\t\t",
|
||||
"advanced-paramaters": "Advancedway Arameterspay",
|
||||
"audio-sources": "Audioway Ourcessay",
|
||||
"back": "Ackbay",
|
||||
"balanced": "Alancedbay",
|
||||
"copy-this-url": "Arableshay Inklay otay isthay ideovay",
|
||||
"copy-to-clipboard": "Opycay otay Ipboardclay",
|
||||
"create-reusable-invite": "Eatecray Eusableray Inviteway",
|
||||
"enable-stereo-and-pro": "Enableway Ereostay andway Opray HDAY Audioway",
|
||||
"enter-the-rooms-control": "Enterway ethay Oom'sray Ontrolcay Entercay",
|
||||
"force-vp9-video-codec": "Orcefay VPAY9 Ideovay Odeccay (esslay artifactingway)",
|
||||
"generate-invite-link": "ENERATEGAY ETHAY INVITEWAY INKLAY",
|
||||
"here-you-can-pre-generate": "Erehay ouyay ancay epray-enerategay away eusableray iewvay inklay andway away elatedray uestgay inviteway inklay.",
|
||||
"high-security-mode": "Ighhay Ecuritysay Odemay",
|
||||
"info-blob": "",
|
||||
"joining-room": "Ouyay areway oiningjay oomray",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja - Pig Latin",
|
||||
"max-resolution": "Axmay Esolutionray",
|
||||
"mute": "Utemay",
|
||||
"no-audio": "Onay Audioway",
|
||||
"note-share-audio": "\n",
|
||||
"open-in-new-tab": "Openway inway ewnay Abtay",
|
||||
"record": "Ecordray",
|
||||
"remote-control-for-obs": "Emoteray Ontrolcay",
|
||||
"remote-screenshare-obs": "Emoteray Eensharescray",
|
||||
"room-name": "Oomray Amenay",
|
||||
"rooms-allow-for": "Oomsray allowway orfay implifiedsay oupgray-atchay andway ethay advancedway anagementmay ofway ultiplemay eamsstray atway onceway.",
|
||||
"select-audio-source": "Electsay Audioway Ourcessay",
|
||||
"select-audio-video": "Electsay ethay audioway/ideovay ourcesay elowbay",
|
||||
"select-screen-to-share": "ELECTSAY EENSCRAY OTAY ARESHAY",
|
||||
"show-tips": "Owshay emay omesay ipstay..",
|
||||
"smooth-cool": "Oothsmay andway Oolcay",
|
||||
"unlock-video-bitrate": "Unlockway Ideovay Itratebay (20mbpsay)",
|
||||
"video-source": "Ideovay ourcesay",
|
||||
"volume": "Olumevay",
|
||||
"you-are-in-the-control-center": "Ouyay areway inway ethay oom'sray ontrolcay entercay",
|
||||
"waiting-for-camera": "Aitingway orfay Ameracay otay Oadlay",
|
||||
"video-resolution": "Ideovay Esolutionray: ",
|
||||
"hide-screen-share": "Idehay Eensharescray Optionway",
|
||||
"allow-remote-control": "Emoteray Ontrolcay Ameracay Oomzay (androidway)",
|
||||
"add-the-guest-to-a-room": " Addway ethay uestgay otay away oomray:",
|
||||
"invite-group-chat-type": "Isthay oomray uestgay ancay:",
|
||||
"can-see-and-hear": "Ancay eesay andway earhay ethay oupgray atchay",
|
||||
"can-hear-only": "Ancay onlyway earhay ethay oupgray atchay",
|
||||
"cant-see-or-hear": "Annotcay earhay orway eesay ethay oupgray atchay"
|
||||
"titles": {
|
||||
"toggle-the-chat": "Toggle the Chat",
|
||||
"mute-the-speaker": "Mute the Speaker",
|
||||
"mute-the-mic": "Mute the Mic",
|
||||
"disable-the-camera": "Disable the Camera",
|
||||
"settings": "Settings",
|
||||
"hangup-the-call": "Hangup the Call",
|
||||
"show-help-info": "Show Help Info",
|
||||
"language-options": "Language Options",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
|
||||
"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",
|
||||
"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",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Hold CTRL (or CMD) to select multiple files",
|
||||
"enter-an-https-url": "Enter an HTTPS URL",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Forward user to another room. They can always return.",
|
||||
"start-recording-this-stream-experimental-views": "Start Recording this stream. *experimental*' views",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Feasonsray",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Ceasonsray",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Reeasonsray",
|
||||
"disable-video-preview": "Deasonsray",
|
||||
"low-quality-preview": "Leasonsray",
|
||||
"high-quality-preview": "Heasonsray",
|
||||
"send-direct-message": "Seasonsray",
|
||||
"advanced-settings-and-remote-control": "Aeasonsray",
|
||||
"toggle-voice-chat-with-this-guest": "Teasonsray",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS Ninja - Pig Latin",
|
||||
"copy-this-url": "Arableshay Inklay otay isthay ideovay",
|
||||
"you-are-in-the-control-center": "Ouyay areway inway ethay oom'sray ontrolcay entercay",
|
||||
"joining-room": "Ouyay areway oiningjay oomray",
|
||||
"add-group-chat": "Addway Oupgray Atchay",
|
||||
"rooms-allow-for": "Oomsray allowway orfay implifiedsay oupgray-atchay andway ethay advancedway anagementmay ofway ultiplemay eamsstray atway onceway.",
|
||||
"room-name": "Oomray Amenay",
|
||||
"password-input-field": "Password",
|
||||
"enter-the-rooms-control": "Enterway ethay Oom'sray Ontrolcay Entercay",
|
||||
"show-tips": "Owshay emay omesay ipstay..",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Addedway Otesnay:</i></u>\n\t\t\t\t<li>Anyoneway ancay enterway away oomray ifway eythay owknay ethay amenay, osay eepkay itway uniqueway</li>\n\t\t\t\t<li>Avinghay oremay anthay ourfay (4) eoplepay inway away oomray isway otnay advisableway ueday otay erformancepay easonsray, utbay itway ependsday onway ouryay ardwarehay.</li>\n\t\t\t\t<li>iOSWAY evicesday illway avehay eirthay ideovay onlyway ebay isiblevay otay ethay irectorday. Isthay isway away ardwarehay imitationlay.</li>\n\t\t\t\t<li>Ethay \"Ecordingray\" optionway isway ewnay andway isway onsideredcay experimentalway.</li>\n\t\t\t\t",
|
||||
"back": "Ackbay",
|
||||
"add-your-camera": "Addway ouryay Ameracay",
|
||||
"ask-for-permissions": "Aeasonsray",
|
||||
"waiting-for-camera": "Aitingway orfay Ameracay otay Oadlay",
|
||||
"video-source": "Ideovay ourcesay",
|
||||
"max-resolution": "Axmay Esolutionray",
|
||||
"balanced": "Alancedbay",
|
||||
"smooth-cool": "Oothsmay andway Oolcay",
|
||||
"select-audio-source": "Electsay Audioway Ourcessay",
|
||||
"no-audio": "Onay Audioway",
|
||||
"select-output-source": " Audio Output Destination: \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "Emoteray Eensharescray",
|
||||
"note-share-audio": "\n",
|
||||
"select-screen-to-share": "ELECTSAY EENSCRAY OTAY ARESHAY",
|
||||
"audio-sources": "Audioway Ourcessay",
|
||||
"create-reusable-invite": "Eatecray Eusableray Inviteway",
|
||||
"here-you-can-pre-generate": "Erehay ouyay ancay epray-enerategay away eusableray iewvay inklay andway away elatedray uestgay inviteway inklay.",
|
||||
"generate-invite-link": "ENERATEGAY ETHAY INVITEWAY INKLAY",
|
||||
"advanced-paramaters": "Advancedway Arameterspay",
|
||||
"unlock-video-bitrate": "Unlockway Ideovay Itratebay (20mbpsay)",
|
||||
"force-vp9-video-codec": "Orcefay VPAY9 Ideovay Odeccay (esslay artifactingway)",
|
||||
"enable-stereo-and-pro": "Enableway Ereostay andway Opray HDAY Audioway",
|
||||
"video-resolution": "Ideovay Esolutionray: ",
|
||||
"hide-mic-selection": "Force Default Microphone",
|
||||
"hide-screen-share": "Idehay Eensharescray Optionway",
|
||||
"allow-remote-control": "Emoteray Ontrolcay Ameracay Oomzay (androidway)",
|
||||
"add-a-password-to-stream": " Add a password:",
|
||||
"add-the-guest-to-a-room": " Addway ethay uestgay otay away oomray:",
|
||||
"invite-group-chat-type": "Isthay oomray uestgay ancay:",
|
||||
"can-see-and-hear": "Ancay eesay andway earhay ethay oupgray atchay",
|
||||
"can-hear-only": "Ancay onlyway earhay ethay oupgray atchay",
|
||||
"cant-see-or-hear": "Annotcay earhay orway eesay ethay oupgray atchay",
|
||||
"share-local-video-file": "Seasonsray",
|
||||
"share-website-iframe": "Erehay ouyay ancay epray-enerategay",
|
||||
"run-a-speed-test": "RErehay ouyay ancay epray-enerategayt",
|
||||
"read-the-guides": "Brehay ouyay ancay epray-enerategayes",
|
||||
"info-blob": "",
|
||||
"add-to-scene": "AErehay ouyay ancay epray-enerategay",
|
||||
"forward-to-room": "Erehay ouyay ancay epray-enerategay",
|
||||
"record": "Ecordray",
|
||||
"disconnect-guest": "Erehay ouyay ancay epray-enerategay",
|
||||
"mute": "Utemay",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Erehay ouyay ancay epray-enerategay",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Erehay ouyay ancay epray-enerategay",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Erehay ouyay ancay epray-enerategay",
|
||||
"open-in-new-tab": "Openway inway ewnay Abtay",
|
||||
"copy-to-clipboard": "Opycay otay Ipboardclay",
|
||||
"click-for-quick-room-overview": "<i class=\"las la-question-circle\"></i> Click Here for a quick overview and help",
|
||||
"push-to-talk-enable": " Enable Director's Push-to-Talk Mode",
|
||||
"welcome-to-control-room": "\n\t\t\t\t\tErehay ouyay ancay epray-enerategay\n\t\t\t\t",
|
||||
"more-than-four-can-join": "Erehay ouyay ancay epray-enerategay.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tErehay ouyay ancay epray-enerategay.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tErehay ouyay ancay epray-enerategay.\n\t\t\t\t",
|
||||
"send-chat": "Erehay ouyay ancay epray-enerategay",
|
||||
"available-languages": "AErehay ouyay ancay epray-enerategay:",
|
||||
"add-more-here": "AErehay ouyay ancay epray-enerategaye!",
|
||||
"waiting-for-camera-to-load": "waiting-for-camera-to-load",
|
||||
"start": "START",
|
||||
"share-your-mic": "Share your microphone",
|
||||
"share-your-camera": "Share your Camera",
|
||||
"share-your-screen": "Share your Screen",
|
||||
"join-room-with-mic": "Join room with Microphone",
|
||||
"share-screen-with-room": "Share-screen with Room",
|
||||
"join-room-with-camera": "Join room with Camera",
|
||||
"click-start-to-join": "Click Start to Join",
|
||||
"guests-only-see-director": "Guests can only see the Director's Video",
|
||||
"default-codec-select": "Preferred Video Codec: ",
|
||||
"obfuscate_url": "Obfuscate the Invite URL",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings"
|
||||
},
|
||||
"placeholders": {
|
||||
"join-by-room-name-here": "Erehay ouyay ancay epray-enerategay",
|
||||
"enter-a-room-name-here": "Erehay ouyay ancay epray-enerategay",
|
||||
"optional-room-password-here": "Erehay ouyay ancay epray-enerategay",
|
||||
"give-this-media-source-a-name-optional-": "Erehay ouyay ancay epray-enerategay",
|
||||
"add-an-optional-password": "Erehay ouyay ancay epray-enerategay",
|
||||
"enter-room-name-here": "Erehay ouyay ancay epray-enerategay",
|
||||
"enter-chat-message-to-send-here": "Erehay ouyay ancay epray-enerategay"
|
||||
}
|
||||
}
|
||||
@@ -1,67 +1,272 @@
|
||||
{
|
||||
"GO": "ENTRAR",
|
||||
"add-group-chat": "Adicionar conversa de grupo ao OBS",
|
||||
"add-to-group": "Adicionar à cena de grupo",
|
||||
"add-your-camera": "Adicione a sua câmera ao OBS",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Added Notes:</i></u>\n\t\t\t\t<li>Qualquer pessoa pode entrar numa Sala se souber o nome, por isso mantenha-o único.</li>\n\t\t\t\t<li>Ter mais de quatro (4) pessoas numa Sala não é aconselhável devido a problemas de performance, mas depende do seu hardware.</li>\n\t\t\t\t<li>Dispositivos iOS são limitados a grupos de não mais de duas (2) pessoas. Esta é uma limitação de hardware.</li>\n\t\t\t\t<li>A opção \"Gravar\"é nova e considerada experimental.</li>\n\t\t\t\t<li>Deve \"Adicionar\" uma feed de vídeo à \"Cena de Grupo\" para que ela apareça lá.</li>\n\t\t\t\t<li>Existe um botão \"ecrã completo melhorado\" adicionado à vista de Convidado.</li>\n\t\t\t\t",
|
||||
"advanced-paramaters": "Parâmetros avançados",
|
||||
"audio-sources": "Fontes de áudio",
|
||||
"back": "Voltar",
|
||||
"balanced": "Balanceado",
|
||||
"titles": {
|
||||
"toggle-the-chat": "Ativar/desativar chat",
|
||||
"mute-the-speaker": "Desligar som",
|
||||
"mute-the-mic": "Desligar microfone",
|
||||
"disable-the-camera": "Desligar câmera",
|
||||
"settings": "Definições",
|
||||
"hangup-the-call": "Desligar a chamada",
|
||||
"show-help-info": "Mostrar ajuda",
|
||||
"language-options": "Opções de língua",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "dica: Matenha pressionado CTRL (command) para seleção múltipla",
|
||||
"ideal-for-1080p60-gaming-if-your-computer-and-upload-are-up-for-it": "Ideal para gaming 1080p60, se o teu computador e upload aguentarem",
|
||||
"better-video-compression-and-quality-at-the-cost-of-increased-cpu-encoding-load": "Melhor compressão de vídeo e qualidade com o custo de mais carga no CPU",
|
||||
"disable-digital-audio-effects-and-increase-audio-bitrate": "Desativar efeitos de áudio digitais e aumentar bitrate de áudio",
|
||||
"the-guest-will-not-have-a-choice-over-audio-options": "O convidado não terá escolha sobre as opções de áudio",
|
||||
"the-guest-will-only-be-able-to-select-their-webcam-as-an-option": "O convidado apenas poderá escolher a webcam como opção",
|
||||
"hold-ctrl-and-the-mouse-wheel-to-zoom-in-and-out-remotely-of-compatible-video-streams": "Segure CTRL e o scroll do rato para fazer zoom in e out remotamente em streams de vídeo compatíveis",
|
||||
"add-a-password-to-make-the-stream-inaccessible-to-those-without-the-password": "Adicione uma password para tornar o stream inacessível a quem não a tenha.",
|
||||
"add-the-guest-to-a-group-chat-room-it-will-be-created-automatically-if-needed-": "Adicione o convidado a uma sala; será criada automaticamente se necessário.",
|
||||
"customize-the-room-settings-for-this-guest": "Personalize as definições da sala para este convidado",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Segure CTRL (ou CMD) para selecionar mais de um ficheiro",
|
||||
"enter-an-https-url": "Introduza um URL HTTPS",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Adicionar este vídeo a todas as cenas '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Enviar convidado para outra sala. O convidado poderá voltar.",
|
||||
"start-recording-this-stream-experimental-views": "Gravar stream. *experimental*",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force o utilizador a desligar. Ele poderá reconectar.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Altere o volume de áudio em todas as cenas '&scene'",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Tire o som em todas as cenas '&scene'",
|
||||
"disable-video-preview": "Desativar Previsualização de Vídeo",
|
||||
"low-quality-preview": "Previsualização de baixa qualidade",
|
||||
"high-quality-preview": "Previsualização de alta qualidade",
|
||||
"send-direct-message": "Enviar mensagem direta",
|
||||
"advanced-settings-and-remote-control": "Opções avançadas e Controlo Remoto",
|
||||
"toggle-voice-chat-with-this-guest": "Ativar/desativar conversa de voz com este convidado",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"copy-this-url": "Copie este URL para uma \"Browser Source\" do OBS",
|
||||
"you-are-in-the-control-center": "Está no Centro de Controlo da Sala",
|
||||
"joining-room": "Está a entrar na sala",
|
||||
"add-group-chat": "Adicionar conversa de grupo ao OBS",
|
||||
"rooms-allow-for": "As Salas permitem conversas de grupo simplificadas e a gestão avançada de múltiplos streams simultâneos.",
|
||||
"room-name": "Nome da Sala",
|
||||
"password-input-field": "Password",
|
||||
"enter-the-rooms-control": "Entrar no Centro de Controlo da Sala",
|
||||
"show-tips": "Mostre-me algumas dicas..",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Notas adicionais:</i></u>\n\t\t\t\t<li>Qualquer pessoa pode entrar numa Sala se souber o nome, por isso mantenha-o único.</li>\n\t\t\t\t<li>Ter mais de quatro (4) pessoas numa Sala não é aconselhável devido a problemas de performance, mas depende do seu hardware.</li>\n\t\t\t\t<li>Dispositivos iOS são limitados a grupos de não mais de duas (2) pessoas. Esta é uma limitação de hardware.</li>\n\t\t\t\t<li>A opção \"Gravar\"é nova e considerada experimental.</li>\n\t\t\t\t<li>Deve \"Adicionar\" uma feed de vídeo à \"Cena de Grupo\" para que ela apareça lá.</li>\n\t\t\t\t<li>Existe um botão \"ecrã completo melhorado\" adicionado à vista de Convidado.</li>\n\t\t\t\t",
|
||||
"back": "Voltar",
|
||||
"add-your-camera": "Adicione a sua câmera ao OBS",
|
||||
"ask-for-permissions": "Permita acesso à Câmera/Microfone",
|
||||
"waiting-for-camera": "Esperando pela câmera",
|
||||
"video-source": "Fonte de vídeo",
|
||||
"max-resolution": "Resolução Máxima",
|
||||
"balanced": "Balanceado",
|
||||
"smooth-cool": "Suave e leve",
|
||||
"select-audio-source": "Selecionar fontes de áudio",
|
||||
"no-audio": "Sem áudio",
|
||||
"select-output-source": " Saída de áudio: \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "Partilha de ecrã remota para OBS",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>nota</b>: Não se esqueça de clicar em \"Partilhar áudio\" no Chrome.<br>(Firefox não suporta partilha de áudio.)",
|
||||
"select-screen-to-share": "SELECIONAR ECRÃ A PARTILHAR",
|
||||
"audio-sources": "Fontes de áudio",
|
||||
"create-reusable-invite": "Criar convite reutilizável",
|
||||
"here-you-can-pre-generate": "Aqui pode gerar um link Browser Source reutilizável e um link de convidado relacionado.",
|
||||
"generate-invite-link": "GERAR O LINK DE CONVITE",
|
||||
"advanced-paramaters": "Parâmetros avançados",
|
||||
"unlock-video-bitrate": "Desbloquear Bitrate de Vídeo (20mbps)",
|
||||
"force-vp9-video-codec": "Forçar Codec de vídeo VP9 (menos artefactos)",
|
||||
"enable-stereo-and-pro": "Ativar áudio Stereo e Pro HD",
|
||||
"video-resolution": "Resolução de Vídeo: ",
|
||||
"hide-mic-selection": "Forçar microfone definido por omissão",
|
||||
"hide-screen-share": "Esconder opção de partilhar ecrã",
|
||||
"allow-remote-control": "Controlo remoto do zoom da câmera (android)",
|
||||
"add-a-password-to-stream": " Adicionar uma password:",
|
||||
"add-the-guest-to-a-room": " Adicionar convidado a uma sala:",
|
||||
"invite-group-chat-type": "Este convidado pode:",
|
||||
"can-see-and-hear": "Pode ver e ouvir o chat de grupo",
|
||||
"can-hear-only": "Pode apenas ouvir o chat de grupo",
|
||||
"cant-see-or-hear": "Não pode ver ou ouvir o chat de grupo",
|
||||
"share-local-video-file": "Fazer Stream de ficheiro de media",
|
||||
"share-website-iframe": "Partilhe um site",
|
||||
"run-a-speed-test": "Corra um teste de velocidade",
|
||||
"read-the-guides": "Descubra os Guias",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>O que é o OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b>grátis</b>; sem downloads; sem recolha de dados pessoais; sem login</li>\n\t\t\t\t\t\t<li>Leve vídeo do seu smartphone, portátil, computador, ou dos seus amigos diretamente para o seu stream de vídeo do OBS</li>\n\t\t\t\t\t\t<li>Usamos tecnologia de ponta de encaminhamento Peer-to-Peer que oferece privacidade e latência ultra-baixa</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Vídeo de youtube <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demoing it here</a> </li>",
|
||||
"add-to-scene": "Adicionar à Cena",
|
||||
"forward-to-room": "Transferir",
|
||||
"record": "Gravar",
|
||||
"disconnect-guest": "Desligar",
|
||||
"mute": "Mute",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Enviar mensagem",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Avançadas",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "Abrir num novo separador",
|
||||
"copy-to-clipboard": "Copiar para área de transferência",
|
||||
"click-for-quick-room-overview": "❔ Clique aqui para uma pequena apresentação e ajuda",
|
||||
"push-to-talk-enable": "🔊 Ativar Push-to-talk do diretor",
|
||||
"welcome-to-control-room": "Bem-vindo. Esta é a sala de controlo para o chat de grupo. Há diferentes coisas que pode fazer aqui:<br><br>\t<li>Pode hospedar um chat de grupo com amigos. Partilhe o link azul para os convidados se juntarem ao chat de forma automática.</li>\t<li>Uma sala de grupo pode hospedar entre 4 a 30 4 to 30 convidados, dependendo de inúmeros factores, incluindo CPU e largura de banda de todos os convidados na sala.</li>\t<li>Visualizações individuais de cada vídeo serão mostradas quando carregam. Estas podem ser usadas em Fontes do tipo Browser no OBS.</li>\t<li>Pode usar a cena de grupo automática, o link verde, para dispôr automaticamente os vídeos por si no OBS.</li>\t<li>Pode usar esta sala de controlo para gravar streams isolados de vídeo ou áudio, mas isto é ainda experimental.</li>\t<li>Vídeos na sala de controle são de baixa qualidade propositadamente; para poupar largura de banda/CPU</li>\t<li>Convidados na sala irão ver-se numa qualidade muito reduzida para conservar largura de banda/CPU.</li>\t<li>OBS tem acesso ao vídeo do convidado em alta qualidade; o bitrate de vídeo por omissão é 2500kbps.</li>\t<br>\tÀ medida que os convidados entram, os seus vídeos são mostrados abaixo. Pode levar os seus sinais para o OBS como cenas individuais ou pode adicioná-los à cena de grupo.\t<br>A Cena de grupo auto-mistura vídeos que lhe forem adicionados. Note que a auto-mistura requer que os convidados sejam manualmente adicionados; não são adicionados automaticamente.<br><br>Dispositivos móveis Apple, como iPhones e iPads, não suportam totalmente o Chat de Grupo. Este é um constrangimento de hardware.<br><br>\tPara opções avançadas e parâmetros, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">veja o Wiki.</a>",
|
||||
"more-than-four-can-join": "Estes quatro convidados são apenas ilustrativos. Podem juntar-se mais de quatro convidados numa sala.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tBem vindo ao OBS.Ninja! Pode enviar mensagens diretas a quem estiver aqui ligado a partir daqui.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNomes a identificar as ligações será uma funcionalidade futura.\n\t\t\t\t",
|
||||
"send-chat": "Enviar",
|
||||
"available-languages": "Línguas disponíveis:",
|
||||
"add-more-here": "Adicionar mais aqui!",
|
||||
"waiting-for-camera-to-load": "À espera que a câmera fique pronta",
|
||||
"start": "INICIAR",
|
||||
"share-your-mic": "Partilhar o microfone",
|
||||
"share-your-camera": "Partilhar a câmera",
|
||||
"share-your-screen": "Partilhar o ecrã",
|
||||
"join-room-with-mic": "Entrar na sala com microfone",
|
||||
"share-screen-with-room": "Partilhar o ecrã com a sala",
|
||||
"join-room-with-camera": "Entrar na sala com câmera",
|
||||
"click-start-to-join": "Clique iniciar para se entrar",
|
||||
"guests-only-see-director": "Os convidados só podem ver o vídeo do Diretor",
|
||||
"default-codec-select": "Codec de Vídeo preferido: ",
|
||||
"obfuscate_url": "Obfuscar o URL do convite",
|
||||
"hide-the-links": " LINKS (CONVITES & CENAS)",
|
||||
"invite-users-to-join": "Os convidados podem user o link para entrar na sala",
|
||||
"this-is-obs-browser-source-link": "Use no OBS ou outro software para capturar a mistura dos vídeos",
|
||||
"mute-scene": "mute na cena",
|
||||
"mute-guest": "mute ao convidado",
|
||||
"record-local": " Gravação Local",
|
||||
"record-remote": " Gravação Remota",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Definições de Áudio"
|
||||
},
|
||||
"placeholders": {
|
||||
"join-by-room-name-here": "Introduza aqui numa sala pelo seu nome",
|
||||
"enter-a-room-name-here": "Introduza o nome da sala",
|
||||
"optional-room-password-here": "Introduza password da sala (opcional)",
|
||||
"give-this-media-source-a-name-optional-": "Dê um nome a esta fonte de mídia (opcional)",
|
||||
"add-an-optional-password": "Introduza uma password (opcional)",
|
||||
"enter-room-name-here": "Introduza nome da sala aqui",
|
||||
"enter-chat-message-to-send-here": "Introduza mensagem a enviar aqui"
|
||||
},
|
||||
"logo-header": "\n\t\t\t\t\t<font id=\"qos\">O</font>BS.Ninja \n\t\t\t\t",
|
||||
"copy-this-url": "Copie este URL para uma \"Browser Source\" do OBS",
|
||||
"copy-to-clipboard": "Copiar para área de transferência",
|
||||
"you-are-in-the-control-center": "Centro de controlo da sala:",
|
||||
"joining-room": "Está na sala",
|
||||
"add-group-chat": "Criar uma Sala",
|
||||
"rooms-allow-for": "As salas permitem converesas de grupo e ferramentas para gerir múltiplos convidados.",
|
||||
"room-name": "Nome da sala",
|
||||
"password-input-field": "Password",
|
||||
"guests-only-see-director": "Convidados só podem ver o vídeo do Diretor",
|
||||
"default-codec-select": "Codec vídeo preferido: ",
|
||||
"enter-the-rooms-control": "Entrar no controlo da sala",
|
||||
"show-tips": "Mostre-me dicas..",
|
||||
"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>\n\t\t\t\t\t\t\t\t<li><a href=\"https://params.obs.ninja\" style=\"color:black;\"><u>Advanced URL parameters</u></a> are available to customize rooms.</li>\n\t\t\t\t\t\t\t",
|
||||
"back": "Voltar",
|
||||
"add-your-camera": "Adicionar câmera ao OBS",
|
||||
"ask-for-permissions": "Permitir Acesso à Câmera/Microfone",
|
||||
"waiting-for-camera": "A esperar que a câmera carregue",
|
||||
"video-source": " Fonte de vídeo ",
|
||||
"max-resolution": "1080p (hd)",
|
||||
"balanced": "720p (equilibrado)",
|
||||
"smooth-cool": "360p (suave)",
|
||||
"select-audio-source": " Fonte(s) de Áudio ",
|
||||
"no-audio": "Sem Áudio",
|
||||
"select-output-source": " Saída de áudio: ",
|
||||
"remote-screenshare-obs": "Partilha de ecrã remota no OBS",
|
||||
"note-share-audio": "\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<video id=\"screenshare\" autoplay=\"true\" muted=\"true\" loop=\"\" src=\"./images/screenshare.webm\"></video>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t",
|
||||
"select-screen-to-share": "SELECIONE ECRÃ A PARTILHAR",
|
||||
"audio-sources": "Fontes de Áudio",
|
||||
"create-reusable-invite": "Criar convite reutilizável",
|
||||
"enable-stereo-and-pro": "Ativar áudio Stereo e Pro HD",
|
||||
"enter-the-rooms-control": "Entrar no Centro de Controlo da Sala",
|
||||
"force-vp9-video-codec": "Forçar Codec de vídeo VP9 (menos artefactos)",
|
||||
"generate-invite-link": "GERAR O LINK DE CONVITE",
|
||||
"here-you-can-pre-generate": "Aqui pode gerar um link Browser Source reutilizável e um link de convidado relacionado.",
|
||||
"high-security-mode": "Modo de alta segurança",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>O que é o OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li>100% <b>grátis</b>; sem downloads; sem recolha de dados pessoais; sem login</li>\n\t\t\t\t\t\t<li>Leve vídeo do seu smartphone, portátil, computador, ou dos seus amigos diretamente para o seu stream de vídeo do OBS</li>\n\t\t\t\t\t\t<li>Usamos tecnologia de ponta de encaminhamento Peer-to-Peer que oferece privacidade e latência ultra-baixa</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Vídeo de youtube <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Demoing it here</a> </li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<i><font style=\"color:red\">Problemas conhecidos:</font></i><br>\n\n\t\t\t\t\t\t<li><i class=\"fa fa-apple\" aria-hidden=\"true\"></i> Utilizadores de MacOS precisam de usar OBS v23 ou usar <i>Captura de ecrã</i> de um browser Chrome com OBS v25</li>\n\t\t\t\t\t\t<li>Alguns utilizadores terão problemas de \"pixelização\" com vídeos. Por favor adicione o parâmetro <b>&codec=vp9</b> ao URL dos links OBS para o corrigir.</li>\n\t\t\t\t\t\t<br><i></i><h3><i>Visite o <a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a> <i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"></i> para ajuda e informação avançada. Também estou no <a href=\"https://discord.gg/EksyhGA\">Discord</a> e pode contactar-me por email em steve@seguin.email</i></h3>\n\t\t\t\t\t",
|
||||
"joining-room": "Está a entrar na sala",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"max-resolution": "Resolução Máxima",
|
||||
"mute": "Mute",
|
||||
"no-audio": "Sem áudio",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>nota</b>: Não se esqueça de clicar em \"Partilhar áudio\" no Chrome.<br>(Firefox não suporta partilha de áudio.)",
|
||||
"open-in-new-tab": "Abrir num novo separador",
|
||||
"record": "Gravar",
|
||||
"remote-control-for-obs": "Controlo remoto para OBS",
|
||||
"remote-screenshare-obs": "Partilha de ecrã remota para OBS",
|
||||
"room-name": "Nome da Sala",
|
||||
"rooms-allow-for": "As Salas permitem conversas de grupo simplificadas e a gestão avançada de múltiplos streams simultâneos.",
|
||||
"select-audio-source": "Selecionar fontes de áudio",
|
||||
"select-audio-video": "Selectionar a fonte de áudio/vídeo abaixo",
|
||||
"select-screen-to-share": "SELECIONAR ECRÃ A PARTILHAR",
|
||||
"show-tips": "Mostre-me algumas dicas..",
|
||||
"smooth-cool": "Smooth and Cool",
|
||||
"here-you-can-pre-generate": "Aqui pode gerar um link para convidar e o respetivo link de visualização.",
|
||||
"generate-invite-link": "GERAR O LINK DO CONVITE",
|
||||
"advanced-paramaters": "Opções Avançadas",
|
||||
"unlock-video-bitrate": "Desbloquear Bitrate de Vídeo (20mbps)",
|
||||
"video-source": "Fonte de vídeo",
|
||||
"volume": "Volume",
|
||||
"you-are-in-the-control-center": "Está no Centro de Controlo da Sala",
|
||||
"waiting-for-camera": "Esperando pela câmera",
|
||||
"video-resolution": "Resolução de Vídeo: ",
|
||||
"hide-screen-share": "Esconder opção de partilhar ecrã",
|
||||
"allow-remote-control": "Controlo remoto do zoom da câmera (android)",
|
||||
"add-the-guest-to-a-room": " Adicionar convidado a uma sala:",
|
||||
"force-vp9-video-codec": "Forçar Codec de Vídeo VP9",
|
||||
"enable-stereo-and-pro": "Ativar som stereo e Pro HD",
|
||||
"video-resolution": "Resolução do vídeo: ",
|
||||
"hide-mic-selection": "Forçar Microfone predefinido",
|
||||
"hide-screen-share": "Esconder opção de partilha de ecrã",
|
||||
"allow-remote-control": "Controlar ao zoom da câmera remotamente (android)",
|
||||
"obfuscate_url": "Obfuscar o URL do convite",
|
||||
"add-a-password-to-stream": " Adicionar a password:",
|
||||
"add-the-guest-to-a-room": " Adicionar o convidado a uma sala:",
|
||||
"invite-group-chat-type": "Este convidado pode:",
|
||||
"can-see-and-hear": "Pode ver e ouvir o chat de grupo",
|
||||
"can-hear-only": "Pode apenas ouvir o chat de grupo",
|
||||
"cant-see-or-hear": "Não pode ver ou ouvir o chat de grupo",
|
||||
"password-input-field": "Password",
|
||||
"select-output-source": " Saída de áudio: \n\t\t\t\t\t",
|
||||
"add-a-password-to-stream": " Adicionar uma password:",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tBem vindo ao OBS.Ninja! Pode enviar mensagens diretas a quem estiver aqui ligado a partir daqui.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNomes a identificar as ligações será uma funcionalidade futura.\n\t\t\t\t",
|
||||
"can-hear-only": "APenas pode ouvir o chat de grupo",
|
||||
"cant-see-or-hear": "Não pode ver nem ouvir o chat de grupo",
|
||||
"share-local-video-file": "Stream de ficheiro de mídia",
|
||||
"share-website-iframe": "Partilhar Website",
|
||||
"run-a-speed-test": "Teste de Velocidade",
|
||||
"read-the-guides": "Consultar os Guias",
|
||||
"info-blob": "\n\t\t\t\t\t\t\t<h2>O que é o OBS.Ninja</h2>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<li>100% \n\t\t\t\t\t\t\t\t<b>gratuito</b>; sem downloads; sem recolha de dados pessoais; sem login\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>Bring video from your smartphone, computer, or friends directly into your OBS video stream</li>\n\t\t\t\t\t\t\t<li>We use cutting edge Peer-to-Peer forwarding technology that offers privacy and ultra-low latency</li>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<li>Youtube video \n\t\t\t\t\t\t\t\t<i class=\"lab la-youtube\"></i>\n\t\t\t\t\t\t\t\t<a href=\"https://www.youtube.com/watch?v=vLpRzMjUDaE&list=PLWodc2tCfAH1WHjl4WAOOoRSscJ8CHACe&index=2\" alt=\"Youtube video demoing OBS.Ninja\">Demoing it here</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<i>\n\t\t\t\t\t\t\t\t<font style=\"color: red;\">Known issues:</font>\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\tMacOS users using OBS will need to update to <a href=\"https://github.com/obsproject/obs-studio/releases/tag/26.1.2\">OBS Studio 26.1.2</a> or resort to\n\t\t\t\t\t\t\t\twindow-capturing with the provided <a href=\"https://github.com/steveseguin/electroncapture\">Electron-Capture app</a>.\n \n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>If you have\t<a href=\"https://github.com/steveseguin/obsninja/wiki/FAQ#video-is-pixelated\">\"pixel smearing\"</a> or corrupted video, try adding <b>&codec=vp9</b> or &codec=h264 to the OBS view link. Using Wi-Fi will make the issue worse.\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\tiOS devices may have occasional audio or camera issues, such as no sound or distorted sound. <a href=\"https://bugs.webkit.org/show_bug.cgi?id=218762\">Partially fixed in iOS 14.3</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\tThe VP9 codec on Chromium-based browsers seems to lag when screen-sharing at the moment. Use the OBS Virtual Camera as a capture source instead.\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<br>\n\n 🥳 Site Updated: <a href=\"https://github.com/steveseguin/obsninja/wiki/v15-release-notes\">Jan 12th, 2021</a>. The previous version can be found at \n\t\t\t\t\t\t\t<a href=\"https://obs.ninja/v14/\">https://obs.ninja/v14/</a> if you are having new issues.\n\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<h3>\n\t\t\t\t\t\t\t\t<i>\n Check out the \n\t\t\t\t\t\t\t\t\t<a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit\n\t\t\t\t\t\t\t\t\t<i class=\"lab la-reddit-alien\"></i> </a>for help and see the <a href=\"https://github.com/steveseguin/obsninja/wiki/\">Wiki for advanced info</a>. I'm also on\n\t\t\t\t\t\t\t\t\t<a href=\"https://discord.gg/T4xpQVv\">Discord <i class=\"lab la-discord\"></i></a> or email me at steve@seguin.email\n \n\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t",
|
||||
"hide-the-links": " LINKS (CONVITES PARA CONVIDADOS & CENAS)",
|
||||
"click-for-quick-room-overview": "\n\t\t\t\t\t\t<i class=\"las la-question-circle\"></i> Click Here for a quick overview and help\n\t\t\t\t\t",
|
||||
"welcome-to-control-room": "\n\t\t\t\t\t\t<b>Bem vindo. Esta é a sala de controlo do realizador do chat de grupo.</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://github.com/steveseguin/obsninja/wiki/Advanced-Settings\">see the Wiki.</a>\n\t\t\t\t\t",
|
||||
"invite-users-to-join": "Os convidados podem usar o link para entrar na sala",
|
||||
"this-is-obs-browser-source-link": "Use no OBS ou outro software para capturar a mistura dos vídeos",
|
||||
"more-than-four-can-join": "Estes quatro campos são para efeitos demonstrativos. Podem entrar mais de quatro convidados numa sala.",
|
||||
"forward-to-room": "Transferir",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Mensagem",
|
||||
"add-to-scene": "Adicionar à Cena",
|
||||
"mute-scene": "mute na cena",
|
||||
"mute-guest": "mute ao convidado",
|
||||
"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>",
|
||||
"disconnect-guest": "Desligar",
|
||||
"record-local": " Gravação Local",
|
||||
"record-remote": " Gravação Remota",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Chat por voz",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Definições de Áudio",
|
||||
"advanced-camera-settings": "<i class=\"las la-sliders-h\"></i> Definições de Vídeo",
|
||||
"open-in-new-tab": "Abrir num novo separador",
|
||||
"copy-to-clipboard": "Copiar",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tWelcome to OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Enviar",
|
||||
"available-languages": "Línguas disponíveis:",
|
||||
"add-more-here": "Adicionar mais aqui!",
|
||||
"invite-users-to-join": "Convida os utilizadores a juntarem-se à sala e partilharem câmera ou ecrã com ele. Estes utilizadores vêm as transmissões do resto da sala.",
|
||||
"link-to-invite-camera": "Convida os utilizadores a juntarem-se à sala e partilharem câmera ou ecrã com ele. Estes utilizadores não vêm nem ouvem as transmissões do resto da sala.",
|
||||
"this-is-obs-browser-source-link": "Este é um link para Fonte Browser do OBS que por omissão está vazio. Vídeos da sala podem ser manualmente adicionados.",
|
||||
"this-is-obs-browser-souce-link-auto": "Também é um link para Fonte Browser do OBS. Todos os vídeos desta sala serão automaticamente adicionados.",
|
||||
"click-for-quick-room-overview": "❔ Clique aqui para uma pequena apresentação e ajuda",
|
||||
"push-to-talk-enable": "🔊 Ativar Push-to-talk do diretor",
|
||||
"welcome-to-control-room": "Bem-vindo. Esta é a sala de controlo para o chat de grupo. Há diferentes coisas que pode fazer aqui:<br><br>\t<li>Pode hospedar um chat de grupo com amigos. Partilhe o link azul para os convidados se juntarem ao chat de forma automática.</li>\t<li>Uma sala de grupo pode hospedar entre 4 a 30 4 to 30 convidados, dependendo de inúmeros factores, incluindo CPU e largura de banda de todos os convidados na sala.</li>\t<li>Visualizações individuais de cada vídeo serão mostradas quando carregam. Estas podem ser usadas em Fontes do tipo Browser no OBS.</li>\t<li>Pode usar a cena de grupo automática, o link verde, para dispôr automaticamente os vídeos por si no OBS.</li>\t<li>Pode usar esta sala de controlo para gravar streams isolados de vídeo ou áudio, mas isto é ainda experimental.</li>\t<li>Vídeos na sala de controle são de baixa qualidade propositadamente; para poupar largura de banda/CPU</li>\t<li>Convidados na sala irão ver-se numa qualidade muito reduzida para conservar largura de banda/CPU.</li>\t<li>OBS tem acesso ao vídeo do convidado em alta qualidade; o bitrate de vídeo por omissão é 2500kbps.</li>\t<br>\tÀ medida que os convidados entram, os seus vídeos são mostrados abaixo. Pode levar os seus sinais para o OBS como cenas individuais ou pode adicioná-los à cena de grupo.\t<br>A Cena de grupo auto-mistura vídeos que lhe forem adicionados. Note que a auto-mistura requer que os convidados sejam manualmente adicionados; não são adicionados automaticamente.<br><br>Dispositivos móveis Apple, como iPhones e iPads, não suportam totalmente o Chat de Grupo. Este é um constrangimento de hardware.<br><br>\tPara opções avançadas e parâmetros, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">veja o Wiki.</a>", "guest-will-appaer-here-on-join": "(Aparece aqui o vídeo quando um convidado entrar)",
|
||||
"SOLO-LINK": "Link individual para OBS:"
|
||||
}
|
||||
"add-more-here": "Adicionar mais aqui!"
|
||||
}
|
||||
@@ -1,68 +1,192 @@
|
||||
{
|
||||
"GO": "ВОЙТИ",
|
||||
"add-group-chat": "Добавить групповой чат в OBS",
|
||||
"add-to-group": "Добавить в групповую сцену",
|
||||
"add-your-camera": "Добавить свою камеру в OBS",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Добавленные заметки:</i></u>\n\t\t\t\t<li>Любой может войти в комнату, если знает имя, поэтому оставьте его уникальным</li>\n\t\t\t\t<li>Наличие более четырех (4) человек в комнате не рекомендуется по причинам производительности, но это зависит от вашего оборудования.</li>\n\t\t\t\t<li>Устройства iOS ограничены размерами группы не более двух (2) человек. Это аппаратное ограничение.</li>\n\t\t\t\t",
|
||||
"advanced-paramaters": "Расширенные параметры",
|
||||
"audio-sources": "Источники звука",
|
||||
"back": "Назад",
|
||||
"balanced": "Сбалансированный",
|
||||
"copy-this-url": "Скопируйте этот URL-адрес в OBS \"Браузер\"",
|
||||
"copy-to-clipboard": "Скопировано в буфер обмена",
|
||||
"create-reusable-invite": "Создать многоразовое приглашение",
|
||||
"enable-stereo-and-pro": "Включить стерео и Pro HD Audio",
|
||||
"enter-the-rooms-control": "Войдите в центр управления комнатой",
|
||||
"force-vp9-video-codec": "Видеокодек Force VP9 (меньше артефактов)",
|
||||
"generate-invite-link": "СГЕНЕРИРОВАТЬ ССЫЛКУ-ПРИГЛАШЕНИЕ",
|
||||
"here-you-can-pre-generate": "Здесь вы можете предварительно сгенерировать повторно используемую ссылку на источник браузера и связанную гостевую ссылку для приглашения..",
|
||||
"high-security-mode": "Режим повышенной безопасности",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Что такое OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li><b>бесплатно</b> на 100%; нет загрузок; нет сбора личных данных; нет входа</li>\n\t\t\t\t\t\t<li>Добавляйте видео со своего смартфона, ноутбука, компьютера или друзей прямо в видеопоток OBS</li>\n\t\t\t\t\t\t<li>Мы используем передовую технологию переадресации Peer-to-Peer, которая обеспечивает конфиденциальность и сверхнизкую задержку</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Пользователям MacOS необходимо использовать OBS v23 или использовать <i>захват окна<!-- i--> в браузере Google Chrome с OBS v25</i></li><i>\n\t\t\t\t\t\t<br><h3><i>Проверьте <a href=\"https://www.reddit.com/r/OBSNinja/\">sub-reddit</a> <i class=\"fa fa-reddit-alien\" aria-hidden=\"true\"></i> для помощи и дополнительной информации.</i></h3>\n\t\t\t\t\t</i>",
|
||||
"joining-room": "Вы присоединяетесь к комнате",
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja (RU)",
|
||||
"max-resolution": "Максимальное разрешение",
|
||||
"mute": "Отключить звук",
|
||||
"no-audio": "Нет звука",
|
||||
"note-share-audio": "\n\t\t\t\t\tFirefox не поддерживает обмен аудио",
|
||||
"open-in-new-tab": "Открыть в новой вкладке",
|
||||
"record": "Запись",
|
||||
"remote-control-for-obs": "Пульт дистанционного управления для OBS",
|
||||
"remote-screenshare-obs": "Удаленная демонстрация экрана в OBS",
|
||||
"room-name": "Название комнаты",
|
||||
"rooms-allow-for": "В комнатах предусмотрены упрощенный групповой чат и расширенное управление несколькими потоками одновременно.",
|
||||
"select-audio-source": "Выберите источники звука",
|
||||
"select-audio-video": "Выберите источник аудио / видео ниже",
|
||||
"select-screen-to-share": "Выберите экран, чтобы поделиться",
|
||||
"show-tips": "Покажите мне несколько советов..",
|
||||
"smooth-cool": "Гладко и круто",
|
||||
"unlock-video-bitrate": "Разблокировать битрейт видео (20 Мбит/с)",
|
||||
"video-source": "Источники видео",
|
||||
"volume": "Громкость",
|
||||
"you-are-in-the-control-center": "Вы находитесь в центре управления комнатой",
|
||||
"password-input-field": "Пароль",
|
||||
"waiting-for-camera": "Ожидание загрузки камеры",
|
||||
"select-output-source": " Назначение аудиовыхода: \n\t\t\t\t\t",
|
||||
"video-resolution": "Разрешение видео: ",
|
||||
"hide-screen-share": "Скрыть параметр демонстрации экрана",
|
||||
"allow-remote-control": "Remote Control Camera Zoom (android)",
|
||||
"add-a-password-to-stream": " Добавить пароль:",
|
||||
"add-the-guest-to-a-room": " Добавить гостя в комнату:",
|
||||
"invite-group-chat-type": "В этой комнате гость может:",
|
||||
"can-see-and-hear": "Видеть и слышать групповой чат",
|
||||
"can-hear-only": "Только слышать груповой чат",
|
||||
"cant-see-or-hear": "Не слышать и не видеть групповой чат",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tДобро пожаловать в OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Отправить",
|
||||
"available-languages": "Доступные языки:",
|
||||
"add-more-here": "Добавить больше!",
|
||||
"invite-users-to-join": "Invites users to join the group and broadcast their feed to it. These users will see every feed in the room.",
|
||||
"link-to-invite-camera": "Link to invite users to broadcast their feeds to the group. These users will not see or hear any feed from the group.",
|
||||
"this-is-obs-browser-source-link": "This is an OBS Browser Source link that is empty by default. Videos in the room can be manually added to this scene.",
|
||||
"this-is-obs-browser-souce-link-auto": "Also an OBS Browser Source link. All guest videos in this group chat room will automatically be added into this scene.",
|
||||
"click-for-quick-room-overview": "❔ Нажмите здесь, чтобы ознакомиться с кратким обзором",
|
||||
"push-to-talk-enable": "🔊 Включить режим «Нажми, чтобы говорить»",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"guest-will-appaer-here-on-join": "(Видео появится здесь, когда гость присоединится)",
|
||||
"SOLO-LINK": "ПЕРСОНАЛЬНАЯ ССЫЛКА для OBS:"
|
||||
}
|
||||
"titles": {
|
||||
"toggle-the-chat": "Toggle the Chat",
|
||||
"mute-the-speaker": "Mute the Speaker",
|
||||
"mute-the-mic": "Mute the Mic",
|
||||
"disable-the-camera": "Disable the Camera",
|
||||
"settings": "Settings",
|
||||
"hangup-the-call": "Hangup the Call",
|
||||
"show-help-info": "Show Help Info",
|
||||
"language-options": "Language Options",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
|
||||
"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",
|
||||
"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",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Hold CTRL (or CMD) to select multiple files",
|
||||
"enter-an-https-url": "Enter an HTTPS URL",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Forward user to another room. They can always return.",
|
||||
"start-recording-this-stream-experimental-views": "Start Recording this stream. *experimental*' views",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Change this Audio's volume in all remote '&scene' views",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Remotely Mute this Audio in all remote '&scene' views",
|
||||
"disable-video-preview": "Disable Video Preview",
|
||||
"low-quality-preview": "Low-Quality Preview",
|
||||
"high-quality-preview": "High-Quality Preview",
|
||||
"send-direct-message": "Send Direct Message",
|
||||
"advanced-settings-and-remote-control": "Advanced Settings and Remote Control",
|
||||
"toggle-voice-chat-with-this-guest": "Toggle Voice Chat with this Guest",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja (RU)",
|
||||
"copy-this-url": "Скопируйте этот URL-адрес в OBS \"Браузер\"",
|
||||
"you-are-in-the-control-center": "Вы находитесь в центре управления комнатой",
|
||||
"joining-room": "Вы присоединяетесь к комнате",
|
||||
"add-group-chat": "Добавить групповой чат в OBS",
|
||||
"rooms-allow-for": "В комнатах предусмотрены упрощенный групповой чат и расширенное управление несколькими потоками одновременно.",
|
||||
"room-name": "Название комнаты",
|
||||
"password-input-field": "Пароль",
|
||||
"enter-the-rooms-control": "Войдите в центр управления комнатой",
|
||||
"show-tips": "Покажите мне несколько советов..",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Добавленные заметки:</i></u>\n\t\t\t\t<li>Любой может войти в комнату, если знает имя, поэтому оставьте его уникальным</li>\n\t\t\t\t<li>Наличие более четырех (4) человек в комнате не рекомендуется по причинам производительности, но это зависит от вашего оборудования.</li>\n\t\t\t\t<li>Устройства iOS ограничены размерами группы не более двух (2) человек. Это аппаратное ограничение.</li>\n\t\t\t\t",
|
||||
"back": "Назад",
|
||||
"add-your-camera": "Добавить свою камеру в OBS",
|
||||
"ask-for-permissions": "Allow Access to Camera/Microphone",
|
||||
"waiting-for-camera": "Ожидание загрузки камеры",
|
||||
"video-source": "Источники видео",
|
||||
"max-resolution": "Максимальное разрешение",
|
||||
"balanced": "Сбалансированный",
|
||||
"smooth-cool": "Гладко и круто",
|
||||
"select-audio-source": "Выберите источники звука",
|
||||
"no-audio": "Нет звука",
|
||||
"select-output-source": " Назначение аудиовыхода: \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "Удаленная демонстрация экрана в OBS",
|
||||
"note-share-audio": "\n\t\t\t\t\tFirefox не поддерживает обмен аудио",
|
||||
"select-screen-to-share": "Выберите экран, чтобы поделиться",
|
||||
"audio-sources": "Источники звука",
|
||||
"create-reusable-invite": "Создать многоразовое приглашение",
|
||||
"here-you-can-pre-generate": "Здесь вы можете предварительно сгенерировать повторно используемую ссылку на источник браузера и связанную гостевую ссылку для приглашения..",
|
||||
"generate-invite-link": "СГЕНЕРИРОВАТЬ ССЫЛКУ-ПРИГЛАШЕНИЕ",
|
||||
"advanced-paramaters": "Расширенные параметры",
|
||||
"unlock-video-bitrate": "Разблокировать битрейт видео (20 Мбит/с)",
|
||||
"force-vp9-video-codec": "Видеокодек Force VP9 (меньше артефактов)",
|
||||
"enable-stereo-and-pro": "Включить стерео и Pro HD Audio",
|
||||
"video-resolution": "Разрешение видео: ",
|
||||
"hide-mic-selection": "Force Default Microphone",
|
||||
"hide-screen-share": "Скрыть параметр демонстрации экрана",
|
||||
"allow-remote-control": "Remote Control Camera Zoom (android)",
|
||||
"add-a-password-to-stream": " Добавить пароль:",
|
||||
"add-the-guest-to-a-room": " Добавить гостя в комнату:",
|
||||
"invite-group-chat-type": "В этой комнате гость может:",
|
||||
"can-see-and-hear": "Видеть и слышать групповой чат",
|
||||
"can-hear-only": "Только слышать груповой чат",
|
||||
"cant-see-or-hear": "Не слышать и не видеть групповой чат",
|
||||
"share-local-video-file": "Stream Media File",
|
||||
"share-website-iframe": "Share Website",
|
||||
"run-a-speed-test": "Run a Speed Test",
|
||||
"read-the-guides": "Browse the Guides",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>Что такое OBS.Ninja</h2><br>\n\t\t\t\t\t\t<li><b>бесплатно</b> на 100%; нет загрузок; нет сбора личных данных; нет входа</li>\n\t\t\t\t\t\t<li>Добавляйте видео со своего смартфона, ноутбука, компьютера или друзей прямо в видеопоток OBS</li>\n\t\t\t\t\t\t<li>Мы используем передовую технологию переадресации Peer-to-Peer, которая обеспечивает конфиденциальность и сверхнизкую задержку</li>\n\t\t\t\t\t\t",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"forward-to-room": "Transfer",
|
||||
"record": "Запись",
|
||||
"disconnect-guest": "Hangup",
|
||||
"mute": "Отключить звук",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Advanced",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "Открыть в новой вкладке",
|
||||
"copy-to-clipboard": "Скопировано в буфер обмена",
|
||||
"click-for-quick-room-overview": "❔ Нажмите здесь, чтобы ознакомиться с кратким обзором",
|
||||
"push-to-talk-enable": "🔊 Включить режим «Нажми, чтобы говорить»",
|
||||
"welcome-to-control-room": "Welcome. This is the control-room for the group-chat. There are different things you can use this room for:<br><br>\t<li>You can host a group chat with friends using a room. Share the blue link to invite guests who will join the chat automatically.</li>\t<li>A group room can handle around 4 to 30 guests, depending on numerous factors, including CPU and available bandwidth of all guests in the room.</li>\t<li>Solo-views of each video are offered under videos as they load. These can be used within an OBS Browser Source.</li>\t<li>You can use the auto-mixing Group Scene, the green link, to auto arrange multiple videos for you in OBS.</li>\t<li>You can use this control room to record isolated video or audio streams, but it is an experimental feature still.</li>\t<li>Videos in the Director's room will be of low quality on purpose; to save bandwidth/CPU</li>\t<li>Guest's in the room will see each other's videos at a very limited quality to conserve bandwidth/CPU.</li>\t<li>OBS will see a guest's video in high-quality; the default video bitrate is 2500kbps.</li>\t<br>\tAs guests join, their videos will appear below. You can bring their video streams into OBS as solo-scenes or you can add them to the Group Scene.\t<br>The Group Scene auto-mixes videos that have been added to the group scene. Please note that the Auto-Mixer requires guests be manually added to it for them to appear in it; they are not added automatically.<br><br>Apple mobile devices, such as iPhones and iPads, do not fully support Video Group Chat. This is a hardware constraint.<br><br>\tFor advanced options and parameters, <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">see the Wiki.</a>",
|
||||
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tДобро пожаловать в OBS.Ninja! You can send text messages directly to connected peers from here.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tNames identifying connected peers will be a feature in an upcoming release.\n\t\t\t\t",
|
||||
"send-chat": "Отправить",
|
||||
"available-languages": "Доступные языки:",
|
||||
"add-more-here": "Добавить больше!",
|
||||
"waiting-for-camera-to-load": "waiting-for-camera-to-load",
|
||||
"start": "START",
|
||||
"share-your-mic": "Share your microphone",
|
||||
"share-your-camera": "Share your Camera",
|
||||
"share-your-screen": "Share your Screen",
|
||||
"join-room-with-mic": "Join room with Microphone",
|
||||
"share-screen-with-room": "Share-screen with Room",
|
||||
"join-room-with-camera": "Join room with Camera",
|
||||
"click-start-to-join": "Click Start to Join",
|
||||
"guests-only-see-director": "Guests can only see the Director's Video",
|
||||
"default-codec-select": "Preferred Video Codec: ",
|
||||
"obfuscate_url": "Obfuscate the Invite URL",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings"
|
||||
},
|
||||
"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",
|
||||
"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-chat-message-to-send-here": "Enter chat message to send here"
|
||||
}
|
||||
}
|
||||
192
translations/tr.json
Normal file
@@ -0,0 +1,192 @@
|
||||
{
|
||||
"titles": {
|
||||
"toggle-the-chat": "Toggle the Chat",
|
||||
"mute-the-speaker": "Mute the Speaker",
|
||||
"mute-the-mic": "Mute the Mic",
|
||||
"disable-the-camera": "Disable the Camera",
|
||||
"settings": "Settings",
|
||||
"hangup-the-call": "Hangup the Call",
|
||||
"show-help-info": "Show Help Info",
|
||||
"language-options": "Language Options",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "tip: Hold CTRL (command) to select Multiple",
|
||||
"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",
|
||||
"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",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Hold CTRL (or CMD) to select multiple files",
|
||||
"enter-an-https-url": "Enter an HTTPS URL",
|
||||
"lucy-g": "Lucy G",
|
||||
"flaticon": "Flaticon",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"gregor-cresnar": "Gregor Cresnar",
|
||||
"add-this-video-to-any-remote-scene-1-": "Add this Video to any remote '&scene=1'",
|
||||
"forward-user-to-another-room-they-can-always-return-": "Forward user to another room. They can always return.",
|
||||
"start-recording-this-stream-experimental-views": "Start Recording this stream. *experimental*' views",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Force the user to Disconnect. They can always reconnect.",
|
||||
"change-this-audio-s-volume-in-all-remote-scene-views": "Change this Audio's volume in all remote '&scene' views",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Remotely Mute this Audio in all remote '&scene' views",
|
||||
"disable-video-preview": "Disable Video Preview",
|
||||
"low-quality-preview": "Low-Quality Preview",
|
||||
"high-quality-preview": "High-Quality Preview",
|
||||
"send-direct-message": "Send Direct Message",
|
||||
"advanced-settings-and-remote-control": "Advanced Settings and Remote Control",
|
||||
"toggle-voice-chat-with-this-guest": "Toggle Voice Chat with this Guest",
|
||||
"join-by-room-name-here": "Enter a room name to quick join",
|
||||
"join-room": "Join room",
|
||||
"share-a-screen-with-others": "Share a Screen with others",
|
||||
"alert-the-host-you-want-to-speak": "Alert the host you want to speak",
|
||||
"record-your-stream-to-disk": "Record your stream to disk",
|
||||
"cancel-the-director-s-video-audio": "Cancel the Director's Video/Audio",
|
||||
"submit-any-error-logs": "Submit any error logs",
|
||||
"add-group-chat-to-obs": "Add Group Chat to OBS",
|
||||
"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",
|
||||
"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 to OBS",
|
||||
"remote-screenshare-into-obs": "Remote Screenshare into OBS",
|
||||
"create-reusable-invite": "Create Reusable Invite",
|
||||
"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.",
|
||||
"more-options": "More Options",
|
||||
"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-enabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "If enabled, 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 in the OBS Browser Source to capture the video or audio",
|
||||
"if-enabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "If enabled, 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",
|
||||
"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",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Request 1080p60 from the Guest instead of 720p60, if possible",
|
||||
"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-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",
|
||||
"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.",
|
||||
"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.",
|
||||
"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",
|
||||
"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.",
|
||||
"remotely-change-the-volume-of-this-guest": "Remotely change the volume of this guest",
|
||||
"mute-this-guest-everywhere": "Mute this guest everywhere",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Start Recording this remote stream to this local drive. *experimental*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "The Remote Guest will record their local stream to their local drive. *experimental*",
|
||||
"shift-this-video-down-in-order": "Shift this Video Down in Order",
|
||||
"current-index-order-of-this-video": "Current Index Order of this Video",
|
||||
"shift-this-video-up-in-order": "Shift this Video Up in Order",
|
||||
"remote-audio-settings": "Remote Audio Settings",
|
||||
"advanced-video-settings": "Advanced Video Settings",
|
||||
"activate-or-reload-this-video-device-": "Activate or Reload this video device."
|
||||
},
|
||||
"innerHTML": {
|
||||
"logo-header": "<font id=\"qos\" style=\"color: white;\">O</font>BS.Ninja ",
|
||||
"copy-this-url": "Bu URL'yi bir OBS \"Tarayıcı Kaynağına\" kopyalayın",
|
||||
"you-are-in-the-control-center": "Odanın kontrol merkezindesiniz",
|
||||
"joining-room": "Odaya bağlanıyorsunuz",
|
||||
"add-group-chat": "OBS'ye Grup Konuşması Ekle",
|
||||
"rooms-allow-for": "Odalar basit konuşma ve sohbet'in yanında çoklu video akışların gelişmiş yönetimini de sağlar.",
|
||||
"room-name": "Oda İsmi",
|
||||
"password-input-field": "Şifre",
|
||||
"enter-the-rooms-control": "Oda'nın Kontrol Merkezine Gir",
|
||||
"show-tips": "Bana ipuları göster",
|
||||
"added-notes": "\n\t\t\t\t<u><i>Ek Notlar:</i></u>\n\t\t\t\t<li>Odanın ismini bilen herkes giriş yapabilir, bu yüzden olabildiğince özgün bir isim seçin.</li>\n\t\t\t\t<li>Performans sebeplerinden ötürü bir odada dört (4) kişiden fazla olmasını tavsiye etmiyoruz, ancak bu donanımınızla ölçeklenen bir durumdur.</li>\n\t\t\t\t<li>iOS cihazları sadece iki (2) kişilik gruplarla sınırldır, bu bir donanım sınırlamasıdır.</li>\n\t\t\t\t<li>\"Kayır\" seçeneği yeni ve deneyseldir.</li>\n\t\t\t\t<li>Görünebilmesi için \"Grup Sahnesine\" bir kamera akışı \"eklemeniz\" gerekiyor.</li>\n\t\t\t\t<li>Misafirlerin ekranlarına yeni bir \"geliştirilmiş tam ekran\" düğmesi eklendi.</li>\n\t\t\t\t",
|
||||
"back": "Geri",
|
||||
"add-your-camera": "Kamera'nı OBS'ye Ekle",
|
||||
"ask-for-permissions": "Allow Access to Camera/Microphone",
|
||||
"waiting-for-camera": "Kameranın yüklenmesi bekleniyor",
|
||||
"video-source": "Video kaynağı",
|
||||
"max-resolution": "Maksimum Çözünürlük",
|
||||
"balanced": "Dengeli",
|
||||
"smooth-cool": "Pürüzsüz ve Soğukkanlı",
|
||||
"select-audio-source": "Ses Kaynaklarını Seçin",
|
||||
"no-audio": "Sessiz",
|
||||
"select-output-source": " Ses Çıkışı: \n\t\t\t\t\t",
|
||||
"remote-screenshare-obs": "OBS'ye uzaktan ekran paylaşımı",
|
||||
"note-share-audio": "\n\t\t\t\t\t<b>note</b>: Chrome'da \"Sesi paylaş\" 'ı seçmeyi unutma.<br>(Firefox ses paylaşımını desteklemiyor.)",
|
||||
"select-screen-to-share": "PAYLAŞILACAK EKRANI SEÇİN",
|
||||
"audio-sources": "Ses Kaynakları",
|
||||
"create-reusable-invite": "Yeniden Kullanılabilir Davet Oluştur",
|
||||
"here-you-can-pre-generate": "Burada tekrar kullanılabilir bir Tarayıcı Kaynak bağlantısı ve onunla ilişkili misafir davet bağlantısı oluşturabilirsin.",
|
||||
"generate-invite-link": "DAVET BAĞLANTISINI OLUŞTUR",
|
||||
"advanced-paramaters": "Gelişimişi Özellikler",
|
||||
"unlock-video-bitrate": "Video Bitrate Sınırını Kaldır (20mbps)",
|
||||
"force-vp9-video-codec": "VP9 Codec'e Zorla (görüntüde daha az bozulma)",
|
||||
"enable-stereo-and-pro": "Stereo ve Pro HD Sesi Etkinleştir",
|
||||
"video-resolution": "Video Çözünürlüğü: ",
|
||||
"hide-mic-selection": "Force Default Microphone",
|
||||
"hide-screen-share": "Ekran Paylaşma'yı Gizle",
|
||||
"allow-remote-control": "Kamera Zoom'una Uzaktan Kontrol (android)",
|
||||
"add-a-password-to-stream": " Şifre Ekle:",
|
||||
"add-the-guest-to-a-room": " Odaya Misafiri Ekle:",
|
||||
"invite-group-chat-type": "Bu oda misafiri:",
|
||||
"can-see-and-hear": "Grup konuşmasını görebilir ve duyabilir",
|
||||
"can-hear-only": "Grup konunşmasını sadece duyabilir",
|
||||
"cant-see-or-hear": "Gup konuşmasını duyamaz ve göremez",
|
||||
"share-local-video-file": "Stream Media File",
|
||||
"share-website-iframe": "Share Website",
|
||||
"run-a-speed-test": "Run a Speed Test",
|
||||
"read-the-guides": "Browse the Guides",
|
||||
"info-blob": "\n\t\t\t\t\t\t<h2>OBS.Ninja Nedir?</h2><br>\n\t\t\t\t\t\t<li>100% <b>bedava</b>; indirme yok; kişisel veri toplama yok; giriş yok</li>\n\t\t\t\t\t\t<li>Bilgisayarınızdan, dizüstünden, telefonunuzdan - hatta arkadaşlarınızdan görüntüleri OBS akışınızın içine alın</li>\n\t\t\t\t\t\t<li>Biz yeni nesil Peer-to-Peer (Kişiden-Kişiye) yönlendirme teknolojisi kullanıyoruz, bu sayede çok düşük gecikme ve gizlilik sağlayabiliyoruz</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<li>Youtube video <i class=\"fa fa-youtube-play\" aria-hidden=\"true\"></i> <a href=\"https://www.youtube.com/watch?v=6R_sQKxFAhg\">Burada demoyu görebilirsiniz (ingilizce)</a> </li>",
|
||||
"add-to-scene": "Add to Scene",
|
||||
"forward-to-room": "Transfer",
|
||||
"record": "Kaydet",
|
||||
"disconnect-guest": "Hangup",
|
||||
"mute": "Sesi Kıs",
|
||||
"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>",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Message",
|
||||
"advanced-camera-settings": "<i class=\"las la-cog\"></i> Advanced",
|
||||
"voice-chat": "<i class=\"las la-microphone\"></i> Voice Chat",
|
||||
"open-in-new-tab": "Yeni Sekmede Aç",
|
||||
"copy-to-clipboard": "Panoya Kopyala",
|
||||
"click-for-quick-room-overview": "❔ Buraya tıklayarak hızlı yardım ve genel bakışa göz atın",
|
||||
"push-to-talk-enable": "🔊 Yönetmen bas-konuş'u etkinleştir",
|
||||
"welcome-to-control-room": "Hoş geldiniz. Bu grup konuşması için kontrol odasıdır. Bu odayı farklı amaçlar için kullanabilirsiniz:<br><br>\t<li>Arkadaşlarınız ile grup konunşması yapmak için bir oda kullanabilirsiniz. Otomatik olarak gruba dahil etmek için misafirleriniz ile mavi bağlantıyı paylaşın.</li>\t<li>Bir grup odası 4 - 30 sayıda misafir ağırlayabilir. Ancak bu bir çok etkene göre değişebilir, yeterli CPU ve internet bant genişliği gibi.</li>\t<li>Her videonun tekil görüntüsü bağlantıları misafirler bağlandıkça videolarının altında yer alacak. Bunları OBS tarayıcı kaynağı olarak kullanabilirsiniz.</li>\t<li>Otomatik-karıştırma grup sahnesi (yeşil bağlantı) bir çok videoyu OBS'de otomatik ayarlamak için kullanabilirsiniz.</li>\t<li>Bu odayı kullanarak her bir video için ayrı ayrı video ve ses kaynaklarını kaydedebilirsiniz, ancak bu özellik halen deneysel aşamadadır.</li>\t<li>Yönetmen odasında yer alan videolar kasten düşük kalitede tutulmuştur; CPU ve internetbant genişliğinden tasarruf için</li>\t<li>Odada yer alan misafirler, CPU ve internetten tasarruf etmek amacıyla bir birlerinin videolarını düşük kalitede görecek.</li>\t<li>OBS misafirlerin videolarını çok yüksek kalitede alacak, varsayılan kalite 2500kbps'dir.</li>\t<br>\tMisafirler eklendikçe videoları aşağıda belirecek. OBS'ye videolarını tekil sahneler olarak ekleyebilir, ya da grup sahnelerine ekleyebilirsiniz.\t<br>Grup sahnesi, eklenmiş videoları otomatik olarak karıştırır. Otomatik karıştırmanın çalışması için misafirlerin el ile bu sahneye eklenmesi gerektiğini unutmayın; otomatik olarak sahnelere eklenmeyeceklerdir.<br><br>iPhone iPad gibi Apple mobil cihazlar, tam olarak video grup görüşmeyi desteklemiyor. Bu bir donanım sınırlamasıdır.<br><br>\tGekişmiş özellik ve parametreler için <a href=\"https://github.com/steveseguin/obsninja/wiki/Guides-and-How-to's#urlparameters\">Wiki'ye göz atın.</a>",
|
||||
"more-than-four-can-join": "These four guest slots are just for demonstration. More than four guests can actually join a room.",
|
||||
"welcome-to-obs-ninja-chat": "\n\t\t\t\t\tOBS.Ninja'ya hoş geldin! Bağlı olan kişilere buradan yazılı mesajlar gönderebilirsin.\n\t\t\t\t",
|
||||
"names-and-labels-coming-soon": "\n\t\t\t\t\tBağlanan kişileri tanımlayan isimler ileriki bir geliştirmede yer alacak.\n\t\t\t\t",
|
||||
"send-chat": "Gönder",
|
||||
"available-languages": "Diller:",
|
||||
"add-more-here": "Daha fazla ekle!",
|
||||
"waiting-for-camera-to-load": "waiting-for-camera-to-load",
|
||||
"start": "START",
|
||||
"share-your-mic": "Share your microphone",
|
||||
"share-your-camera": "Share your Camera",
|
||||
"share-your-screen": "Share your Screen",
|
||||
"join-room-with-mic": "Join room with Microphone",
|
||||
"share-screen-with-room": "Share-screen with Room",
|
||||
"join-room-with-camera": "Join room with Camera",
|
||||
"click-start-to-join": "Click Start to Join",
|
||||
"guests-only-see-director": "Guests can only see the Director's Video",
|
||||
"default-codec-select": "Preferred Video Codec: ",
|
||||
"obfuscate_url": "Obfuscate the Invite URL",
|
||||
"hide-the-links": " LINKS (GUEST INVITES & SCENES)",
|
||||
"invite-users-to-join": "Guests can use the link to join the group room",
|
||||
"this-is-obs-browser-source-link": "Use in OBS or other studio software to capture the group video mix",
|
||||
"mute-scene": "mute in scene",
|
||||
"mute-guest": "mute guest",
|
||||
"record-local": " Record Local",
|
||||
"record-remote": " Record Remote",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio Settings"
|
||||
},
|
||||
"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",
|
||||
"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-chat-message-to-send-here": "Enter chat message to send here"
|
||||
}
|
||||
}
|
||||
@@ -1,65 +1,170 @@
|
||||
// Copy and paste this code into OBS.Ninja's developer's console to generate new Translation files
|
||||
|
||||
function downloadTranslation(filename, trans={}){ // downloads the current translation to a file
|
||||
allItems.forEach(function(ele){
|
||||
trans[ele.dataset.translate] = ele.innerHTML;
|
||||
});
|
||||
function downloadTranslation(filename, trans = {}) { // downloads the current translation to a file
|
||||
|
||||
var textDoc = JSON.stringify(trans, null, 2);
|
||||
const textDoc = JSON.stringify(trans, null, 2);
|
||||
|
||||
var hiddenElement = document.createElement('a');
|
||||
hiddenElement.href = 'data:text/html,' + encodeURIComponent(textDoc);
|
||||
hiddenElement.target = '_blank';
|
||||
hiddenElement.download = filename+".json";
|
||||
hiddenElement.click();
|
||||
return trans;
|
||||
const hiddenElement = document.createElement('a');
|
||||
|
||||
hiddenElement.href = `data:text/html,${
|
||||
encodeURIComponent(textDoc)
|
||||
}`;
|
||||
hiddenElement.target = '_blank';
|
||||
hiddenElement.download = `${filename}.json`;
|
||||
hiddenElement.click();
|
||||
|
||||
return trans;
|
||||
}
|
||||
|
||||
|
||||
function updateTranslation(filename){ // updates the website with a specific translation
|
||||
var request = new XMLHttpRequest();
|
||||
request.open('GET', "./translations/"+filename+'.json?'+(Math.random()*100).toString(), false); // `false` makes the request synchronous
|
||||
request.send(null);
|
||||
function updateTranslation(filename) { // updates the website with a specific translation
|
||||
const request = new XMLHttpRequest();
|
||||
request.open('GET', `./translations/${filename}.json?${
|
||||
(Math.random() * 100).toString()
|
||||
}`, false); // `false` makes the request synchronous
|
||||
request.send(null);
|
||||
|
||||
if (request.status !== 200) {
|
||||
return;
|
||||
}
|
||||
try{
|
||||
data = JSON.parse(request.responseText);
|
||||
} catch(e){
|
||||
console.log(request.responseText);
|
||||
console.error(e);
|
||||
return false;
|
||||
}
|
||||
allItems.forEach(function(ele){
|
||||
if (ele.dataset.translate in data){
|
||||
ele.innerHTML = data[ele.dataset.translate];
|
||||
}
|
||||
});
|
||||
return [filename, data];
|
||||
if (request.status !== 200) {
|
||||
return false, {};
|
||||
}
|
||||
try {
|
||||
var data = JSON.parse(request.responseText);
|
||||
} catch (e) {
|
||||
console.log(request.responseText);
|
||||
console.error(e);
|
||||
return false, {};
|
||||
}
|
||||
|
||||
const oldTransItems = data.innerHTML;
|
||||
// const allItems1 = document.querySelectorAll('[data-translate]');
|
||||
|
||||
allItems.forEach((ele) => {
|
||||
const key = ele.dataset.translate;//.replace(/[\W]+/g, "-").toLowerCase();
|
||||
if (key in oldTransItems) {
|
||||
ele.innerHTML = oldTransItems[key];
|
||||
}
|
||||
});
|
||||
|
||||
const oldTransTitles = data.titles;
|
||||
//const allTitles1 = document.querySelectorAll('[title]');
|
||||
allTitles.forEach((ele) => {
|
||||
const key = ele.dataset.key;
|
||||
//const key = ele.title.replace(/[\W]+/g, "-").toLowerCase();
|
||||
if (key in oldTransTitles) {
|
||||
ele.title = oldTransTitles[key];
|
||||
}
|
||||
});
|
||||
|
||||
const oldTransPlaceholders = data.placeholders;
|
||||
//const allPlaceholders1 = document.querySelectorAll('[placeholder]');
|
||||
allPlaceholders.forEach((ele) => {
|
||||
const key = ele.dataset.key;
|
||||
//const key = ele.placeholder.replace(/[\W]+/g, "-").toLowerCase();
|
||||
if (key in oldTransPlaceholders) {
|
||||
ele.placeholder = oldTransPlaceholders[key];
|
||||
}
|
||||
});
|
||||
|
||||
return [true, data];
|
||||
}
|
||||
|
||||
var updateList = ["en", "de", "es", "ru", "fr", "pl", "ja", "ar", "it", "nl", "pt"]; // list of languages to update. Update this if you add a new language.
|
||||
var allItems = document.querySelectorAll('[data-translate]');
|
||||
var defaultTrans = {};
|
||||
allItems.forEach(function(ele){
|
||||
defaultTrans[ele.dataset.translate] = ele.innerHTML;
|
||||
const updateList = [
|
||||
"cs",
|
||||
"de",
|
||||
"en",
|
||||
"es",
|
||||
"fr",
|
||||
"it",
|
||||
"ja",
|
||||
"nl",
|
||||
"pig",
|
||||
"pt",
|
||||
"ru",
|
||||
"tr",
|
||||
"blank"
|
||||
]; // list of languages to update. Update this if you add a new language.
|
||||
|
||||
const allItems = document.querySelectorAll('[data-translate]');
|
||||
const defaultTrans = {};
|
||||
allItems.forEach((ele) => {
|
||||
const key = ele.dataset.translate;//.replace(/[\W]+/g, "-").toLowerCase();
|
||||
defaultTrans[key] = ele.innerHTML;
|
||||
});
|
||||
|
||||
console.log(defaultTrans);
|
||||
const defaultTransTitles = {};
|
||||
const allTitles = document.querySelectorAll('[title]');
|
||||
allTitles.forEach((ele) => {
|
||||
const key = ele.title.replace(/[\W]+/g, "-").toLowerCase();
|
||||
ele.dataset.key = key;
|
||||
defaultTransTitles[key] = ele.title;
|
||||
});
|
||||
|
||||
for (var i in updateList){
|
||||
var ln = updateList[i];
|
||||
res = updateTranslation(ln);
|
||||
if (res==false){continue;}
|
||||
if (res[0]){
|
||||
console.log(res[0]);
|
||||
downloadTranslation(res[0], res[1]);
|
||||
}
|
||||
|
||||
allItems.forEach(function(ele){
|
||||
if (ele.dataset.translate in defaultTrans){
|
||||
ele.innerHTML = defaultTrans[ele.dataset.translate];
|
||||
}
|
||||
});
|
||||
}
|
||||
const defaultTransPlaceholders = {};
|
||||
const allPlaceholders = document.querySelectorAll('[placeholder]');
|
||||
allPlaceholders.forEach((ele) => {
|
||||
const key = ele.placeholder.replace(/[\W]+/g, "-").toLowerCase();
|
||||
ele.dataset.key = key;
|
||||
defaultTransPlaceholders[key] = ele.placeholder;
|
||||
});
|
||||
|
||||
const combinedTrans = {};
|
||||
combinedTrans.titles = defaultTransTitles;
|
||||
combinedTrans.innerHTML = defaultTrans;
|
||||
combinedTrans.placeholders = defaultTransPlaceholders;
|
||||
|
||||
var counter = 0;
|
||||
for (const i in updateList) {
|
||||
const lang = updateList[i];
|
||||
setTimeout((ln) => {
|
||||
var suceess = updateTranslation(ln); // we don't need to worry about DATA.
|
||||
if (suceess[0] == true) {
|
||||
const newTrans = suceess[1].innerHTML;
|
||||
//const allItems = document.querySelectorAll('[data-translate]');
|
||||
allItems.forEach((ele) => {
|
||||
const key = ele.dataset.translate;//.replace(/[\W]+/g, "-").toLowerCase();
|
||||
newTrans[key] = ele.innerHTML;
|
||||
});
|
||||
|
||||
const newTransTitles = suceess[1].titles;
|
||||
//const allTitles = document.querySelectorAll('[title]');
|
||||
allTitles.forEach((ele) => {
|
||||
const key = ele.dataset.key;
|
||||
newTransTitles[key] = ele.title;
|
||||
});
|
||||
|
||||
const newPlaceholders = suceess[1].placeholders;
|
||||
// const allPlaceholders = document.querySelectorAll('[placeholder]');
|
||||
allPlaceholders.forEach((ele) => {
|
||||
const key = ele.dataset.key;
|
||||
newPlaceholders[key] = ele.placeholder;
|
||||
});
|
||||
|
||||
// //// DOWNLOAD UPDATED TRANSLATION
|
||||
const outputTrans = {};
|
||||
outputTrans.titles = newTransTitles;
|
||||
outputTrans.innerHTML = newTrans;
|
||||
outputTrans.placeholders = newPlaceholders;
|
||||
downloadTranslation(ln, outputTrans);
|
||||
}
|
||||
// //////// RESET THING BACK
|
||||
allItems.forEach((ele) => {
|
||||
const key = ele.dataset.translate;//.replace(/[\W]+/g, "-").toLowerCase();
|
||||
if (key in defaultTrans) {
|
||||
ele.innerHTML = defaultTrans[key];
|
||||
}
|
||||
});
|
||||
allTitles.forEach((ele) => {
|
||||
const key = ele.dataset.key;
|
||||
if (key in defaultTransTitles) {
|
||||
ele.title = defaultTransTitles[key];
|
||||
}
|
||||
});
|
||||
allPlaceholders.forEach((ele) => {
|
||||
const key = ele.dataset.key;
|
||||
if (key in defaultTransPlaceholders) {
|
||||
ele.placeholder = defaultTransPlaceholders[key];
|
||||
}
|
||||
});
|
||||
}, counter, lang);
|
||||
counter += 800;
|
||||
}
|
||||
|
||||
@@ -45,7 +45,10 @@ sudo ufw allow 49152:65535/tcp
|
||||
sudo ufw allow 49152:65535/udp
|
||||
```
|
||||
|
||||
Update turnserver.conf with passwords, domain names, and whatever else that needs changing. Example contents are provided below. Once you have updated it, start the TURN server and ensure it started correctly.
|
||||
If we expect heavy usage of this server, like hundreds of connections, you might want to ensure your system supports enough open sockets. I'm not sure if this actually works or is needed, but you can see this article for example on how to increase the number of available sockets on Ubuntu: https://medium.com/@muhammadtriwibowo/set-permanently-ulimit-n-open-files-in-ubuntu-4d61064429a
|
||||
|
||||
|
||||
Next, update turnserver.conf with passwords, domain names, and whatever else that needs changing. Example contents are provided below. Once you have updated it, start the TURN server and ensure it started correctly.
|
||||
```
|
||||
sudo vi /etc/turnserver.conf
|
||||
|
||||
|
||||