1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Janus WebRTC Server (multistream): Recorder/Playout Demo</title>
<script type="text/javascript" src="javascript/webrtc-adapter/adapter.min.js" ></script>
<script type="text/javascript" src="javascript/jquery/jquery.min.js" ></script>
<script type="text/javascript" src="javascript/jquery-blockui/jquery.blockUI.js" ></script>
<script type="text/javascript" src="javascript/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="javascript/bootbox/bootbox.min.js"></script>
<script type="text/javascript" src="javascript/spin.js/spin.min.js"></script>
<script type="text/javascript" src="settings.js" ></script>
<script type="text/javascript" src="javascript/janus-gateway/janus.min.js" ></script>
<script type="text/javascript" src="recordplaytest.js"></script>
<script>
$(function() {
$(".navbar-static-top").load("navbar.html", function() {
$(".navbar-static-top li.dropdown").addClass("active");
$(".navbar-static-top a[href='recordplaytest.html']").parent().addClass("active");
});
$(".footer").load("footer.html");
});
</script>
<link rel="stylesheet" href="javascript/bootswatch/cerulean/bootstrap.min.css" type="text/css"/>
<link rel="stylesheet" href="css/demo.css" type="text/css"/>
<link rel="stylesheet" href="fonts/font-awesome/css/font-awesome.min.css" type="text/css"/>
</head>
<body>
<nav class="navbar navbar-default navbar-static-top">
</nav>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="page-header">
<h1>Plugin Demo: Recorder/Playout
<button class="btn btn-default" autocomplete="off" id="start">Start</button>
</h1>
</div>
<div class="container" id="details">
<div class="row">
<div class="col-md-12">
<h3>Demo details</h3>
<p>This demo shows how you can record a WebRTC session, and replay it later. You
can choose to either record a new session (e.g., a videomessage) or watch any of
the recordings that may be available (including those you made yourself).</p>
<p>This application makes use of the integrated recording feature in Janus,
specifically the individual recording of audio and video streams in <code>.mjr</code>
format: these individual recordings are then used for a live broadcasting
of the dumped RTP packets through a sendonly WebRTC PeerConnection
when you choose to replay them. To post-process these recordings in a
more usable format (e.g., <code>.webm</code> for video or <code>.opus</code>
for audio) you can make use of the <code>janus-pp-rec</code> tool that
is available as part of the Janus code.</p>
<p>Press the <code>Start</code> button above to launch the demo.</p>
</div>
</div>
</div>
<div class="container hide" id="recordplay">
<div id="demo">
<div class="col-md-6" id="controls">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Recorder/Playout</h3>
</div>
<div class="panel-body">
<div class="btn-group btn-group-sm">
<button class="btn btn-danger" disabled autocomplete="off" id="record">Record</button>
<button class="btn btn-success" disabled autocomplete="off" id="play">Play</button>
<button class="btn btn-primary" disabled autocomplete="off" id="list">Update <i id="update-list" class="fa fa-refresh"></i></button>
</div>
<br/>
<div class="btn-group btn-group-sm" style="width: 100%">
<div class="btn-group btn-group-sm" style="width: 100%">
<button autocomplete="off" id="recset" class="btn btn-default dropdown-toggle" data-toggle="dropdown" style="width: 100%">
Recordings list<span class="caret"></span>
</button>
<ul id="recslist" class="dropdown-menu" role="menu" style="max-height: 300px; overflow: auto;">
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 hide" id="video">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
<span id="videotitle">Remote Video</span>
<button class="btn-xs btn-danger pull-right" autocomplete="off" id="stop">Stop</button>
<button class="btn-xs btn-primary pull-right" autocomplete="off" id="pause-resume">Pause</button>
</h3>
</div>
<div class="panel-body" id="videobox"></div>
</div>
<div class="input-group margin-bottom-sm hide">
<span class="input-group-addon"><i class="fa fa-cloud-upload fa-fw"></i></span>
<input class="form-control" type="text" placeholder="" autocomplete="off" id="datafield" onkeypress="return checkEnter(event);" disabled />
</div>
</div>
</div>
</div>
</div>
</div>
<hr>
<div class="footer">
</div>
</div>
</body>
</html>
|