mirror of
https://github.com/eliasstepanik/vdo.ninja.git
synced 2026-01-14 23:28:30 +00:00
Version 10.3 - beta
fixed more bugs; minor polish in features
This commit is contained in:
parent
8ff1a0f6b2
commit
75ba4f4b4d
35
dual.html
35
dual.html
@ -11,10 +11,10 @@ iframe {
|
||||
padding:0;
|
||||
display:block;
|
||||
margin:0px;
|
||||
min-height: 420px;
|
||||
min-width: 350px;
|
||||
max-height: 720px;
|
||||
max-width: 1280px;
|
||||
min-height: 100px;
|
||||
min-width: 100px;
|
||||
max-height: 95%;
|
||||
max-width: 99%%;
|
||||
float: left;
|
||||
position: fixed;
|
||||
}
|
||||
@ -53,15 +53,15 @@ button{
|
||||
}
|
||||
|
||||
.popup {
|
||||
z-index: 9;
|
||||
background-color: #f1f1f1;
|
||||
border: 1px solid #d3d3d3;
|
||||
text-align: center;
|
||||
min-height: 420px;
|
||||
min-width: 350px;
|
||||
max-height: 720px;
|
||||
max-width: 1280px;
|
||||
scale: 0.5;
|
||||
z-index: 9;
|
||||
background-color: #f1f1f1;
|
||||
border: 1px solid #d3d3d3;
|
||||
text-align: center;
|
||||
min-height: 100px;
|
||||
min-width: 100px;
|
||||
max-height: 95%;
|
||||
max-width: 99%;
|
||||
scale: 0.5;
|
||||
}
|
||||
|
||||
.popup {
|
||||
@ -132,7 +132,7 @@ button{
|
||||
<div id="container"></div>
|
||||
|
||||
<script>
|
||||
|
||||
var currentZIndex = 100;
|
||||
function initDragElement(popup){
|
||||
|
||||
var pos1 = 0,
|
||||
@ -141,7 +141,6 @@ function initDragElement(popup){
|
||||
pos4 = 0;
|
||||
|
||||
var elmnt = null;
|
||||
var currentZIndex = 100; //TODO reset z index when a threshold is passed
|
||||
|
||||
var header = getHeader(popup);
|
||||
var iframe = getIFrame(popup);
|
||||
@ -291,6 +290,9 @@ function loadIframe(){
|
||||
|
||||
var iframeContainer = document.createElement("div");
|
||||
iframeContainer.className="popup";
|
||||
iframeContainer.style.zIndex = "" + ++currentZIndex;
|
||||
iframeContainer.style.width="325px";
|
||||
iframeContainer.style.height="420px";
|
||||
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Move";
|
||||
@ -312,6 +314,9 @@ function loadIframe(){
|
||||
var iframe = document.createElement("iframe");
|
||||
iframe.allow="autoplay";
|
||||
iframe.src = document.getElementById("viewlink").value || "https://obs.ninja";
|
||||
iframe.style.width="325px";
|
||||
iframe.style.height="420px";
|
||||
|
||||
iframeContainer.appendChild(iframe);
|
||||
|
||||
document.getElementById("container").appendChild(iframeContainer);
|
||||
|
||||
30
iframe.html
30
iframe.html
@ -42,7 +42,7 @@ function loadIframe(){
|
||||
iframe.allowtransparency="true"
|
||||
|
||||
if (iframesrc==""){
|
||||
iframesrc="https://obs.ninja/";
|
||||
iframesrc="./";
|
||||
}
|
||||
|
||||
if (document.getElementById("clean").checked){
|
||||
@ -179,7 +179,18 @@ function loadIframe(){
|
||||
|
||||
if ("stats" in e.data){
|
||||
var outputWindow = document.createElement("outputWindow");
|
||||
outputWindow.innerHTML = e.data.stats;
|
||||
console.log(e.data.stats);
|
||||
|
||||
|
||||
var out = "<br />total_inbound_connections:"+e.data.stats.total_inbound_connections;
|
||||
out += "<br />total_outbound_connections:"+e.data.stats.total_outbound_connections;
|
||||
|
||||
for (var streamID in e.data.stats.inbound_stats){
|
||||
out += "<br /><br /><b>streamID:</b> "+streamID+"<br />";
|
||||
out += printValues(e.data.stats.inbound_stats[streamID]);
|
||||
}
|
||||
|
||||
outputWindow.innerHTML = out;
|
||||
iframeContainer.appendChild(outputWindow);
|
||||
}
|
||||
|
||||
@ -193,6 +204,21 @@ function loadIframe(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
function printValues( obj) {
|
||||
var out = "";
|
||||
for (var key in obj) {
|
||||
if (typeof obj[key] === "object") {
|
||||
out +="<br />";
|
||||
out += printValues(obj[key]);
|
||||
} else {
|
||||
out +="<b>"+key+"</b>: "+obj[key]+"<br />";
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
22
index.html
22
index.html
@ -47,7 +47,7 @@
|
||||
<meta property="twitter:image" content="./images/obsNinja_logo_full.png" />
|
||||
<meta name="msapplication-TileColor" content="#da532c" />
|
||||
<meta name="theme-color" content="#ffffff" />
|
||||
<!--<script src="//console.re/connector.js" data-channel="obsninjaalpha" id="consolerescript"></script>-->
|
||||
<!-- <script src="//console.re/connector.js" data-channel="obsninjaalpha" id="consolerescript"></script> -->
|
||||
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css">
|
||||
<script type="text/javascript" src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
|
||||
<script type="text/javascript" src="./thirdparty/qrcode.min.js"></script>
|
||||
@ -63,7 +63,7 @@
|
||||
<link itemprop="url" href="./images/obsNinja_logo_full.png" />
|
||||
</span>
|
||||
<script language="javascript" type="text/javascript" src="./thirdparty/CodecsHandler.js?ver=17"></script>
|
||||
<script language="javascript" type="text/javascript" src="./webrtc.js?ver=33"></script>
|
||||
<script language="javascript" type="text/javascript" src="./webrtc.js?ver=55"></script>
|
||||
<input id="zoomSlider" type="range" style="display: none;" />
|
||||
<div id="header">
|
||||
<a id="logoname" href="./" style="text-decoration: none; color: white; margin: 2px;">
|
||||
@ -475,7 +475,7 @@
|
||||
</li>
|
||||
<br />
|
||||
|
||||
Site last updated: <a href="https://www.reddit.com/r/OBSNinja/comments/ib7vhk/version_10_released_text_chat_and_more_added_see/">August 17th, 2020</a>. The previous version can be found at
|
||||
Site last updated: <a href="https://www.reddit.com/r/OBSNinja/comments/ib7vhk/version_10_released_text_chat_and_more_added_see/">August 26th, 2020</a>. The previous version can be found at
|
||||
<a href="https://obs.ninja/v9/">https://obs.ninja/v9/</a> if you are having new issues.
|
||||
|
||||
|
||||
@ -609,15 +609,17 @@
|
||||
<br />
|
||||
<a onclick="changeLg('en');toggle(document.getElementById('languages'));" style="cursor: pointer;">English</a>
|
||||
<br />
|
||||
<a onclick="changeLg('pt');toggle(document.getElementById('languages'));" style="cursor: pointer;">Portuguese </a>
|
||||
<a onclick="changeLg('pt');toggle(document.getElementById('languages'));" style="cursor: pointer;">Portuguese</a>
|
||||
<br />
|
||||
<a onclick="changeLg('it');toggle(document.getElementById('languages'));" style="cursor: pointer;">Italian </a>
|
||||
<a onclick="changeLg('it');toggle(document.getElementById('languages'));" style="cursor: pointer;">Italian</a>
|
||||
<br />
|
||||
<a onclick="changeLg('de');toggle(document.getElementById('languages'));" style="cursor: pointer;">German </a>
|
||||
<a onclick="changeLg('de');toggle(document.getElementById('languages'));" style="cursor: pointer;">German</a>
|
||||
<br />
|
||||
<a onclick="changeLg('es');toggle(document.getElementById('languages'));" style="cursor: pointer;">Spanish </a>
|
||||
<a onclick="changeLg('es');toggle(document.getElementById('languages'));" style="cursor: pointer;">Spanish</a>
|
||||
<br />
|
||||
<a onclick="changeLg('nl');toggle(document.getElementById('languages'));" style="cursor: pointer;">Dutch </a>
|
||||
<a onclick="changeLg('nl');toggle(document.getElementById('languages'));" style="cursor: pointer;">Dutch</a>
|
||||
<br />
|
||||
<a onclick="changeLg('ja');toggle(document.getElementById('languages'));" style="cursor: pointer;">Japanese</a>
|
||||
<br />
|
||||
</u>
|
||||
<br />
|
||||
@ -645,7 +647,7 @@
|
||||
turn = {};
|
||||
turn.username = "steve";
|
||||
turn.credential = "justtesting";
|
||||
turn.urls = ["turn:turn2.obs.ninja:3478?transport=tcp"]; // US WEST
|
||||
turn.urls = ["turn:turn2.obs.ninja:443"]; // US WEST
|
||||
session.configuration.iceServers.push(turn);
|
||||
|
||||
// session.configuration.iceTransportPolicy = "relay"; // uncomment to enable "&privacy" and force the TURN server
|
||||
@ -684,7 +686,7 @@
|
||||
// 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" id="main-js" src="./main.js?ver=33"></script>
|
||||
<script type="text/javascript" id="main-js" src="./main.js?ver=36"></script>
|
||||
<script type="text/javascript" src="./animations.js?ver=8"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
60
main.js
60
main.js
@ -271,10 +271,6 @@ if (urlParams.has('mute') || urlParams.has('muted')){
|
||||
session.muted = true;
|
||||
}
|
||||
|
||||
if (urlParams.has('mute') || urlParams.has('muted')){
|
||||
session.muted = true;
|
||||
}
|
||||
|
||||
if (session.screenshare==true){
|
||||
getById("container-3").className = 'column columnfade advanced'; // Hide screen share on mobile
|
||||
}
|
||||
@ -402,6 +398,16 @@ if (urlParams.has("denoise") || urlParams.has("dn")){
|
||||
}
|
||||
|
||||
|
||||
if (urlParams.has('roombitrate') || urlParams.has('rbr')){
|
||||
log("Room BITRATE SET");
|
||||
session.roombitrate = urlParams.get('roombitrate') || urlParams.get('rbr');
|
||||
session.roombitrate = parseInt(session.roombitrate);
|
||||
if (session.roombitrate<1){
|
||||
session.roombitrate=0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (urlParams.has('audiobitrate') || urlParams.has('ab')){ // both peers need this enabled for HD stereo to be on. If just pub, you get no echo/noise cancellation. if just viewer, you get high bitrate mono
|
||||
log("AUDIO BITRATE SET");
|
||||
session.audiobitrate = urlParams.get('audiobitrate') || urlParams.get('ab');
|
||||
@ -577,6 +583,20 @@ if (urlParams.has('nocursor')){
|
||||
}
|
||||
|
||||
|
||||
if (urlParams.has('vbr')){
|
||||
session.cbr = 0;
|
||||
}
|
||||
|
||||
if (urlParams.has('minptime')){
|
||||
session.minptime = parseInt(urlParams.get('minptime')) || 10;
|
||||
if (session.minptime<10){session.minptime=10;}
|
||||
}
|
||||
|
||||
if (urlParams.has('maxptime')){
|
||||
session.maxptime = parseInt(urlParams.get('maxptime')) || 30;
|
||||
if (session.maxptime<session.minptime){session.maxptime=session.minptime;}
|
||||
}
|
||||
|
||||
|
||||
if (urlParams.has('codec')){
|
||||
log("CODEC CHANGED");
|
||||
@ -1011,11 +1031,15 @@ window.onmessage = function(e){ // iFRAME support
|
||||
}
|
||||
|
||||
if ("getStats" in e.data){
|
||||
var out = "";
|
||||
|
||||
var stats = {};
|
||||
stats.total_outbound_connections = Object.keys(session.pcs).length;
|
||||
stats.total_inbound_connections = Object.keys(session.rpcs).length;
|
||||
stats.inbound_stats = {};
|
||||
for (var i in session.rpcs){
|
||||
out += printValues(session.rpcs[i].stats);
|
||||
stats.inbound_stats[session.rpcs[i].streamID] = session.rpcs[i].stats;
|
||||
}
|
||||
parent.postMessage({"stats": out }, "*");
|
||||
parent.postMessage({"stats": stats }, "*");
|
||||
}
|
||||
|
||||
if ("close" in e.data){
|
||||
@ -1447,7 +1471,6 @@ function publishScreen(){
|
||||
noiseSuppression: false
|
||||
},
|
||||
video: {width: width, height: height, mediaSource: "screen"}
|
||||
//,cursor: {exact: "none"}
|
||||
};
|
||||
|
||||
if (session.noiseSuppression == true){
|
||||
@ -1460,14 +1483,15 @@ function publishScreen(){
|
||||
constraints.audio.echoCancellation = true; // the defaults for screen publishing should be off.
|
||||
}
|
||||
|
||||
//if (session.nocursor){
|
||||
// constraints.video.cursor = ["motion", "always"];
|
||||
//}
|
||||
if (session.nocursor){
|
||||
constraints.video.cursor = { exact: "none" }; // Not sure this does anything, but whatever.
|
||||
}
|
||||
|
||||
|
||||
if (session.framerate){
|
||||
if (session.framerate!==false){
|
||||
constraints.video.frameRate = session.framerate;
|
||||
}
|
||||
} else {
|
||||
constraints.video.frameRate = {ideal: 60};
|
||||
}
|
||||
|
||||
var audioSelect = document.querySelector('select#audioSourceScreenshare');
|
||||
var outputSelect = document.querySelector('select#outputSourceScreenshare');
|
||||
@ -2744,7 +2768,7 @@ var grabVideoTimer = null;
|
||||
async function grabVideo(quality=0, eleName='previewWebcam', selector="select#videoSource"){
|
||||
if( activatedPreview == true){log("activated preview return 2");return;}
|
||||
activatedPreview = true;
|
||||
log("Grabbing video");
|
||||
log("Grabbing video: "+quality);
|
||||
if (grabVideoTimer){
|
||||
clearTimeout(grabVideoTimer);
|
||||
}
|
||||
@ -3238,7 +3262,7 @@ function setupWebcamSelection(stream=null){
|
||||
warnlog("video source changed");
|
||||
|
||||
activatedPreview=false;
|
||||
if (session.quality){
|
||||
if (session.quality!==false){
|
||||
grabVideo(session.quality);
|
||||
} else {
|
||||
session.quality_wb = parseInt(getById("webcamquality").elements.namedItem("resolution").value);
|
||||
@ -3293,9 +3317,9 @@ function setupWebcamSelection(stream=null){
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
log("GRabbing video");
|
||||
log("GRabbing video: "+session.quality);
|
||||
activatedPreview = false;
|
||||
if (session.quality){
|
||||
if (session.quality!==false){
|
||||
grabVideo(session.quality);
|
||||
} else {
|
||||
session.quality_wb = parseInt(getById("webcamquality").elements.namedItem("resolution").value);
|
||||
|
||||
54
translations/ja.json
Normal file
54
translations/ja.json
Normal file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"GO": "GO",
|
||||
"add-group-chat": "OBSにグループミーティングを追加",
|
||||
"add-to-group": "グループシーンに追加",
|
||||
"add-your-camera": "OBSに自分のカメラを追加",
|
||||
"added-notes": "<i><u>追加情報:<u></i><li>ルーム名を知っている人は誰でもルームに入れるため、ユニークなルーム名にして下さい。</li><li>ハードウェア性能にもよりますが、パフォーマンス上の理由から、4人以上のルーム利用はおすすめできません。</li><li>iOSデバイスでは、2人以下のグループサイズに制限されます。これはハードウェアによる制限です。</li><li>\"Recording\" オプションは実験的な新機能です。</li><li>ビデオフィードを「グループシーン」に表示するには、そこに「追加」する必要があります。</li><li>ゲストのビューに、新しい「強化されたフルスクリーン」ボタンが追加されました。</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\"> でチェックして下さい。</li><li><a href=\"https://discord.gg/EksyhGA\">Discord</a> もあります。</li><li>メール <a href=\"mailto:steve@seguin.email\">steve@seguin.email</a> でも連絡できます。</i>",
|
||||
"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": "パスワードを追加:"
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user