123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569 |
- // We make use of this 'server' variable to provide the address of the
- // REST Janus API. By default, in this example we assume that Janus is
- // co-located with the web server hosting the HTML pages but listening
- // on a different port (8088, the default for HTTP in Janus), which is
- // why we make use of the 'window.location.hostname' base address. Since
- // Janus can also do HTTPS, and considering we don't really want to make
- // use of HTTP for Janus if your demos are served on HTTPS, we also rely
- // on the 'window.location.protocol' prefix to build the variable, in
- // particular to also change the port used to contact Janus (8088 for
- // HTTP and 8089 for HTTPS, if enabled).
- // In case you place Janus behind an Apache frontend (as we did on the
- // online demos at http://janus.conf.meetecho.com) you can just use a
- // relative path for the variable, e.g.:
- //
- // var server = "/janus";
- //
- // which will take care of this on its own.
- //
- //
- // If you want to use the WebSockets frontend to Janus, instead, you'll
- // have to pass a different kind of address, e.g.:
- //
- // var server = "ws://" + window.location.hostname + ":8188";
- //
- // Of course this assumes that support for WebSockets has been built in
- // when compiling the server. WebSockets support has not been tested
- // as much as the REST API, so handle with care!
- //
- //
- // If you have multiple options available, and want to let the library
- // autodetect the best way to contact your server (or pool of servers),
- // you can also pass an array of servers, e.g., to provide alternative
- // means of access (e.g., try WebSockets first and, if that fails, fall
- // back to plain HTTP) or just have failover servers:
- //
- // var server = [
- // "ws://" + window.location.hostname + ":8188",
- // "/janus"
- // ];
- //
- // This will tell the library to try connecting to each of the servers
- // in the presented order. The first working server will be used for
- // the whole session.
- //
- var server = null;
- if (window.location.protocol === 'http:')
- //server = "http://" + window.location.hostname + ":9020/janus";
- // yujianbo
- server = "https://" + "10.80.21.211" + ":9022/janus";
- else
- //server = "https://" + window.location.hostname + ":9022/janus";
- // -yujianbo
- server = "https://" + "10.80.21.211" + ":9022/janus";
- var janus = null;
- var tts = null;
- var opaqueId = "tts-" + Janus.randomString(12);
- var spinner = null;
- $(document).ready(function () {
- // Initialize the library (all console debuggers enabled)
- Janus.init({
- debug: "all", callback: function () {
- // Use a button to start the demo
- $('#start').on('click', function () {
- // Make sure the browser supports WebRTC
- if (!Janus.isWebrtcSupported()) {
- bootbox.alert("No WebRTC support... ");
- return;
- }
- if ($('#tts_url').val().length == 0) {
- bootbox.alert("Please input tts url... ");
- return;
- }
- $(this).attr('disabled', true).unbind('click');
- // Create session
- janus = new Janus(
- {
- server: window.EZUITalk.opt.rtcUrl,
- // No "iceServers" is provided, meaning janus.js will use a default STUN server
- // Here are some examples of how an iceServers field may look like to support TURN
- // iceServers: [{urls: "turn:yourturnserver.com:3478", username: "janususer", credential: "januspwd"}],
- // iceServers: [{urls: "turn:yourturnserver.com:443?transport=tcp", username: "janususer", credential: "januspwd"}],
- // iceServers: [{urls: "turns:yourturnserver.com:443?transport=tcp", username: "janususer", credential: "januspwd"}],
- // Should the Janus API require authentication, you can specify either the API secret or user token here too
- // token: "mytoken",
- // or
- // apisecret: "serversecret",
- success: function () {
- // Attach to tts plugin
- janus.attach(
- {
- plugin: "rtcgw.plugin.tts",
- opaqueId: opaqueId,
- success: function (pluginHandle) {
- $('#details').remove();
- tts = pluginHandle;
- Janus.log("Plugin attached! (" + tts.getPlugin() + ", id=" + tts.getId() + ")");
- // Negotiate WebRTC
- //var url = "tts://61.130.6.23:8664/talk://D13781761:0:1:cas.ys7.com:6500?97fbd2a75fa94b7682c994d3d1fac8ca:ut.5porslgu79e9r7ca48z32k8abgl3rp58-77bhb6i7xr-1kmumtg-jkhy7pvfr:0:3"
- //var url = "tts://10.86.15.209:8664/talk://D13781761:0:1:cas.ys7.com:6500?32db2578ba7c4a84be22ecc0bcd0f8db:ut.5lqpkhim5m7cdk2y5w60g7hm9vd7i3v0-3d2pwhxe2t-11wx2ge-sh4yazbll:0:3"
- //var url = "tts://10.86.15.209:8664/talk://D13781761:0:1:cas.ys7.com:6500"
- //test12.ys.com
- //var url = "tts://10.86.15.209:8664/talk://D08197169:0:1:cas.ys7.com:6500"
- //test10.ys.com
- //var url = "tts://10.86.29.210:8664/talk://D08197169:0:1:cas.ys7.com:6500"
- var url = $('#tts_url').val();
- var body = {
- "request": "start",
- "url": url,
- "codec": "opus",
- "dir": "sendrecv",
- "audio_debug": 1
- };
- //tts.send({"message": body});
- Janus.debug("Trying a createOffer too (audio/video sendrecv)");
- tts.createOffer(
- {
- // No media provided: by default, it's sendrecv for audio and video
- media: {audio: true, video: false, data: false}, // Audio only
- // If you want to test simulcasting (Chrome and Firefox only), then
- // pass a ?simulcast=true when opening this demo page: it will turn
- // the following 'simulcast' property to pass to janus.js to true
- simulcast: false,
- simulcast2: false,
- success: function (jsep) {
- Janus.debug("Got SDP!");
- Janus.debug(jsep);
- tts.send({"message": body, "jsep": jsep});
- },
- error: function (error) {
- Janus.error("WebRTC error:", error);
- // bootbox.alert("WebRTC error... " + JSON.stringify(error));
- }
- });
- // $('#start').removeAttr('disabled').html("Stop")
- // .click(function() {
- // $(this).attr('disabled', true);
- // janus.destroy();
- // });
- },
- error: function (error) {
- console.error(" -- Error attaching plugin...", error);
- bootbox.alert("Error attaching plugin... " + error);
- },
- consentDialog: function (on) {
- Janus.debug("Consent dialog should be " + (on ? "on" : "off") + " now");
- if (on) {
- // Darken screen and show hint
- // $.blockUI({
- // message: '<div><img src="up_arrow.png"/></div>',
- // css: {
- // border: 'none',
- // padding: '15px',
- // backgroundColor: 'transparent',
- // color: '#aaa',
- // top: '10px',
- // left: (navigator.mozGetUserMedia ? '-100px' : '300px')
- // } });
- } else {
- // Restore screen
- // $.unblockUI();
- }
- },
- iceState: function (state) {
- Janus.log("ICE state changed to " + state);
- },
- mediaState: function (medium, on) {
- Janus.log("Janus " + (on ? "started" : "stopped") + " receiving our " + medium);
- },
- webrtcState: function (on) {
- Janus.log("Janus says our WebRTC PeerConnection is " + (on ? "up" : "down") + " now");
- $("#audioleft").parent().unblock();
- },
- slowLink: function (uplink, lost) {
- Janus.warn("Janus reports problems " + (uplink ? "sending" : "receiving") +
- " packets on this PeerConnection (" + lost + " lost packets)");
- },
- onmessage: function (msg, jsep) {
- Janus.debug(" ::: Got a message :::");
- Janus.debug(msg);
- if (jsep !== undefined && jsep !== null) {
- Janus.debug("Handling SDP as well...");
- Janus.debug(jsep);
- tts.handleRemoteJsep({jsep: jsep});
- }
- var result = msg["result"];
- if (result !== null && result !== undefined) {
- if (result === "done") {
- // The plugin closed
- bootbox.alert("The TTS Test is over");
- if (spinner !== null && spinner !== undefined)
- spinner.stop();
- spinner = null;
- $('#myaudio').remove();
- //$('#waitingvideo').remove();
- $('#peeraudio').remove();
- return;
- }
- // Any loss?
- var status = result["status"];
- if (status === "slow_link") {
- //~ var bitrate = result["bitrate"];
- //~ toastr.warning("The bitrate has been cut to " + (bitrate/1000) + "kbps", "Packet loss?", {timeOut: 2000});
- toastr.warning("Janus apparently missed many packets we sent, maybe we should reduce the bitrate", "Packet loss?", {timeOut: 2000});
- }
- }
- },
- onlocalstream: function (stream) {
- Janus.debug(" ::: Got a local stream :::");
- Janus.debug(stream);
- if ($('#myaudio').length === 0) {
- $('#audios').removeClass('hide').show();
- $('#audioleft').append('<audio id="myaudio" autoplay controls muted>Your browser does not support audio tag</audio>');
- }
- Janus.attachMediaStream($('#myaudio').get(0), stream);
- //$("#myaudio").get(0).muted = "muted";
- if (tts.webrtcStuff.pc.iceConnectionState !== "completed" &&
- tts.webrtcStuff.pc.iceConnectionState !== "connected") {
- // $("#audioleft").parent().block({
- // message: '<b>Publishing...</b>',
- // css: {
- // border: 'none',
- // backgroundColor: 'transparent',
- // color: 'white'
- // }
- // });
- // No remote video yet
- //$('#audioright').append('<video class="rounded centered" id="waitingvideo" width=320 height=240 />');
- if (spinner == null) {
- var target = document.getElementById('audioright');
- //spinner = new Spinner({top:100}).spin(target);
- } else {
- spinner.spin();
- }
- }
- var audioTracks = stream.getAudioTracks();
- if (audioTracks === null || audioTracks === undefined || audioTracks.length === 0) {
- $('#myaudio').hide();
- } else {
- $('#myaudio').removeClass('hide').show();
- }
- },
- onremotestream: function (stream) {
- Janus.debug(" ::: Got a remote stream :::");
- Janus.debug(stream);
- if ($('#peeraudio').length === 0) {
- $('#audios').removeClass('hide').show();
- $('#audioright').append('<audio id="peeraudio" autoplay controls>Your browser does not support audio tag</audio>');
- // Show the video, hide the spinner and show the resolution when we get a playing event
- $("#peeraudio").bind("playing", function () {
- //$('#waitingvideo').remove();
- $('#peeraudio').removeClass('hide').show();
- if (spinner !== null && spinner !== undefined)
- spinner.stop();
- spinner = null;
- });
- }
- Janus.attachMediaStream($('#peeraudio').get(0), stream);
- var audioTracks = stream.getAudioTracks();
- if (audioTracks === null || audioTracks === undefined || audioTracks.length === 0) {
- $('#peeraudio').hide();
- } else {
- $('#peeraudio').removeClass('hide').show();
- }
- },
- ondataopen: function (data) {
- Janus.log("The DataChannel is available!");
- },
- ondata: function (data) {
- Janus.debug("We got data from the DataChannel! " + data);
- },
- oncleanup: function () {
- Janus.log(" ::: Got a cleanup notification :::");
- if (spinner !== null && spinner !== undefined)
- spinner.stop();
- spinner = null;
- $('#myaudio').remove();
- //$('#waitingvideo').remove();
- $("#audioleft").parent().unblock();
- $('#peeraudio').remove();
- }
- });
- },
- error: function (error) {
- Janus.error(error);
- bootbox.alert(error, function () {
- // window.location.reload();
- });
- },
- destroyed: function () {
- // window.location.reload();
- }
- });
- });
- window.stopTalk = function () {
- janus.destroy();
- }
- EZUITalkStopTalk = function () {
- janus.destroy();
- }
- // debugger;
- window.startTalk = startTalk;
- function startTalk() {
- // Make sure the browser supports WebRTC
- if (!Janus.isWebrtcSupported()) {
- bootbox.alert("No WebRTC support... ");
- return;
- }
- // if($('#tts_url').val().length == 0){
- // bootbox.alert("Please input tts url... ");
- // return;
- // }
- $(this).attr('disabled', true).unbind('click');
- // Create session
- janus = new Janus(
- {
- server: window.EZUITalk.opt.rtcUrl,
- // No "iceServers" is provided, meaning janus.js will use a default STUN server
- // Here are some examples of how an iceServers field may look like to support TURN
- // iceServers: [{urls: "turn:yourturnserver.com:3478", username: "janususer", credential: "januspwd"}],
- // iceServers: [{urls: "turn:yourturnserver.com:443?transport=tcp", username: "janususer", credential: "januspwd"}],
- // iceServers: [{urls: "turns:yourturnserver.com:443?transport=tcp", username: "janususer", credential: "januspwd"}],
- // Should the Janus API require authentication, you can specify either the API secret or user token here too
- // token: "mytoken",
- // or
- // apisecret: "serversecret",
- success: function () {
- // Attach to tts plugin
- janus.attach(
- {
- plugin: "rtcgw.plugin.tts",
- opaqueId: opaqueId,
- success: function (pluginHandle) {
- $('#details').remove();
- tts = pluginHandle;
- Janus.log("Plugin attached! (" + tts.getPlugin() + ", id=" + tts.getId() + ")");
- // Negotiate WebRTC
- //var url = "tts://61.130.6.23:8664/talk://D13781761:0:1:cas.ys7.com:6500?97fbd2a75fa94b7682c994d3d1fac8ca:ut.5porslgu79e9r7ca48z32k8abgl3rp58-77bhb6i7xr-1kmumtg-jkhy7pvfr:0:3"
- //var url = "tts://10.86.15.209:8664/talk://D13781761:0:1:cas.ys7.com:6500?32db2578ba7c4a84be22ecc0bcd0f8db:ut.5lqpkhim5m7cdk2y5w60g7hm9vd7i3v0-3d2pwhxe2t-11wx2ge-sh4yazbll:0:3"
- //var url = "tts://10.86.15.209:8664/talk://D13781761:0:1:cas.ys7.com:6500"
- //test12.ys.com
- //var url = "tts://10.86.15.209:8664/talk://D08197169:0:1:cas.ys7.com:6500"
- //test10.ys.com
- //var url = "tts://10.86.29.210:8664/talk://D08197169:0:1:cas.ys7.com:6500"
- var url = window.EZUITalk.opt.talkLink;
- console.log("ttsUlr", url);
- var body = {
- "request": "start",
- "url": url,
- "codec": "opus",
- "dir": "sendrecv",
- "audio_debug": 1
- };
- //tts.send({"message": body});
- Janus.debug("Trying a createOffer too (audio/video sendrecv)");
- tts.createOffer(
- {
- // No media provided: by default, it's sendrecv for audio and video
- media: {audio: true, video: false, data: false}, // Audio only
- // If you want to test simulcasting (Chrome and Firefox only), then
- // pass a ?simulcast=true when opening this demo page: it will turn
- // the following 'simulcast' property to pass to janus.js to true
- simulcast: false,
- simulcast2: false,
- success: function (jsep) {
- Janus.debug("Got SDP!");
- Janus.debug(jsep);
- tts.send({"message": body, "jsep": jsep});
- },
- error: function (error) {
- Janus.error("WebRTC error:", error);
- // bootbox.alert("WebRTC error... " + JSON.stringify(error));
- }
- });
- // $('#start').removeAttr('disabled').html("Stop")
- // .click(function() {
- // $(this).attr('disabled', true);
- // janus.destroy();
- // });
- },
- error: function (error) {
- console.error(" -- Error attaching plugin...", error);
- bootbox.alert("Error attaching plugin... " + error);
- },
- consentDialog: function (on) {
- Janus.debug("Consent dialog should be " + (on ? "on" : "off") + " now");
- if (on) {
- // Darken screen and show hint
- // $.blockUI({
- // message: '<div><img src="up_arrow.png"/></div>',
- // css: {
- // border: 'none',
- // padding: '15px',
- // backgroundColor: 'transparent',
- // color: '#aaa',
- // top: '10px',
- // left: (navigator.mozGetUserMedia ? '-100px' : '300px')
- // } });
- } else {
- // Restore screen
- // $.unblockUI();
- }
- },
- iceState: function (state) {
- Janus.log("ICE state changed to " + state);
- },
- mediaState: function (medium, on) {
- Janus.log("Janus " + (on ? "started" : "stopped") + " receiving our " + medium);
- },
- webrtcState: function (on) {
- Janus.log("Janus says our WebRTC PeerConnection is " + (on ? "up" : "down") + " now");
- // $("#audioleft").parent().unblock();
- },
- slowLink: function (uplink, lost) {
- Janus.warn("Janus reports problems " + (uplink ? "sending" : "receiving") +
- " packets on this PeerConnection (" + lost + " lost packets)");
- },
- onmessage: function (msg, jsep) {
- Janus.debug(" ::: Got a message :::");
- Janus.debug(msg);
- if (jsep !== undefined && jsep !== null) {
- Janus.debug("Handling SDP as well...");
- Janus.debug(jsep);
- tts.handleRemoteJsep({jsep: jsep});
- }
- var result = msg["result"];
- if (result !== null && result !== undefined) {
- if (result === "done") {
- // The plugin closed
- bootbox.alert("The TTS Test is over");
- if (spinner !== null && spinner !== undefined)
- spinner.stop();
- spinner = null;
- $('#myaudio').remove();
- //$('#waitingvideo').remove();
- $('#peeraudio').remove();
- return;
- }
- // Any loss?
- var status = result["status"];
- if (status === "slow_link") {
- //~ var bitrate = result["bitrate"];
- //~ toastr.warning("The bitrate has been cut to " + (bitrate/1000) + "kbps", "Packet loss?", {timeOut: 2000});
- toastr.warning("Janus apparently missed many packets we sent, maybe we should reduce the bitrate", "Packet loss?", {timeOut: 2000});
- }
- }
- },
- onlocalstream: function (stream) {
- Janus.debug(" ::: Got a local stream :::");
- Janus.debug(stream);
- if ($('#myaudio').length === 0) {
- $('#audios').removeClass('hide').show();
- $('#audioleft').append('<audio id="myaudio" autoplay controls muted>Your browser does not support audio tag</audio>');
- }
- Janus.attachMediaStream($('#myaudio').get(0), stream);
- //$("#myaudio").get(0).muted = "muted";
- if (tts.webrtcStuff.pc.iceConnectionState !== "completed" &&
- tts.webrtcStuff.pc.iceConnectionState !== "connected") {
- // $("#audioleft").parent().block({
- // message: '<b>Publishing...</b>',
- // css: {
- // border: 'none',
- // backgroundColor: 'transparent',
- // color: 'white'
- // }
- // });
- // No remote video yet
- //$('#audioright').append('<video class="rounded centered" id="waitingvideo" width=320 height=240 />');
- if (spinner == null) {
- var target = document.getElementById('audioright');
- //spinner = new Spinner({top:100}).spin(target);
- } else {
- spinner.spin();
- }
- }
- var audioTracks = stream.getAudioTracks();
- if (audioTracks === null || audioTracks === undefined || audioTracks.length === 0) {
- $('#myaudio').hide();
- } else {
- $('#myaudio').removeClass('hide').show();
- }
- },
- onremotestream: function (stream) {
- Janus.debug(" ::: Got a remote stream :::");
- Janus.debug(stream);
- if ($('#peeraudio').length === 0) {
- $('#audios').removeClass('hide').show();
- $('#audioright').append('<audio id="peeraudio" autoplay controls>Your browser does not support audio tag</audio>');
- // Show the video, hide the spinner and show the resolution when we get a playing event
- $("#peeraudio").bind("playing", function () {
- //$('#waitingvideo').remove();
- $('#peeraudio').removeClass('hide').show();
- if (spinner !== null && spinner !== undefined)
- spinner.stop();
- spinner = null;
- });
- }
- Janus.attachMediaStream($('#peeraudio').get(0), stream);
- var audioTracks = stream.getAudioTracks();
- if (audioTracks === null || audioTracks === undefined || audioTracks.length === 0) {
- $('#peeraudio').hide();
- } else {
- $('#peeraudio').removeClass('hide').show();
- }
- },
- ondataopen: function (data) {
- Janus.log("The DataChannel is available!");
- },
- ondata: function (data) {
- Janus.debug("We got data from the DataChannel! " + data);
- },
- oncleanup: function () {
- Janus.log(" ::: Got a cleanup notification :::");
- if (spinner !== null && spinner !== undefined)
- spinner.stop();
- spinner = null;
- $('#myaudio').remove();
- //$('#waitingvideo').remove();
- $("#audioleft").parent().unblock();
- $('#peeraudio').remove();
- }
- });
- },
- error: function (error) {
- Janus.error(error);
- console.log("error", error)
- },
- destroyed: function () {
- // window.location.reload();
- }
- });
- }
- }
- });
- });
- function checkEnter(event) {
- var theCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
- if (theCode == 13) {
- sendData();
- return false;
- } else {
- return true;
- }
- }
- // Helper to parse query string
- function getQueryStringValue(name) {
- name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
- var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
- results = regex.exec(location.search);
- return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
- }
|