mirror of
https://github.com/eliasstepanik/vdo.ninja.git
synced 2026-01-11 13:48:38 +00:00
Add files via upload
This commit is contained in:
parent
a9ec33c97f
commit
deb66966c2
131
esports.html
Normal file
131
esports.html
Normal file
@ -0,0 +1,131 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>IFRAME Example</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
|
||||
<style>
|
||||
body{
|
||||
padding:0;
|
||||
margin:0;
|
||||
background-color: #0000;
|
||||
}
|
||||
iframe {
|
||||
border:0;
|
||||
margin:0;
|
||||
padding:0;
|
||||
display:block;
|
||||
width:100%;
|
||||
height:90%
|
||||
}
|
||||
#viewlink {
|
||||
width:400px;
|
||||
}
|
||||
#container {
|
||||
display:block;
|
||||
padding:0px;
|
||||
}
|
||||
input{
|
||||
padding:5px;
|
||||
margin:5px;
|
||||
}
|
||||
button{
|
||||
padding:5px;
|
||||
margin:5px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
|
||||
function loadIframe(){
|
||||
|
||||
document.getElementById("container").innerHTML = "";
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("div");
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;display-capture;";
|
||||
|
||||
|
||||
var iframesrc = "https://vdo.ninja/?transparent&cleanoutput&bitrate=200&manual&noaudio&view=";
|
||||
|
||||
var listOfStreamIDs = [
|
||||
"1234_pov",
|
||||
"2345_pov",
|
||||
"3456_pov",
|
||||
"4567_pov",
|
||||
"5678_pov"
|
||||
];
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "List connected StreamIDs";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"getStreamIDs":true}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "HIDE ALL";
|
||||
button.dataset.sid = listOfStreamIDs[i];
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"target":"*", "remove":true}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
for (var i=0;i<listOfStreamIDs.length;i++){
|
||||
if (i!==0){
|
||||
iframesrc+=",";
|
||||
}
|
||||
iframesrc+=listOfStreamIDs[i];
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "SHOW "+listOfStreamIDs[i];
|
||||
button.dataset.sid = listOfStreamIDs[i];
|
||||
button.title = "Publish using: https://vdo.ninja/?push="+listOfStreamIDs[i];
|
||||
button.onclick = function(){
|
||||
iframe.contentWindow.postMessage({"target":"*", "remove":true}, '*');
|
||||
iframe.contentWindow.postMessage({"target":this.dataset.sid, "add":true, "settings":{"style":{"width":"100%", "height":"100%", "display":"block"}}}, '*');
|
||||
}; // target can be a stream ID or * for all.
|
||||
iframeContainer.appendChild(button);
|
||||
}
|
||||
|
||||
iframe.src = iframesrc;
|
||||
iframeContainer.appendChild(iframe);
|
||||
document.getElementById("container").appendChild(iframeContainer);
|
||||
|
||||
//////////// LISTEN FOR EVENTS
|
||||
|
||||
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
|
||||
var eventer = window[eventMethod];
|
||||
var messageEvent = eventMethod === "attachEvent" ? "onmessage" : "message";
|
||||
|
||||
|
||||
/// If you have a routing system setup, you could have just one global listener for all iframes instead.
|
||||
|
||||
eventer(messageEvent, function (e) {
|
||||
if (e.source != iframe.contentWindow){return} // reject messages send from other iframes
|
||||
|
||||
|
||||
if ("action" in e.data){
|
||||
var outputWindow = document.createElement("div");
|
||||
outputWindow.innerHTML = "event: "+e.data.action+"<br />";
|
||||
outputWindow.style.border="1px dotted black";
|
||||
iframeContainer.appendChild(outputWindow);
|
||||
}
|
||||
|
||||
|
||||
if ("streamIDs" in e.data){
|
||||
var outputWindow = document.createElement("div");
|
||||
outputWindow.innerHTML = "streamID list:<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);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<div id="container">
|
||||
<button onclick="loadIframe();">CONNECT</button>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
13
iframe.html
13
iframe.html
@ -41,7 +41,7 @@
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("div");
|
||||
var iframesrc = document.getElementById("viewlink").value;
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;";
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;display-capture;";
|
||||
|
||||
if (iframesrc==""){
|
||||
iframesrc="./";
|
||||
@ -192,6 +192,11 @@
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"getLoudness":false}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Get detailed state (if Director)";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"getDetailedState":true}, '*');};
|
||||
iframeContainer.appendChild(button);
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Start Recording";
|
||||
button.onclick = function(){iframe.contentWindow.postMessage({"record":true}, '*');};
|
||||
@ -352,7 +357,13 @@
|
||||
outputWindow.innerHTML += key + " Loudness: " + e.data.loudness[key] + "\n";
|
||||
}
|
||||
outputWindow.style.border="1px black";
|
||||
}
|
||||
|
||||
if ("detailedState" in e.data){
|
||||
var outputWindow = document.createElement("div");
|
||||
outputWindow.innerHTML = "child-page-action: detailedState<br />"+JSON.stringify(e.data.detailedState)+"<br />";
|
||||
outputWindow.style.border="1px dotted black";
|
||||
iframeContainer.appendChild(outputWindow);
|
||||
}
|
||||
|
||||
if ("sensors" in e.data){
|
||||
|
||||
16
index.html
16
index.html
@ -54,7 +54,7 @@
|
||||
transition: opacity .1s linear;
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="./main.css?ver=140" />
|
||||
<link rel="stylesheet" href="./main.css?ver=141" />
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/adapter.min.js"></script>
|
||||
<style id="lightbox-animations" type="text/css"></style>
|
||||
</head>
|
||||
@ -67,7 +67,7 @@
|
||||
<link itemprop="url" href="./media/vdoNinja_logo_full.png" />
|
||||
</span>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/CodecsHandler.js?ver=34"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=297"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./webrtc.js?ver=301"></script>
|
||||
<input id="zoomSlider" type="range" style="display: none;" />
|
||||
<div id="header">
|
||||
|
||||
@ -742,15 +742,12 @@
|
||||
<li>
|
||||
Video glitching and random audio-loss can occur when using the OBS browser source. The <a href='https://github.com/steveseguin/electroncapture/blob/master/README.md'>Electron Capture app</a> avoids these issues.
|
||||
</li>
|
||||
<li>
|
||||
A list of less common issues can <a href="https://docs.vdo.ninja/common-errors-and-known-issues/known-issues-browser-bugs-and-more">be found here</a>.
|
||||
</li>
|
||||
<br />
|
||||
<h4 style="color:#daad09;">
|
||||
👋 👀 Welcome to VDO Ninja! We've rebranded! 📼 Nothing else is changing and we're staying 100% free.
|
||||
</h4>
|
||||
<br />
|
||||
🎁 Site updated September 7th. The <a href="https://docs.vdo.ninja/release-notes/v19">v19.0 release notes are here</a>. If new issues occur, the previous version can be <a href="https://vdo.ninja/v183/">found here</a>.
|
||||
🎁 Site updated October 6th. The <a href="https://docs.vdo.ninja/release-notes/v19">v19 release notes are here</a>. If new issues occur, the previous version can be <a href="https://vdo.ninja/v183/">found here</a>.
|
||||
|
||||
<br />
|
||||
<br />
|
||||
@ -1742,6 +1739,7 @@
|
||||
<li><a onclick="changeLg('cn');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Asia/China">Chinese (中文)</a></li>
|
||||
<li><a onclick="changeLg('cs');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Prague">Czech</a></li>
|
||||
<li><a onclick="changeLg('uk');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Ukraine">Ukrainian</a></li>
|
||||
<li><a onclick="changeLg('eu');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Euskara">Basque</a></li>
|
||||
<li><a onclick="changeLg('pig');toggle(document.getElementById('languages'));" style="cursor: pointer;">Pig Latin</a></li>
|
||||
</ul>
|
||||
<br />
|
||||
@ -1774,7 +1772,7 @@
|
||||
|
||||
|
||||
var session = WebRTC.Media; // session is a required global variable if configuring manually. Run before loading main.js but after webrtc.js.
|
||||
session.version = "19.2";
|
||||
session.version = "19.3";
|
||||
session.streamID = session.generateStreamID(); // randomly generates a streamID for this session. You can set your own programmatically if needed
|
||||
|
||||
session.defaultPassword = "someEncryptionKey123"; // Change this password if self-deploying for added security/privacy
|
||||
@ -1851,11 +1849,11 @@
|
||||
// session.title // "zzzz"
|
||||
</script>
|
||||
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/aes.js"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=198"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=199"></script>
|
||||
<!--
|
||||
// If you wish to change branding, blank offers a good clean start.
|
||||
<script type="text/javascript" id="main-js" src="./main.js" data-translation="blank"></script>
|
||||
-->
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=271"></script>
|
||||
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=272"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
217
lib.js
217
lib.js
@ -6051,7 +6051,7 @@ function publishScreen() {
|
||||
}
|
||||
//session.screenShareState=true;
|
||||
if (!(session.cleanOutput)) {
|
||||
getById("mutebutton").classList.remove("float");
|
||||
getById("mutebutton").classList.remove("advanced");
|
||||
getById("mutespeakerbutton").classList.remove("advanced");
|
||||
//getById("mutespeakerbutton").className="float";
|
||||
getById("chatbutton").className = "float";
|
||||
@ -9260,7 +9260,6 @@ function playtone(screen = false, tonename="testtone") {
|
||||
log("changing audio sink:" + session.sink);
|
||||
toneEle.play();
|
||||
}).catch(error => {
|
||||
errolog("couldn't set sink");
|
||||
errorlog(error);
|
||||
});
|
||||
} catch (e) {
|
||||
@ -9671,7 +9670,6 @@ function resetupAudioOut() {
|
||||
for (var UUID in session.rpcs) {
|
||||
if (session.rpcs[UUID].videoElement){
|
||||
try{
|
||||
log("10076");
|
||||
session.rpcs[UUID].videoElement.pause().then(() => {
|
||||
setTimeout(function(uuid) {
|
||||
log("win");
|
||||
@ -9681,8 +9679,8 @@ function resetupAudioOut() {
|
||||
});
|
||||
} catch(e){errorlog(e);}
|
||||
}, 0, UUID);
|
||||
});
|
||||
} catch(e){errorlog(e);}
|
||||
}).catch(errorlog);
|
||||
} catch(e){warnlog(e);}
|
||||
}
|
||||
}
|
||||
return;
|
||||
@ -9836,8 +9834,6 @@ async function toggleScreenShare(reload = false) { ////////////////////////////
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (session.screenShareState == false) { // adding a screen
|
||||
|
||||
await grabScreen(quality = 0, audio = true, videoOnEnd = true).then(res => {
|
||||
@ -9847,63 +9843,67 @@ async function toggleScreenShare(reload = false) { ////////////////////////////
|
||||
getById("screensharebutton").classList.remove("float");
|
||||
enumerateDevices().then(gotDevices2).then(function() {});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
} else { // removing a screen . session.screenShareState already true true /////////////////////////////////
|
||||
|
||||
|
||||
session.screenShareState = false;
|
||||
pokeIframeAPI("screen-share-ended");
|
||||
|
||||
if (beforeScreenShare) {
|
||||
|
||||
if (screenShareAudioTrack){
|
||||
session.streamSrc.getAudioTracks().forEach(function(track) { // previous video track; saving it. Must remove the track at some point.
|
||||
if (screenShareAudioTrack == track) { // since there are more than one audio track, lets see if we can remove JUST the audio track for the screen share.
|
||||
session.streamSrc.removeTrack(track);
|
||||
track.stop();
|
||||
}
|
||||
});
|
||||
|
||||
cleanupMediaTracks();
|
||||
|
||||
|
||||
session.videoElement.srcObject.getAudioTracks().forEach(function(track) {
|
||||
if (screenShareAudioTrack == track) { // since there are more than one audio track, lets see if we can remove JUST the audio track for the screen share.
|
||||
session.streamSrc.removeTrack(track);
|
||||
track.stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getById("screensharebutton").classList.add("float");
|
||||
getById("screensharebutton").classList.remove("float2");
|
||||
|
||||
session.streamSrc.addTrack(beforeScreenShare); // add back in the video track we had before we started screen sharing. It should be NULL if we changed the video track else where (such as via the settings). #TODO:
|
||||
session.videoElement.srcObject.addTrack(beforeScreenShare);
|
||||
//if (beforeScreenShare) {
|
||||
|
||||
toggleVideoMute(true);
|
||||
for (UUID in session.pcs) {
|
||||
try {
|
||||
if ((session.pcs[UUID].guest == true) && (session.roombitrate === 0)) {
|
||||
log("room rate restriction detected. No videos will be published to other guests");
|
||||
} else if (session.pcs[UUID].allowVideo == true) { // allow
|
||||
var senders = session.pcs[UUID].getSenders(); // for any connected peer, update the video they have if connected with a video already.
|
||||
var added = false;
|
||||
senders.forEach((sender) => { // I suppose there could be a race condition between negotiating and updating this. if joining at the same time as changnig streams?
|
||||
if (sender.track) {
|
||||
if (sender.track && sender.track.kind == "video") {
|
||||
sender.replaceTrack(beforeScreenShare); // replace may not be supported by all browsers. eek.
|
||||
sender.track.enabled = true;
|
||||
added = true;
|
||||
}
|
||||
//cleanupMediaTracks();
|
||||
|
||||
var addedAlready = false;
|
||||
session.streamSrc.getVideoTracks().forEach(function(track) {
|
||||
if (beforeScreenShare && (track == beforeScreenShare)){
|
||||
addedAlready=true;
|
||||
} else {
|
||||
session.streamSrc.removeTrack(track);
|
||||
track.stop();
|
||||
}
|
||||
});
|
||||
if (added == false) {
|
||||
session.pcs[UUID].addTrack(beforeScreenShare, stream);
|
||||
setTimeout(function(uuid){session.optimizeBitrate(uuid);},session.rampUpTime, UUID); // 3 seconds lets us ramp up the quality a bit and figure out the total bandwidth quicker
|
||||
|
||||
session.videoElement.srcObject.getVideoTracks().forEach(function(track) {
|
||||
if (beforeScreenShare && (track == beforeScreenShare)){
|
||||
addedAlready=true;
|
||||
} else {
|
||||
session.videoElement.srcObject.removeTrack(track);
|
||||
track.stop();
|
||||
}
|
||||
});
|
||||
|
||||
if (beforeScreenShare){
|
||||
if (addedAlready==false){
|
||||
session.streamSrc.addTrack(beforeScreenShare); // add back in the video track we had before we started screen sharing. It should be NULL if we changed the video track else where (such as via the settings). #TODO:
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
errorlog(e);
|
||||
}
|
||||
}
|
||||
session.refreshScale();
|
||||
|
||||
//if (beforeScreenShare || screenShareAudioTrack){
|
||||
session.videoElement.srcObject = outboundAudioPipeline(session.streamSrc); // updateREnderOoutput is just for video if videoElement is already activated.
|
||||
updateRenderOutpipe();
|
||||
//}
|
||||
|
||||
beforeScreenShare = null;
|
||||
}
|
||||
screenShareAudioTrack=null;
|
||||
toggleSettings(forceShow = true);
|
||||
//enumerateDevices().then(gotDevices2).then(function(){
|
||||
//grabVideo();
|
||||
@ -10319,6 +10319,7 @@ async function grabScreen(quality = 0, audio = true, videoOnEnd = false) {
|
||||
track.stop();
|
||||
log("stopping video track 3");
|
||||
});
|
||||
|
||||
if (session.videoElement.srcObject){
|
||||
session.videoElement.srcObject.getVideoTracks().forEach(function(track) {
|
||||
session.videoElement.srcObject.removeTrack(track);
|
||||
@ -10329,6 +10330,17 @@ async function grabScreen(quality = 0, audio = true, videoOnEnd = false) {
|
||||
session.videoElement.srcObject = session.streamSrc;
|
||||
}
|
||||
|
||||
if (screenShareAudioTrack){
|
||||
session.streamSrc.getAudioTracks().forEach(function(track) { // previous video track; saving it. Must remove the track at some point.
|
||||
if (screenShareAudioTrack == track) { // since there are more than one audio track, lets see if we can remove JUST the audio track for the screen share.
|
||||
session.streamSrc.removeTrack(track);
|
||||
track.stop();
|
||||
}
|
||||
});
|
||||
screenShareAudioTrack=null;
|
||||
senderAudioUpdate();
|
||||
}
|
||||
|
||||
session.screenShareState = false;
|
||||
pokeIframeAPI("screen-share-ended");
|
||||
|
||||
@ -10336,47 +10348,16 @@ async function grabScreen(quality = 0, audio = true, videoOnEnd = false) {
|
||||
getById("screensharebutton").classList.remove("float2");
|
||||
|
||||
if (videoOnEnd == true) {
|
||||
//activatedPreview = false;
|
||||
|
||||
if (beforeScreenShare) {
|
||||
session.streamSrc.addTrack(beforeScreenShare);
|
||||
session.videoElement.srcObject.addTrack(beforeScreenShare);
|
||||
if (beforeScreenShare.kind == "video") {
|
||||
toggleVideoMute(true);
|
||||
for (UUID in session.pcs) {
|
||||
try {
|
||||
if ((session.pcs[UUID].guest == true) && (session.roombitrate === 0)) {
|
||||
log("room rate restriction detected. No videos will be published to other guests");
|
||||
} else if (session.pcs[UUID].allowVideo == true) { // allow
|
||||
var senders = session.pcs[UUID].getSenders(); // for any connected peer, update the video they have if connected with a video already.
|
||||
var added = false;
|
||||
senders.forEach((sender) => { // I suppose there could be a race condition between negotiating and updating this. if joining at the same time as changnig streams?
|
||||
if (sender.track) {
|
||||
if (sender.track && sender.track.kind == "video") {
|
||||
sender.replaceTrack(beforeScreenShare); // replace may not be supported by all browsers. eek.
|
||||
sender.track.enabled = true;
|
||||
added = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
if (added == false) {
|
||||
session.pcs[UUID].addTrack(beforeScreenShare, stream);
|
||||
setTimeout(function(uuid){session.optimizeBitrate(uuid);},session.rampUpTime, UUID); // 3 seconds lets us ramp up the quality a bit and figure out the total bandwidth quicker
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
errorlog(e);
|
||||
}
|
||||
}
|
||||
session.refreshScale();
|
||||
}
|
||||
session.streamSrc.addTrack(beforeScreenShare); // updateRenderOutpipe
|
||||
beforeScreenShare = null;
|
||||
}
|
||||
|
||||
updateRenderOutpipe();
|
||||
|
||||
toggleSettings(forceShow = true);
|
||||
//grabVideo(eleName='videosource', selector="select#videoSource3");
|
||||
|
||||
|
||||
} else {
|
||||
grabScreen();
|
||||
}
|
||||
@ -10387,57 +10368,14 @@ async function grabScreen(quality = 0, audio = true, videoOnEnd = false) {
|
||||
|
||||
stream.getTracks().forEach(function(track) {
|
||||
addScreenDevices(track);
|
||||
|
||||
session.streamSrc.addTrack(track, stream); // Lets not add the audio to this preview; echo can be annoying
|
||||
|
||||
if (session.videoElement.srcObject){
|
||||
session.videoElement.srcObject.addTrack(track, stream); // I should probably add the remote control to his ; #TODO:
|
||||
} else {
|
||||
session.videoElement.srcObject = session.streamSrc;
|
||||
}
|
||||
|
||||
if (track.kind == "video") {
|
||||
toggleVideoMute(true);
|
||||
for (UUID in session.pcs) {
|
||||
try {
|
||||
if ((session.pcs[UUID].guest == true) && (session.roombitrate === 0)) {
|
||||
log("room rate restriction detected. No videos will be published to other guests");
|
||||
} else if (session.pcs[UUID].allowVideo == true) { // allow
|
||||
var senders = session.pcs[UUID].getSenders(); // for any connected peer, update the video they have if connected with a video already.
|
||||
var added = false;
|
||||
senders.forEach((sender) => { // I suppose there could be a race condition between negotiating and updating this. if joining at the same time as changnig streams?
|
||||
if (sender.track) {
|
||||
if (sender.track && sender.track.kind == "video") {
|
||||
sender.replaceTrack(track); // replace may not be supported by all browsers. eek.
|
||||
sender.track.enabled = true;
|
||||
added = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
if (added == false) {
|
||||
session.pcs[UUID].addTrack(track, stream);
|
||||
setTimeout(function(uuid){session.optimizeBitrate(uuid);},session.rampUpTime, UUID); // 3 seconds lets us ramp up the quality a bit and figure out the total bandwidth quicker
|
||||
updateRenderOutpipe();
|
||||
|
||||
if (stream.getAudioTracks().length){
|
||||
screenShareAudioTrack = stream.getAudioTracks()[0];
|
||||
senderAudioUpdate();
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
errorlog(e);
|
||||
}
|
||||
}
|
||||
session.refreshScale();
|
||||
} else {
|
||||
toggleMute(true); // I might want to move this outside the loop, but whatever
|
||||
for (UUID in session.pcs) {
|
||||
try {
|
||||
if (session.pcs[UUID].allowAudio == true) {
|
||||
session.pcs[UUID].addTrack(track, stream); // If screen sharing, we will add audio; not replace.
|
||||
}
|
||||
} catch (e) {
|
||||
errorlog(log);
|
||||
}
|
||||
}
|
||||
screenShareAudioTrack = track;
|
||||
}
|
||||
});
|
||||
|
||||
session.applySoloChat(); // mute streams that should be muted if a director
|
||||
session.applyIsolatedChat();
|
||||
@ -11091,9 +11029,11 @@ function updateRenderOutpipe(){ // video only.
|
||||
//session.streamSrc.addTrack(track);
|
||||
warnlog("video effects were just applied");
|
||||
session.videoElement.srcObject.addTrack(track);
|
||||
|
||||
toggleVideoMute(true);
|
||||
}
|
||||
if (session.meshcast){
|
||||
if (session.mc.getSenders){
|
||||
if (session.mc.getSenders){ // should only be 0 or 1 video sender, ever.
|
||||
var added = false;
|
||||
session.mc.getSenders().forEach((sender) => { // I suppose there could be a race condition between negotiating and updating this. if joining at the same time as changnig streams?
|
||||
if (sender.track && sender.track.kind == "video") {
|
||||
@ -11137,7 +11077,6 @@ function updateRenderOutpipe(){ // video only.
|
||||
}
|
||||
|
||||
session.refreshScale();
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -11252,17 +11191,23 @@ async function grabAudio(eleName = "previewWebcam", selector = "#audioSource", t
|
||||
session.streamSrc.addTrack(track); // add video track to the preview video
|
||||
});
|
||||
}
|
||||
} catch(e){errorlog(e);}
|
||||
|
||||
senderAudioUpdate(callback);
|
||||
}
|
||||
|
||||
function senderAudioUpdate(callback=false){
|
||||
try {
|
||||
|
||||
session.videoElement.srcObject = outboundAudioPipeline(session.streamSrc);
|
||||
toggleMute(true);
|
||||
|
||||
|
||||
if (session.videoElement.srcObject.getAudioTracks()) {
|
||||
var tracks = session.videoElement.srcObject.getAudioTracks();
|
||||
|
||||
if (session.meshcast){
|
||||
if (session.mc.getSenders){
|
||||
session.mc.getSenders().forEach((sender) => {
|
||||
session.mc.getSenders().forEach((sender) => { // disable senders that aren't part of the active tracks
|
||||
var good = false;
|
||||
if (sender.track && sender.track.id && (sender.track.kind == "audio")) {
|
||||
tracks.forEach(function(track) {
|
||||
@ -11277,13 +11222,13 @@ async function grabAudio(eleName = "previewWebcam", selector = "#audioSource", t
|
||||
return;
|
||||
}
|
||||
sender.track.enabled = false;
|
||||
//session.mc.removeTrack(sender); // Apparently removeTrack causes renogiation; also kills send/recv.
|
||||
//session.mc.removeTrack(sender); // Apparently removeTrack causes renogiation; also kills send/recv. avoid
|
||||
});
|
||||
|
||||
if (tracks.length) {
|
||||
tracks.forEach(function(track) {
|
||||
var matched = false;
|
||||
session.mc.getSenders().forEach((sender) => {
|
||||
session.mc.getSenders().forEach((sender) => { // is the track in the current sender list?
|
||||
if (sender.track && sender.track.id && (sender.track.kind == "audio")) {
|
||||
warnlog(sender.track.id + " " + track.id);
|
||||
if (sender.track.id == track.id) {
|
||||
@ -11292,7 +11237,7 @@ async function grabAudio(eleName = "previewWebcam", selector = "#audioSource", t
|
||||
}
|
||||
}
|
||||
});
|
||||
if (matched) {
|
||||
if (matched) { // track already in the current sender list; skip
|
||||
return;
|
||||
}
|
||||
var added = false;
|
||||
@ -11300,7 +11245,7 @@ async function grabAudio(eleName = "previewWebcam", selector = "#audioSource", t
|
||||
if (added) {
|
||||
return;
|
||||
}
|
||||
if (sender.track && (sender.track.kind == "audio") && (sender.track.enabled == false)) {
|
||||
if (sender.track && (sender.track.kind == "audio") && (sender.track.enabled == false)) { // replace instead of add new tracks; make sure to enable old tracks being replaced
|
||||
sender.replaceTrack(track);
|
||||
sender.track.enabled = true;
|
||||
added = true;
|
||||
@ -11310,11 +11255,11 @@ async function grabAudio(eleName = "previewWebcam", selector = "#audioSource", t
|
||||
if (added) {
|
||||
return;
|
||||
}
|
||||
var sender = session.mc.addTrack(track, session.videoElement.srcObject);
|
||||
var sender = session.mc.addTrack(track, session.videoElement.srcObject); // didn't replace , since no old disabled tracks available, so let's add a new track.
|
||||
});
|
||||
} else {
|
||||
if (session.mc.getSenders){
|
||||
session.mc.getSenders().forEach((sender) => {
|
||||
session.mc.getSenders().forEach((sender) => { // disable all senders, since no tracks available.
|
||||
if (sender.track && sender.track.kind == "audio") {
|
||||
sender.track.enabled = false; // (trying this instead)
|
||||
//session.pcs[UUID].removeTrack(sender); // Apparently removeTrack causes renogiation; also kills send/recv.
|
||||
@ -13123,7 +13068,7 @@ function dragElement(elmnt) {
|
||||
function previewIframe(iframesrc) { // 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");
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;";
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;display-capture;";
|
||||
iframe.style.width = "100%";
|
||||
iframe.style.height = "100%";
|
||||
iframe.style.border = "10px dashed rgb(64 65 62)";
|
||||
@ -13198,7 +13143,7 @@ function previewIframe(iframesrc) { // this is pretty important if you want to a
|
||||
function loadIframe(iframesrc) { // 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");
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;";
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;display-capture;";
|
||||
iframe.style.width = "100%";
|
||||
iframe.style.height = "100%";
|
||||
iframe.style.border = "10px dashed rgb(64 65 62)";
|
||||
@ -15526,7 +15471,7 @@ function createIframePopup() {
|
||||
}
|
||||
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;";
|
||||
iframe.allow = "autoplay;camera;microphone;fullscreen;picture-in-picture;display-capture;";
|
||||
|
||||
var extras = "";
|
||||
if (session.password){
|
||||
|
||||
4
main.css
4
main.css
@ -3306,6 +3306,10 @@ input:checked + .slider:before {
|
||||
content: "\f544"; }
|
||||
.la-info-circle:before {
|
||||
content: "\f05a"; }
|
||||
.la-play:before {
|
||||
content: "\f04b"; }
|
||||
.la-play-circle:before {
|
||||
content: "\f144"; }
|
||||
.la.la-hdd-o:before {
|
||||
content: "\f0a0"; }
|
||||
.la-key:before {
|
||||
|
||||
41
main.js
41
main.js
@ -1113,10 +1113,9 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
if ((ver1.length == 3) && (parseInt(ver1[0]) == 2) && (cefVersion < 76) && (navigator.userAgent.indexOf('Mac OS X') != -1)) {
|
||||
updateURL("streamlabs");
|
||||
getById("main").innerHTML = "<div style='background-color:black;color:white;' data-translate='obs-macos-not-supported'><h1>Update OBS Studio to v26.1.2 or newer; older versions and StreamLabs OBS are not supported on macOS.\
|
||||
<br /><i><small><small>download here: <a href='https://github.com/obsproject/obs-studio/releases/tag/26.1.2'>https://github.com/obsproject/obs-studio/releases/tag/26.1.2</a></small></small></i>\
|
||||
<br /><i><small><small>download here: <a href='https://github.com/obsproject/obs-studio/releases'>https://github.com/obsproject/obs-studio/releases</a></small></small></i>\
|
||||
</h1> <br /><br />\
|
||||
<h2>Please use the <a href='https://github.com/steveseguin/electroncapture'>Electron Capture app</a> if there are further problems or if you wish to use StreamLabs on macOS still.</h2>\
|
||||
<br />You can find more details <u><a href='https://github.com/steveseguin/obsninja/wiki/FAQ#mac-os'>within our wiki guide - https://github.com/steveseguin/obsninja/wiki/FAQ#mac-os</a></u></h2>\
|
||||
<br /> You can bypass this error message by refreshing, <a href='" + window.location.href + "'> Clicking Here,</a> or by adding <i>&streamlabs</i> to the URL, but it may still not actually work.\
|
||||
\
|
||||
<br /> Please report this problem to steve@seguin.email if you feel it is an error.\
|
||||
@ -2988,6 +2987,44 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
|
||||
}
|
||||
}
|
||||
|
||||
if ("getDetailedState" in e.data) {
|
||||
var detailedState = {};
|
||||
for (var UUID in session.rpcs){
|
||||
if (!session.rpcs[UUID].streamID){continue;}
|
||||
detailedState[session.rpcs[UUID].streamID] = {};
|
||||
var scenes = getById("container_" + UUID).querySelectorAll('[data-action-type="addToScene"][data-scene][data--u-u-i-d="'+UUID+'"]');
|
||||
var sceneState = {};
|
||||
for (var i=0;i<scenes.length;i++){
|
||||
if (parseInt(scenes[i].dataset.value)){
|
||||
sceneState[scenes[i].dataset.scene] = true;
|
||||
} else {
|
||||
sceneState[scenes[i].dataset.scene] = false;
|
||||
}
|
||||
}
|
||||
detailedState[session.rpcs[UUID].streamID].scenes = sceneState;
|
||||
}
|
||||
|
||||
if (session.showDirector){
|
||||
if (document.getElementById("container_director")){
|
||||
detailedState[session.streamID] = {};
|
||||
var scenes = getById("container_director").querySelectorAll('[data-action-type="addToScene"][data-scene]');
|
||||
var sceneState = {};
|
||||
for (var i=0;i<scenes.length;i++){
|
||||
if (parseInt(scenes[i].dataset.value)){
|
||||
sceneState[scenes[i].dataset.scene] = true;
|
||||
} else {
|
||||
sceneState[scenes[i].dataset.scene] = false;
|
||||
}
|
||||
}
|
||||
detailedState[session.streamID].scenes = sceneState;
|
||||
}
|
||||
}
|
||||
|
||||
parent.postMessage({
|
||||
"detailedState": detailedState
|
||||
}, "*");
|
||||
}
|
||||
|
||||
if ("automixer" in e.data) {
|
||||
if (e.data.automixer == true) {
|
||||
session.manual = false;
|
||||
|
||||
@ -184,7 +184,7 @@
|
||||
var iframe = document.createElement("iframe");
|
||||
var iframeContainer = document.createElement("span");
|
||||
|
||||
iframe.allow="autoplay;camera;microphone";
|
||||
iframe.allow="autoplay;camera;microphone;display-capture;";
|
||||
iframe.allowtransparency="true";
|
||||
iframe.allowfullscreen ="true";
|
||||
|
||||
|
||||
378
translations/eu.json
Normal file
378
translations/eu.json
Normal file
@ -0,0 +1,378 @@
|
||||
{
|
||||
"titles": {
|
||||
"join-by-room-name-here": "Hasteko gelari izena jarri",
|
||||
"join-room": "Batu gelara",
|
||||
"load-the-next-guest-in-queue": "Batu hurrengo gonbidatua",
|
||||
"toggle-the-chat": "Aldatu txata",
|
||||
"mute-the-speaker": "Isildu hizlaria",
|
||||
"mute-the-mic": "Isildu mikrofonoa",
|
||||
"disable-the-camera": "Itzali kamera",
|
||||
"share-a-screen-with-others": "Elkarbanatu pantaila besteekin",
|
||||
"create-a-secondary-stream": "Sortu bigarren Stream-a",
|
||||
"settings": "Ezaugarriak",
|
||||
"hangup-the-call": "Moztu deia",
|
||||
"alert-the-host-you-want-to-speak": "Jakinarazi zuzendariari hitz egin nahi duzula.",
|
||||
"record-your-stream-to-disk": "Diskoan irarri Stream-a",
|
||||
"cancel-the-director-s-video-audio": "Zuzendariaren bideoa/audioa itzali",
|
||||
"submit-any-error-logs": "Bidali edozein akats erregistro",
|
||||
"show-help-info": "Laguntza informazioa",
|
||||
"language-options": "Hizkuntza aukerak",
|
||||
"add-to-calendar": "Gehitu egutegira",
|
||||
"add-group-chat-to-obs": "Gehitu talde txata",
|
||||
"for-large-group-rooms-this-option-can-reduce-the-load-on-remote-guests-substantially": "Parte hartzaile asko daudean bezeroen karga gutxitu dezake",
|
||||
"the-director-will-be-visible-in-scenes-as-if-a-performer-themselves-": "Zuzendaria ikusgai egongo da eszenetan, antzeztuko baluke bezala.",
|
||||
"useful-if-you-want-to-perform-and-direct-at-the-same-time": "Gaitu zuzendariak ere parte hartuko badu",
|
||||
"which-video-codec-would-you-want-used-by-default-": "Zein bideo-kodek lehenetsi nahi duzu?",
|
||||
"you-ll-enter-as-the-room-s-director": "Gelako zuzendari bezala sartuko zara",
|
||||
"add-your-camera-to-obs": "Gehitu kamera",
|
||||
"start-streaming": "Hasi zuzenekoa",
|
||||
"tip-hold-ctrl-command-to-select-multiple": "aholkua: sakatu CTRL (edo CMD) hainbat aukeratzeko",
|
||||
"improve-performance-and-quality-with-this-tip": "Errendimendua eta kalitatea hobetzeko aholkua",
|
||||
"remote-screenshare-into-obs": "Partekatu pantaila",
|
||||
"create-reusable-invite": "Sortu gonbidapen berrerabilgarria",
|
||||
"ideal-for-1080p60-gaming-if-your-computer-and-upload-are-up-for-it": "1080p60 kalitatean jokatzeko prestatua, zure ordenagailuak eta konexioak onartzen badute",
|
||||
"better-video-compression-and-quality-at-the-cost-of-increased-cpu-encoding-load": "Bideo konpresio eta kalitate hobea, nahiz eta CPU-aren lan karga handitu",
|
||||
"disable-digital-audio-effects-and-increase-audio-bitrate": "Audioaren bitratea handitu eta soinu digitalen efektuak desgaitu",
|
||||
"the-guest-will-not-have-a-choice-over-audio-options": "Gonbidatuak ezingo du audio ezaugarririk hautatu",
|
||||
"the-guest-will-only-be-able-to-select-their-webcam-as-an-option": "Gonbidatuak bere kameraren ezaugarriak soilik hautatu ditzake",
|
||||
"hold-ctrl-and-the-mouse-wheel-to-zoom-in-and-out-remotely-of-compatible-video-streams": "CTRL eta saguaren gurpila mantenduz zoom egin bideoetan",
|
||||
"encode-the-url-so-that-it-s-harder-for-a-guest-to-modify-the-settings-": "URL-a kodetu gonbidatuak ezaugarriak aldatzea zailtzeko.",
|
||||
"add-a-password-to-make-the-stream-inaccessible-to-those-without-the-password": "Pasahitza dutenak bakarrik sartu ahalko dira zuzenekora.",
|
||||
"add-the-guest-to-a-group-chat-room-it-will-be-created-automatically-if-needed-": "Gonbidatua talde batera gehitu; automatikoki sortuko da beharrezkoa bada.",
|
||||
"customize-the-room-settings-for-this-guest": "Gelaren ezaugarriak kudeatu gonbidatuarentzat",
|
||||
"more-options": "Aukera gehiago",
|
||||
"hold-ctrl-or-cmd-to-select-multiple-files": "Sakatu CTRL (edo CMD) hainbat aukeratzeko",
|
||||
"enter-an-https-url": "Sartu HTTPS helbidea",
|
||||
"creative-commons-by-3-0": "Creative Commons BY 3.0",
|
||||
"youtube-video-demoing-how-to-do-this": "Hau nola egiten den jakiteko Youtubeko bideoa",
|
||||
"invite-a-guest-or-camera-source-to-publish-into-the-group-room": "Gehitu taldeko gelara gonbidatu kamara edo kamera iturri berria",
|
||||
"if-disabled-the-invited-guest-will-not-be-able-to-see-or-hear-anyone-in-the-room-": "Desgaitu ezkero, gonbidatuak ezingo du gelan audio edo bideorik ikusi.",
|
||||
"use-this-link-in-the-obs-browser-source-to-capture-the-video-or-audio": "Erabili esteka hau audio edo bideoa jasotzeko OBS iturri bilatzailean",
|
||||
"if-disabled-you-must-manually-add-a-video-to-a-scene-for-it-to-appear-": "Desgaitu ezkero, eskuz gehitu beharko duzu eszenara bideoa ikusteko.",
|
||||
"disables-echo-cancellation-and-improves-audio-quality": "Itzali oihartzun ezeztapena eta hobetu audioaren kalitatea",
|
||||
"audio-only-sources-are-visually-hidden-from-scenes": "Audio sarrerak ikusezin daude eszenetan",
|
||||
"guest-will-be-prompted-to-enter-a-display-name": "Erabiltzaile izena jartzeko eskatuko zaio gonbidatuari",
|
||||
"display-names-will-be-shown-in-the-bottom-left-corner-of-videos": "Erabiltzaile izenak bideoen beheko ezker aldean azalduko dira",
|
||||
"guests-not-actively-speaking-will-be-hidden": "Aktiboki hitz egiten ez duten gonbidatuak ezkutatuak izango dira",
|
||||
"request-1080p60-from-the-guest-instead-of-720p60-if-possible": "Ahal denean, gonbidatuari eskatu 1080p60 720p60 ordez",
|
||||
"the-default-microphone-will-be-pre-selected-for-the-guest": "Gonbidatuari hautazko mikrofonoa aurrezarriko zaio",
|
||||
"the-default-camera-device-will-selected-automatically": "Lehenetsitako kamera automatikoki aukeratuko da",
|
||||
"the-guest-won-t-have-access-to-changing-camera-settings-or-screenshare": "Gonbidatuak ezin du kamera edo pantaila partekatzeko ezaugarrietara sartu",
|
||||
"allow-the-guests-to-pick-a-virtual-backscreen-effect": "Baimendu gonbidatuari atzeko irudi efektu birtuala hautatzea",
|
||||
"increase-video-quality-that-guests-in-room-see-": "Gelako bideo kalitatea hobetu gonbidatuentzat.",
|
||||
"the-guest-will-not-see-their-own-self-preview-after-joining": "Gonbidatuak gelara sartzean ezingo dute beraien aurrebista ikusi",
|
||||
"guests-will-have-an-option-to-poke-the-director-by-pressing-a-button": "Gonbidatuak zuzendaria mugitzeko aukera dute botoia sakatuz",
|
||||
"add-an-audio-compressor-to-the-guest-s-microphone": "Audio konprimitzailea gehitu gonbidatuaren mikrofonoari",
|
||||
"add-an-equalizer-to-the-guest-s-microphone-that-the-director-can-control": "Zuzendariak kontrolatu dezaken ekualizatzilea gehitu gonbidatuaren mikrofonoari",
|
||||
"this-low-fi-video-codec-uses-very-little-cpu-even-with-dozens-of-active-viewers-": "Erantzun baxuko bideo codek honek CPU gutxi darabil, nahiz eta dozenaka erabiltzaile aktibo izan.",
|
||||
"the-guest-can-only-see-the-director-s-video-if-provided": "Gonbidatuek zuzendariaren bideoa bakarrik ikusi dezakete (beti ere partekatzen ari bada)",
|
||||
"the-guest-s-microphone-will-be-muted-on-joining-they-can-unmute-themselves-": "Gonbidatuen mikrofonoak mututa hasiko dira gelara batutakoan. Gonbidatuek piztu ditzateke.",
|
||||
"the-guest-will-not-be-asked-for-a-video-device-on-connection": "Gonbidatuari ez zaio kamera eskatuko konektatzerakoan",
|
||||
"have-the-guest-join-muted-so-only-the-director-can-unmute-the-guest-": "Gonbidatua batzerakoan mututa hasiko da, zuzendariak baimendu arte",
|
||||
"make-the-invite-url-encoded-so-parameters-are-harder-to-tinker-with-by-guests": "Gonbidapen esteka kodetu, ezaugarriak aldatzeko zailtasunak izan ditzaten",
|
||||
"the-active-speakers-are-made-visible-automatically": "Hizlari aktiboak automatiko ikusgarri izango dira",
|
||||
"move-the-user-to-another-room-controlled-by-another-director": "Mugitu erabiltzailea beste gela batera, beste zuzendari baten gidaritzapean",
|
||||
"send-a-direct-message-to-this-user-": "Bidali mezu zuzena erabiltzaile honi.",
|
||||
"force-the-user-to-disconnect-they-can-always-reconnect-": "Kaleratu erabiltzailea. Berriz battzeko aukera dauka.",
|
||||
"toggle-solo-voice-chat": "Txandakatu bakarkako txata",
|
||||
"add-this-video-to-any-remote-scene-1-": "Gehitu bideo hau urruneko '&scene=1'-ri",
|
||||
"mute-this-guest-everywhere": "Isildu erabiltzaile hau leku guztietan",
|
||||
"add-this-video-to-any-remote-scene-2-": "Gehitu bideo hau urruneko '&scene=2'-ri",
|
||||
"remotely-mute-this-audio-in-all-remote-scene-views": "Isildu audio hau urruneko '&scene' tan",
|
||||
"add-to-scene-3": "Gehito 3.eszenara",
|
||||
"add-to-scene-4": "Gehitu 4.eszenara",
|
||||
"add-to-scene-5": "Gehitu 5.eszenara",
|
||||
"add-to-scene-6": "Gehitu 6.eszenara",
|
||||
"add-to-scene-7": "Gehitu 7.eszenara",
|
||||
"add-to-scene-8": "Gehitu 8.eszenara",
|
||||
"force-the-remote-sender-to-issue-a-keyframe-to-all-scenes-fixing-pixel-smearing-issues-": "Eszenarako Keyframe-a bidaltzera behartu, pixel galera konpontzeko.",
|
||||
"request-the-statistics-of-this-video-in-any-active-scene": "Azaldu bideo honen estatistikak eszena aktiboetan",
|
||||
"solo-this-video-everywhere": "Bideo hau bakarrik leku guztietan",
|
||||
"hide-this-guest-everywhere": "Gonbidatua ezkutatu leku guztietan",
|
||||
"toggle-the-remote-guest-s-speaker-output": "Txandakatu gonbidatuaren urruneko audio irteera",
|
||||
"toggle-the-remote-guest-s-display-output": "Txandakatu gonbidatuaren urruneko pantila",
|
||||
"shift-this-video-down-in-order": "Mugitu beherantz bideoa ordenean",
|
||||
"current-index-order-of-this-video": "Momentuko bideoaren ordena",
|
||||
"shift-this-video-up-in-order": "Mugitu gorantz bideoa ordenean",
|
||||
"remotely-reload-the-guest-s-page-with-a-new-url": "Berriz kargatu gonbidatuaren orria URL berriarekin",
|
||||
"change-user-parameters": "Aldatu erabiltzailearen ezaugarriak",
|
||||
"start-recording-this-remote-stream-to-this-local-drive-experimental-": "Hasi urruneko zuzenekoa grabatzen fitxategi lokalera. *probetan*'",
|
||||
"the-remote-guest-will-record-their-local-stream-to-their-local-drive-experimental-": "Gonbidatuak zuzenekoa grabatuko du bere fitxategi lokalean. *probetan*",
|
||||
"remotely-change-the-volume-of-this-guest": "Aldatu gonbiatu honen bolumena urruneko kontrolaz",
|
||||
"disable-video-preview": "Itzali bideo aurrebista",
|
||||
"low-quality-preview": "Kalitate baxuko aurrebista",
|
||||
"high-quality-preview": "Kalitate handiko aurrebista",
|
||||
"set-to-audio-channel-1": "Jarri 1.Audio kanalean",
|
||||
"set-to-audio-channel-2": "Jarri 2.Audio kanalean",
|
||||
"set-to-audio-channel-3": "Jarri 3.Audio kanalean",
|
||||
"set-to-audio-channel-4": "Jarri 4.Audio kanalean",
|
||||
"set-to-audio-channel-5": "Jarri 5.Audio kanalean",
|
||||
"set-to-audio-channel-6": "Jarri 6.Audio kanalean",
|
||||
"remote-audio-settings": "Urruneko audio ezaugarriak",
|
||||
"advanced-video-settings": "Bideo ezaugarri aurreratuak",
|
||||
"add-to-scene-2": "Gehitu 2.eszenara",
|
||||
"activate-or-reload-this-video-device-": "Bideo gailua aktibatu edo birkargatu.",
|
||||
"cannot-see-videos": "Ezin dira bideoak ikusi",
|
||||
"cannot-hear-others": "Besteak ezin dira entzun",
|
||||
"see-director-only": "Zuzendaria bakarrik ikusi",
|
||||
"show-mini-preview": "Aurrebista txikia ikusi",
|
||||
"raise-hand-button": "Eskua altsatzeko botoia",
|
||||
"show-labels": "Erakutsi etiketak",
|
||||
"transfer-to-a-new-room": "Aldatu gela berrira",
|
||||
"enable-custom-password": "Jarri pasahitz pertsonalizatua",
|
||||
"share-a-website-as-an-embedded-iframe": "Partekatu webgunea txertatutako iFRAME moduan",
|
||||
"room-settings": "Gelako ezaugarriak",
|
||||
"allow-for-remote-stat-monitoring-via-the-monitoring-tool": "Baimendu urruneko estatistika ikusketa monitorizazio tresna bidez",
|
||||
"videos-use-an-animated-transition-when-being-remixed": "Bideoek trantsizio animatuak erabiliko dituzte nahasterakoan",
|
||||
"show-some-prep-suggestions-to-the-guests-on-connect": "Gonbidatuak batzean erakutsi prestaketa iradokizun batzuk",
|
||||
"set-the-background-color-to-bright-green": "Bihurtu atzeko irudia kolore berde argira",
|
||||
"fade-videos-in-over-500ms": "Lausotu bideoak 500ms-tik gora",
|
||||
"add-a-10px-margin-around-all-video-elements": "Gehitu 10 pixeleko marjina bideo elementu guztien inguruan",
|
||||
"playback-the-video-with-mono-channel-audio": "Ikusi bideoa kanal mono audioarekin",
|
||||
"have-videos-be-aligned-with-sizing-designed-for-vertical-video": "Bideo bertikaletarako diseinatutako tamainarekin lerrokatu",
|
||||
"copy-this-stream-id-to-the-clipboard": "Kopiatu Stream ID-a arbelean",
|
||||
"this-will-ask-the-remote-guest-for-permission-to-change": "Honek urruneko gonbidatuari aldatzeko baimena eskatuko dio",
|
||||
"a-direct-solo-view-of-the-video-audio-stream-with-nothing-else-its-audio-can-be-remotely-controlled-from-here": "Bideo/audio streamaren bakarkako ikuspegi zuzena beste ezer gabe. Bertako audioa urrunetik kontrola daiteke",
|
||||
"this-guest-raised-their-hand-click-this-to-clear-notification-": "Gonbidatu honek eskua altxatu du. Egin klik hemen jakinarazpena garbitzeko.",
|
||||
"hide-this-window": "Ezkutatu leiho hau",
|
||||
"your-audio-and-video-settings": "Audio eta bideo ezaugarriak",
|
||||
"you-can-also-enable-the-director-s-video-output-afterwards-by-clicking-the-setting-s-button": "Zuzendariaren bideo irteera gaitu dezakezu ezarpenaren botoian klik eginez",
|
||||
"the-guest-will-be-asked-if-they-want-to-reload-the-previous-link-when-revisiting": "Gonbidatuari aurreko esteka berriro kargatu nahi duten galdetuko zaio berriz itzultzerakoan",
|
||||
"the-guest-s-self-video-preview-will-appear-tiny-in-the-top-right": "Gonbidatuaren kamera aurrebista txikia goian eskubi aldean ikusiko da",
|
||||
"have-the-videos-fit-their-respective-areas-even-if-it-means-cropping-a-bit": "Bideoak dagozkien eremura egokitu, nahiz eta apur bat moztea esan nahi duen",
|
||||
"click-here-to-edit-the-label-for-this-stream-changes-will-propagate-to-all-viewers-of-this-stream": "Hemen klik eginez streamaren izena aldatu. Aldaketak streameneko erabiltzaileei jakinaraziko zaizkie",
|
||||
"increase-this-at-your-peril-changes-the-total-inbound-video-bitrate-per-guest-mobile-devices-excluded-webp-mode-also-excluded-": "Aldatu hau zure baitan. Gonbidatu bakoitzeko sarrerako bideo bitrate osoa aldatzen du; gailu mugikorrak baztertuta. Webp modua ere baztertuta dago.",
|
||||
"cycle-the-cameras": "Txandakatu kamerak"
|
||||
},
|
||||
"innerHTML": {
|
||||
"copy-this-url": "Kopiatu URL hau OBS iturri bilatzailean",
|
||||
"you-are-in-the-control-center": "Gelaren kontrol zentrua:",
|
||||
"joining-room": "Gelan zaude",
|
||||
"add-group-chat": "Sortu gela",
|
||||
"rooms-allow-for": "Gelek txata eta gonbidatuak kudeatzeko tresnak eskaintzen dituzte.",
|
||||
"room-name": "Gelaren izena",
|
||||
"password-input-field": "Pasahitza",
|
||||
"guests-only-see-director": "Gonbidatuek zuzendariaren bideoa ikusi dezakete soilik",
|
||||
"scenes-can-see-director": "Zuzendariak ere parte hartuko du",
|
||||
"default-codec-select": "Hobetsitako audio-kodeka",
|
||||
"enter-the-rooms-control": "Sartu gelaren kontrol-panelera",
|
||||
"show-tips": "Erakutsi aholku batzuk..",
|
||||
"added-notes": "\n\t\t\t\t\t\t\t\t<u>\n\t\t\t\t\t\t\t\t\t<i>Aholku garrantzitsuak:</i><br><br>\n\t\t\t\t\t\t\t\t</u>\n\t\t\t\t\t\t\t\t<li>Parte-hartzaileen artean bideoa ez partekatzeak emanaldiaren kalitatea hobetzen du.</li>\n\t\t\t\t\t\t\t\t<li>Gonbidatu soilik ezagutzen dituzun pertsonak.</li>\n\t\t\t\t\t\t\t\t<li>\"Grabaketa\" aukera esperimentala da oraingoz.</li>",
|
||||
"back": "Atzera",
|
||||
"add-your-camera": "Gehitu kamera",
|
||||
"ask-for-permissions": "Baimendu sarbidea Kamera/Mikrofonoa",
|
||||
"waiting-for-camera": "Kamera kargatzeko zain",
|
||||
"video-source": " Bideo iturria ",
|
||||
"max-resolution": "Erresoluzio maximoa",
|
||||
"balanced": "Orekatua",
|
||||
"smooth-cool": "Goxo",
|
||||
"select-audio-source": " Audio iturriak ",
|
||||
"no-audio": "Audiorik EZ",
|
||||
"select-output-source": " Audio irteeraren helbidea: ",
|
||||
"select-digital-effect": " Bideo efektu digitalak: ",
|
||||
"no-effects-applied": "Efekturik ez gehitua",
|
||||
"blurred-background": "Atzealde lausotua",
|
||||
"digital-greenscreen": "Pantaila digital berdea",
|
||||
"virtual-background": "Atzealde birtuala",
|
||||
"add-a-password": "Ezarri Pasahitza:",
|
||||
"use-chrome-instead": "Chomiumen oinarritutako nabigatzaileak gomendatzen ditugu.<br>\n \t\t\t\t\t\tSafarik audio arazoak eman ditzake",
|
||||
"remote-screenshare-obs": "Partekatu pantaila",
|
||||
"select-screen-to-share": "AUKERATU PARTEKATZEKO PANTAILA",
|
||||
"audio-sources": "Audio Iturriak",
|
||||
"create-reusable-invite": "Sortu gonbidapen berrerabilgarria",
|
||||
"here-you-can-pre-generate": "Hemen gonbidapen helbideak aldez aurretik sortu ditzakezu.",
|
||||
"generate-invite-link": "GONBIDAPEN HELBIDEA SORTU",
|
||||
"advanced-paramaters": "Ezaugarri aurreratuak",
|
||||
"unlock-video-bitrate": "Desblokeatu bideoaren bitrate-a (20mbps)",
|
||||
"force-vp9-video-codec": "Behartu VP9 bideo-kodeka",
|
||||
"enable-stereo-and-pro": "Gaitu estereo eta pro HD audioa",
|
||||
"video-resolution": "Bideo erresoluzioa: ",
|
||||
"hide-mic-selection": "Behartu lehenetsitako mikrofonoa",
|
||||
"hide-screen-share": "Ezkutatu pantaila partekatzeko aukera",
|
||||
"allow-remote-control": "Kameraren zoomaren urruneko kontrola (android)",
|
||||
"obfuscate_url": "Itsutu gonbidapen helbidea",
|
||||
"add-a-password-to-stream": "Ezarri pasahitza:",
|
||||
"add-the-guest-to-a-room": " Gehitu gonbidatuak gela honetara:",
|
||||
"invite-group-chat-type": "Gela honetako gonbidatuak daukate:",
|
||||
"can-see-and-hear": "Taldearen txata ikusi eta entzun",
|
||||
"can-hear-only": "Taldeko txata entzun bakarrik",
|
||||
"cant-see-or-hear": "Ezin du Taldeko txata ikusi ezta entzun",
|
||||
"share-local-video-file": "Partekatu multimedia fitxategia",
|
||||
"select-the-video-files-to-share": "AUKERATU PARTEKATZEKO BIDEO FITXATEGIAK",
|
||||
"share-website-iframe": "Partekatu web orrialdea",
|
||||
"enter-the-website-URL-you-wish-to-share": "Sartu partekatzeko web orrialdearen helbidea.",
|
||||
"run-a-speed-test": "Neurtu konexio abiadura",
|
||||
"read-the-guides": "Irakurri gidak",
|
||||
"info-blob": "",
|
||||
"hide-the-links": " ESTEKA (GONBIDAPENAK & ESZENAK)",
|
||||
"click-for-quick-room-overview": "\n\t\t\t\t\t\t<i class=\"las la-question-circle\"></i> <span data-translate=\"click-here-for-help\">Hemen klik egin laburpen azkarra ikusteko eta laguntza izateko</span>\n\t\t\t\t\t",
|
||||
"click-here-for-help": "Hemen klik egin laburpen azkarra ikusteko eta laguntza izateko",
|
||||
"welcome-to-control-room": "\n\t\t\t\t\t\t<b>Ongi etorri. Hau da talde berriketarako zuzendariaren kontrol gela.</b><br><br>\n\t\t\t\t\t\tLagunekin talde berriketak egin ditzakezu gela bat erabiliz. Partekatu esteka urdina txatera automatikoki sartuko diren gonbidatuentzat.\n\t\t\t\t\t\t<br><br>\n\t\t\t\t\t\t<font style=\"color:red\">Talde gelek dituzten mugak:</font><br>\n\t\t\t\t\t\t<li>Talde gela batek 30 gonbidatu inguru har ditzake, faktore ugariren arabera, besteak beste, CPU eta gelako gonbidatu guztien banda zabalera kontuan hartuz. 7 lagun inguru baino gehiago elkartzeko, ziurrenik nahiago duzu <a href=\"https://www.youtube.com/watch?v=bpRa8-UYCGc\" title=\"Youtube Video demoing how to do this\">\ndesgaitu bideoen partekatzea gonbidatuen artean</a>. Using &broadcast, &roombitrate=0 or &bideoen aukerak dira hemen.</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>Bideoak kalitate baxukoak izango dira nahita gonbidatuentzat eta zuzendarientzat; banda zabalera eta CPU baliabideak aurrezteko. Hala ere, kalitate handikoa izango da OBS barruan.</li>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<li>Eszenen egoera, esaterako, eszena batean aktibo dauden bideoak galtzen dira zuzendariak kontrol gela edo eszena berrezartzen duenean.</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\tNota gehigarriak:<br><br>\n\t\t\t\t\t\t<li>Gonbidatutako bideo bakoitzaren ikustaldietarako estekak bideoen azpian ikusten dira kargatu ahala. Hauek OBS iturrien arakatzailean erabil daitezke.</li>\n\t\t\t\t\t\t<li>Nahasteko taldeko eszenak, esteka berdeak, erabil ditzakezu automatikoki antolatzeko bideoak OBSn.</li>\n\t\t\t\t\t\t<li>Kontrol gela hau bideo edo audio stream isolatuak grabatzeko erabil dezakezu, baina oraindik ezaugarri esperimentala da.</li>\n\t\t\t\t\t\t<li>Gonbidatu bat gela batetik bestera mugitzen baduzu, ez dute jakingo zein gelara aldatu diren.</li>\n\t\t\t\t\t\t<li>OBSk gonbidatuen bideoa kalitate handian ikusiko du; bideo bit tasa lehenetsia 2500 kbps da. Bit tasa altuagoak ezartzeak mugimendua hobetuko du.</li>\n\t\t\t\t\t\t<li>VP8 bideo kodek lehenetsia izan ohi da, baina erabiltzen duen &codec=vp9 or &codec=h264 OBS-en URLak hondatutako bideo-arazoak murrizten lagun dezake.</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 gonbidatuei emandako gonbidapen esteka baten URL parametroak ezkutatzen lagun dezakeen doako zerbitzua da.</li>\n\t\t\t\t\t\t<li>Adding &showonly=SOME_OBS_VIRTUALCAM gonbidatuentzako gonbidapen estekek bideo bakarra ikusteko aukera ematen die gonbidatuei; hau, adibidez, OBS Kamera Birtualaren irteera izan daiteke</li>\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\n\t\t\t\t\t\tURL aukera eta parametro aurreratuetarako, <a href=\"https://docs.vdo.ninja/advanced-settings\">Wikian ikusi.</a>\n\t\t\t\t\t",
|
||||
"invite-users-to-join": "Gelara batzeko gonbidatuek esteka erabili dezakete",
|
||||
"guests-hear-others": "Gonbidatuak elkar entzun dezakete",
|
||||
"capture-a-group-scene": "ATZITU TALDE ESZENA",
|
||||
"this-is-obs-browser-source-link": "Erabili taldearen bideo nahasketa OBS edo beste Studio software batean",
|
||||
"auto-add-guests": "Gehitu gonbidatuak automatikoki",
|
||||
"pro-audio-mode": "Pro-Audio modua",
|
||||
"hide-audio-only-sources": "Ezkutatu audio iturriak soilik direnak",
|
||||
"ask-for-display-name": "Galdetu ikusiko den izenagatik",
|
||||
"show-display-names": "Erakutsi izenak",
|
||||
"show-active-speaker": "Erakutsi hizlari aktiboak",
|
||||
"auto-select-microphone": "Hautazko mikrofonoa automatikoki aukeratu",
|
||||
"auto-select-camera": "Aukeratu hautazko kamera automatikoki",
|
||||
"hide-setting-buttons": "Ezkutatu ezarpenen botoia",
|
||||
"mini-self-preview": "aurrebista propio txikia",
|
||||
"virtual-backgrounds": "Atzealde birtuala",
|
||||
"powerful-computers-only": "Erabili soilik ordenagailu indartsuekin eta talde txikiak!!",
|
||||
"guests-see-HD-video": "Gonbidatuak HD bideoa ikusgai",
|
||||
"no-self-preview": "Aurrebista propioa itzali",
|
||||
"raise-hand-button": "\"Eskua altxa\" botoia ikusarazi",
|
||||
"enable-compressor": "Gaitu audio konprimatzailea",
|
||||
"enable-equalizer": "Gaitu ekualizadore aukera",
|
||||
"low-cpu=broadcast-codec": "CPU gutxi behar duen emisio-kodeka",
|
||||
"only-see-director-feed": "Zuzendariaren iturria bakarrik ikusgai",
|
||||
"mute-microphone-by-default": "Isilduta; gonbidatuek piztu dezakete",
|
||||
"guest-joins-with-no-camera": "Gonbidatuak kamerarik gabe sartu daitezke",
|
||||
"unmute-by-director-only": "Isilduta; zuzendariak soilik piztu dezake",
|
||||
"obfuscate-link": "Itsutu esteka eta ezaugarriak",
|
||||
"this-can-reduce-packet-loss": "Honek bideoari dagokion informazio galera ekidin dezake",
|
||||
"use-h264-codec": "Erabili H264 kodeka",
|
||||
"show-active-speakers": "Erakutsi hizlari aktiboa",
|
||||
"force-mono-audio": "Behartu mono audioa",
|
||||
"learn-more-about-params": "URL parametroez gehiago ikasi hemen ",
|
||||
"more-than-four-can-join": "Lau gonbidatu hauen lekuak adibidea besterik ez dira. Lau gonbidatu baino gehiago batu daitezke.",
|
||||
"forward-to-room": "Bidali",
|
||||
"send-direct-chat": "<i class=\"las la-envelope\"></i> Mezua",
|
||||
"disconnect-guest": "Eskegi",
|
||||
"voice-chat": "<i class=\"las la-microphone\" style=\"color:#090\"></i> Bakarrik hitz egin",
|
||||
"add-to-scene": "Gehitu 1.eszenara",
|
||||
"mute-guest": "Mututu gonbidatua",
|
||||
"More-scene-options": "Eszena aukera gehiago",
|
||||
"mute-scene": "Eszena mututu",
|
||||
"force-keyframe": "Ostadarra konpondu",
|
||||
"stats-remote": " Eszena baloreak",
|
||||
"additional-controls": "Kontrol gehigarriak",
|
||||
"solo-video": "Nabarmendu gonbidatua",
|
||||
"hide-guest": "Ezkutatu gonbidatua ",
|
||||
"toggle-remote-speaker": "Gonbidatua mututu",
|
||||
"toggle-remote-display": "Gonbidatua itsutu",
|
||||
"order-down": "<i class=\"las la-minus\"></i>",
|
||||
"order-up": "<i class=\"las la-plus\"></i>",
|
||||
"change-url": "Aldatu URL-a",
|
||||
"change-params": "URL parametroak",
|
||||
"record-local": " Grabazioa lokala",
|
||||
"record-remote": " Urruneko grabazioa",
|
||||
"change-to-low-quality": " <i class=\"las la-video-slash\"></i>",
|
||||
"change-to-medium-quality": " <i class=\"las la-video\"></i>",
|
||||
"change-to-high-quality": " <i class=\"las la-binoculars\"></i>",
|
||||
"advanced-audio-settings": "<i class=\"las la-sliders-h\"></i> Audio ezaugarriak",
|
||||
"advanced-camera-settings": "<i class=\"las la-sliders-h\"></i> Bideo ezaugarriak",
|
||||
"select-local-image": "Aukeratu irudi lokala",
|
||||
"close-settings": "Itxi ezarpenak",
|
||||
"advanced": "Aurreratua ",
|
||||
"open-in-new-tab": "Ireki fitxa berrian",
|
||||
"copy-to-clipboard": "Kopiatu arbelean",
|
||||
"send-chat": "Bidali",
|
||||
"apply-new-guest-settings": "Ezaugarriak ezarri",
|
||||
"cancel": "Ezeztatu",
|
||||
"invisible-guests": "Ikusezin",
|
||||
"available-languages": "Hizkuntza erabilgarriak:",
|
||||
"add-more-here": "Gehitu gehiago hemen!",
|
||||
"add-to-calendar": "Gehitu xehetasunak egutegian:",
|
||||
"add-to-google-calendar": "Gehitu Google egutegian",
|
||||
"add-to-outlook-calendar": "Gehitu Outlook egutegian",
|
||||
"add-to-yahoo-calendar": "Gehitu Yahoo egutegian",
|
||||
"push-to-talk-enable": " Gaitu zuzendariaren mikrofonoa edo bideoa<br>(gonbidatuek soilik ikusi dezakete hau)",
|
||||
"remote-monitoring": "Urruneko monitorizazioa",
|
||||
"fade-videos-in": "Lausotu bideoak",
|
||||
"show-guest-tips": "Erakutsi gonbidatuei konfigurazio aholkuak",
|
||||
"green-background": "Atzealde berdea",
|
||||
"add-margin": "Jarri marjinak bideoei",
|
||||
"fill-video-space": "Moztu bideoa egokitzeko",
|
||||
"vertical-aspect-ratio": "Bideo bertikal modua",
|
||||
"add-to-scene2": "Gehitu 2.eszenara",
|
||||
"user-raised-hand": "Jaitsi eskua",
|
||||
"unmute": "piztu",
|
||||
"unhide-guest": "azaldu",
|
||||
"undeafen": "entzun",
|
||||
"unblind": "ikusarazi",
|
||||
"close": "itxi",
|
||||
"send-message": "bidali mezua<s pan=\"\"> </s>",
|
||||
"record-director-local": " Grabazioa",
|
||||
"director-muted-you": "Zuzendariak isildu zaitu.",
|
||||
"mirror-video": "Ispilua",
|
||||
"request-upload": " Eskatu fitxategia",
|
||||
"edit-url": "Aldatu URLa",
|
||||
"dog-face": "Txakur belarriak eta sudurra",
|
||||
"compatibility-mode": "Bateragarritasun modua",
|
||||
"disable-animated-mixing": "Desaktibatu animazioak",
|
||||
"create-timer": "Sortu tenporizadorea",
|
||||
"toggle-control-video": "Ezkutatu edo erakutsi kontrol barra",
|
||||
"invite-saved-to-cookie": "Gonbidapena cookie batean gorde da",
|
||||
"logo-header": "\n\t\t\t\t\t<font id=\"qos\">V</font>DO.Ninja \n\t\t\t\t",
|
||||
"only-director-can-hear-you": "Momentu honetan zuzendariak bakarrik entzun zaitzake.",
|
||||
"privacy-disabled": "Pribatutasun oharra: jarraitzen baduzu, zuzendariak zure kamara eta mikrofonoa urrunetik kontrolatu ahalko ditu."
|
||||
},
|
||||
"placeholders": {
|
||||
"join-by-room-name-here": "Sartu gela izena batzeko",
|
||||
"enter-a-room-name-here": "gelaren izena",
|
||||
"optional-room-password-here": "gelaren hautazko pasahitza",
|
||||
"optional": "Hautazkoa",
|
||||
"give-this-media-source-a-name-optional-": "media iturriaren izena (hautazkoa)",
|
||||
"add-an-optional-password": "aukerazko pasahitza",
|
||||
"enter-room-name-here": "gelaren izena",
|
||||
"enter-chat-message-to-send-here": "Bidali nahi den mezua hemen sartu",
|
||||
"enter-the-room-name-here": "gelaren izena",
|
||||
"enter-the-room-password-here": "Gelaren pasahitza",
|
||||
"enter-your-message-here": "Idatzi hemen mezua"
|
||||
},
|
||||
"miscellaneous": {
|
||||
"new-display-name": "Izen berria jarri stream honi",
|
||||
"submit-error-report": "Sakatu OK VDO.Ninja-ra akatsen erregistroak bidaltzeko. Akatsen erregistroek informazio pribatua izan ditzakete.",
|
||||
"director-redirect-2": "\n\nSakatu OK bideratua izateko.",
|
||||
"add-a-label": "Gehitu etiketa",
|
||||
"audio-processing-disabled": "Gonbidatu honekin audio prozesatzea kenduta dago. Ezin da isildu edo bolumena aldatu",
|
||||
"not-the-director": "<font color='red'>Ez zara gela honetako zuzendaria. Kontrolik gabe egongo zara. Zuzendariak alde egitean, gela erreklamatzen saia zaitezke.</font>",
|
||||
"streamid-already-published": "Argitaratzen ari zaren stream IDa dagoeneko erabiltzen ari dira.\n\nSaiatu beste gonbidapen esteka batekin edo berritu berriro saiatzeko.\n\nDeskonektatuta izango zara.",
|
||||
"director": "Zuzendaria",
|
||||
"unknown-user": "Erabiltzaile ezezaguna",
|
||||
"room-test-not-good": "\"Test\" gelaren izena oso erabilia da eta agian ez da segurua.\n\nZiur zaude jarraitu nahi duzula?",
|
||||
"load-previous-session": "Aurreko saioaren ezarpenak berrerabili nahi dituzu?",
|
||||
"enter-password-2": "Mesedez, sartu pasahitza behean: \n\n(Oharra: pasahitzak maiuskulak eta minuskulak bereizten dituzte.)",
|
||||
"password-incorrect": "Pasahitza okerra zen.\n\nSaiatu berriro.",
|
||||
"enter-display-name": "Mesedez, sartu zure bistaratzeko izena:",
|
||||
"enter-new-display-name": "Idatzi stream honetan bistaratzeko izen berria",
|
||||
"what-bitrate": "Zein bit tasatan grabatu nahi zenuke? (kbps)",
|
||||
"enter-website": "Sartu webgunearen URLa partekatzeko",
|
||||
"no-streamID-provided": "Ez da stream IDrik eman; ausazko bat sortuko da.\n\nStream ID: ",
|
||||
"alphanumeric-only": "Informazioa: zenbakiak eta letrak soilik erabili behar dira stream IDan.\n\nKaraktere iraingarriak azpimarra batez ordezkatu dira",
|
||||
"stream-id-too-long": "Stream IDak 45 karaktere alfanumeriko baino gutxiago izan behar ditu.\n\nLuzera egokituko da.",
|
||||
"share-with-trusted": "Partekatu konfiantzazkoekin soilik",
|
||||
"pass-recommended": "Pasahitza jartzea gomendatzen da",
|
||||
"insecure-room-name": "Gelaren izena ez da segurua.",
|
||||
"allowed-chars": "Onartutako karaktereak",
|
||||
"transfer": "mugitu",
|
||||
"armed": "armatua",
|
||||
"transfer-guest-to-url": "Bidali gonbidatuak beste helbide batera.\n\n(Gonbidatuek onartu beharko dute)",
|
||||
"change-url": "aldatu esteka",
|
||||
"mute-in-scene": "Isiltasuna eszenan",
|
||||
"unmute-guest": "Gonbidatua entzungai",
|
||||
"undeafen": "entzun",
|
||||
"deafen": "Mututu gonbidatua",
|
||||
"unblind": "ikusarazi",
|
||||
"unmute": "piztu",
|
||||
"mute-guest": "Mututu gonbidatua",
|
||||
"blind": "Itsutu gonbidatua",
|
||||
"unhide": "gonbidatua azaldu",
|
||||
"confirm-disconnect-users": "Ziur zaude erabiltzaile horiek deskonektatu nahi dituzula?",
|
||||
"hide-guest": "ezkutatu gonbidatua",
|
||||
"director-redirect-1": "Zuzendariak URL honetara bideratu nahi zaitu: ",
|
||||
"room-is-claimed": "Gelara sartu den lehenengo pertsona da zuzendaria.\n\nEskatu irteteko eta berritu orrialdea",
|
||||
"enter-password": "Mesedez, sartu pasahitza behean: \n\n(Oharra: pasahitzek letra larriak eta xeheak bereizten dituzte eta ez zaizu ohartaraziko zuzena ez denean.)",
|
||||
"press-ok-to-record": "Sakatu OK grabatzen hasteko. Sakatu berriro gelditzeko eta deskargatzeko.\n\nAbisua: mantendu aktibo arakatzailearen fitxa grabatzen jarraitzeko.\n\nNahi izanez gero, bideoaren bit tasa lehenetsia alda dezakezu behean (kbps)",
|
||||
"transfer-guest-to-room": "Bidali gonbidatuak gelara:\n\n(Kontuan izan gelek pasahitz bera partekatu behar dutela)",
|
||||
"confirm-disconnect-user": "Ziur zaude erabiltzaile hau deskonektatu nahi duzula?",
|
||||
"start": "HASI",
|
||||
"enter-director-password": "Sartu zuzendariaren pasahitza:\n\n(Oharra: Pasahitzek letra xehe eta larriak desberdintzen dituzte, eta gaizki sartuz gero ez zaizu ohartaraziko.)"
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user