SRS 6.0-b0 源码 + danmaku 后端(排除 objs/3rdparty/测试媒体)
This commit is contained in:
Executable
+25
@@ -0,0 +1,25 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
客户端-{{client.id}}
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse in">
|
||||
<div class="accordion-inner">
|
||||
<p>ID: {{client.id}}</p>
|
||||
<p>IP: {{client.ip}}</p>
|
||||
<p><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + client.vhost)">{{client.vhost}}</a></p>
|
||||
<p><a href="javascript:void(0)" ng-click="gogogo('/streams/' + client.stream)">{{client.stream}}</a></p>
|
||||
<p>Type: {{client.publish| sc_filter_ctype}}</p>
|
||||
<p>Alive: {{client.alive| sc_filter_time}}</p>
|
||||
<p>TcUrl: {{client.tcUrl}}</p>
|
||||
<p>PageUrl: {{client.pageUrl}}</p>
|
||||
<p>SwfUrl: {{client.swfUrl}}</p>
|
||||
<p><a ng-click="kickoff(client)" href="javascript:void(0)">踢Ta</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+25
@@ -0,0 +1,25 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
Client-{{client.id}}
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse in">
|
||||
<div class="accordion-inner">
|
||||
<p>ID: {{client.id}}</p>
|
||||
<p>IP: {{client.ip}}</p>
|
||||
<p><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + client.vhost)">{{client.vhost}}</a></p>
|
||||
<p><a href="javascript:void(0)" ng-click="gogogo('/streams/' + client.stream)">{{client.stream}}</a></p>
|
||||
<p>Type: {{client.publish| sc_filter_ctype}}</p>
|
||||
<p>Alive: {{client.alive| sc_filter_time}}</p>
|
||||
<p>TcUrl: {{client.tcUrl}}</p>
|
||||
<p>PageUrl: {{client.pageUrl}}</p>
|
||||
<p>SwfUrl: {{client.swfUrl}}</p>
|
||||
<p><a ng-click="kickoff(client)" href="javascript:void(0)">Kickoff It</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+41
@@ -0,0 +1,41 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
客户端(Clients)列表
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>IP</th>
|
||||
<th>Vhost</th>
|
||||
<th>Stream</th>
|
||||
<th>类型</th>
|
||||
<th>时长</th>
|
||||
<th>URL</th>
|
||||
<th>分类</th>
|
||||
<th>管理</th>
|
||||
</tr>
|
||||
<tr ng-repeat="client in clients">
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/clients/' + client.id)">{{client.id}}</a></td>
|
||||
<td>{{client.ip}}</td>
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + client.vhost)">{{client.vhost}}</a></td>
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/streams/' + client.stream)">{{client.stream}}</a></td>
|
||||
<td>{{client.publish| sc_filter_ctype}}</td>
|
||||
<td>{{client.alive| sc_filter_time}}</td>
|
||||
<td>{{client |sc_filter_streamURL}}</td>
|
||||
<td>{{client.type}}</td>
|
||||
<td>
|
||||
<a ng-click="kickoff(client)" href="javascript:void(0)">踢Ta</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+41
@@ -0,0 +1,41 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
System Clients
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>IP</th>
|
||||
<th>Vhost</th>
|
||||
<th>Stream</th>
|
||||
<th>Type</th>
|
||||
<th>Duration</th>
|
||||
<th>URL</th>
|
||||
<th>Category</th>
|
||||
<th>Manage</th>
|
||||
</tr>
|
||||
<tr ng-repeat="client in clients">
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/clients/' + client.id)">{{client.id}}</a></td>
|
||||
<td>{{client.ip}}</td>
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + client.vhost)">{{client.vhost}}</a></td>
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/streams/' + client.stream)">{{client.stream}}</a></td>
|
||||
<td>{{client.publish| sc_filter_ctype}}</td>
|
||||
<td>{{client.alive| sc_filter_time}}</td>
|
||||
<td>{{client |sc_filter_streamURL}}</td>
|
||||
<td>{{client.type}}</td>
|
||||
<td>
|
||||
<a ng-click="kickoff(client)" href="javascript:void(0)">Kickoff It</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+47
@@ -0,0 +1,47 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group" ng-show="!support_raw_api">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
HTTP RAW API
|
||||
</a>
|
||||
</div>
|
||||
<div class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<div class="alert alert-block alert-danger">
|
||||
SRS 4.0不再支持HTTP RAW API。参考<a href='https://github.com/ossrs/srs/issues/2653'>#2653</a>。
|
||||
</div>
|
||||
<table class="table table-striped table-hover table-bordered">
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Value</th>
|
||||
<th>Description</th>
|
||||
<th>Opt</th>
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.enabled" scp-value="http_api.enabled" scp-bool="true"
|
||||
scp-desc="是否开启HTTP API,开启后就可以访问SRS提供的API管理服务器。默认: {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.listen" scp-value="http_api.listen"
|
||||
scp-desc="HTTP API的侦听地址,格式是<[address:]port>。默认: 1985">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.crossdomain" scp-value="http_api.crossdomain" scp-bool="true"
|
||||
scp-desc="是否允许JS跨域,开启后JS可以直接跨域(还可以通过JSONP访问)。默认: {{true| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.raw_api.enabled" scp-value="http_api.raw_api.enabled" scp-bool="true"
|
||||
scp-desc="是否开启HTTP RAW API,允许API修改服务器配置。默认: {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.raw_api.allow_reload" scp-value="http_api.raw_api.allow_reload" scp-bool="true"
|
||||
scp-desc="是否允许API进行Reload操作。默认: {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.raw_api.allow_query" scp-value="http_api.raw_api.allow_query" scp-bool="true"
|
||||
scp-desc="是否允许API进行Query查询操作。默认: {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.raw_api.allow_update" scp-value="http_api.raw_api.allow_update" scp-bool="true"
|
||||
scp-desc="是否允许API进行Update更新操作。默认: {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+47
@@ -0,0 +1,47 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group" ng-show="!support_raw_api">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
HTTP RAW API
|
||||
</a>
|
||||
</div>
|
||||
<div class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<div class="alert alert-block alert-danger">
|
||||
HTTP RAW API is removed, please read <a href='https://github.com/ossrs/srs/issues/2653'>#2653</a>。
|
||||
</div>
|
||||
<table class="table table-striped table-hover table-bordered">
|
||||
<tr>
|
||||
<th>Key</th>
|
||||
<th>Value</th>
|
||||
<th>Description</th>
|
||||
<th>Opt</th>
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.enabled" scp-value="http_api.enabled" scp-bool="true"
|
||||
scp-desc="Whether enable HTTP API. Default is {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.listen" scp-value="http_api.listen"
|
||||
scp-desc="The listen port for HTTP API, format is <[address:]port>. Default is 1985">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.crossdomain" scp-value="http_api.crossdomain" scp-bool="true"
|
||||
scp-desc="Whether allow js CORS(JSONP). Default is {{true| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.raw_api.enabled" scp-value="http_api.raw_api.enabled" scp-bool="true"
|
||||
scp-desc="Whether enable HTTP RAW API. Default is {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.raw_api.allow_reload" scp-value="http_api.raw_api.allow_reload" scp-bool="true"
|
||||
scp-desc="Whether allow HTTP RAW API to reload. Default is {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.raw_api.allow_query" scp-value="http_api.raw_api.allow_query" scp-bool="true"
|
||||
scp-desc="Whether allow HTTP RAW API to query. Default is {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
<tr sc-pretty scp-key="http_api.raw_api.allow_update" scp-value="http_api.raw_api.allow_update" scp-bool="true"
|
||||
scp-desc="Whether allow HTTP RAW API to update. Default is {{false| sc_filter_enabled}}">
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
连接到您的SRS服务器
|
||||
</a>
|
||||
</div>
|
||||
<div class="accordion-body collapse in">
|
||||
<div class="accordion-inner">
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="sscProtocol">协议</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="sscProtocol" placeholder="SRS API Protocol, http or https" ng-model="server.schema">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="sscServer">服务器IP</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="sscServer" placeholder="SRS API Server IP" ng-model="server.ip">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="sscPort">API端口</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="sscPort" placeholder="SRS API Server Port" ng-model="server.port">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<button type="submit" class="btn" ng-click="connect()">连接到SRS</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
Connect to your SRS
|
||||
</a>
|
||||
</div>
|
||||
<div class="accordion-body collapse in">
|
||||
<div class="accordion-inner">
|
||||
<div class="form-horizontal">
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="sscProtocol">Protocol</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="sscProtocol" placeholder="SRS API Protocol, http or https" ng-model="server.schema">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="sscServer">Server IP</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="sscServer" placeholder="SRS API Server IP" ng-model="server.ip">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="sscPort">SRS API Port</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="sscPort" placeholder="SRS API Server Port" ng-model="server.port">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<button type="submit" class="btn" ng-click="connect()">Connect</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
视频流-{{stream.id}}
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse in">
|
||||
<div class="accordion-inner" ng-if="stream">
|
||||
<p>ID: {{stream.id}}</p>
|
||||
<p>Name: {{stream.name}}</p>
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + stream.vhost)">{{owner.name}}</a></td>
|
||||
<p>Publishing: {{stream.publish.active| sc_filter_has_stream}}</p>
|
||||
<p>Clients: {{stream.clients}}人</p>
|
||||
<p>Recv: {{stream.kbps.recv_30s| sc_filter_bitrate_k}}</p>
|
||||
<p>Send: {{stream.kbps.send_30s| sc_filter_bitrate_k}}</p>
|
||||
<p ng-if="stream.video">Video: <span>{{stream.video| sc_filter_video}}</span></p>
|
||||
<p ng-if="stream.audio">Audio: <span>{{stream.audio| sc_filter_audio}}</span></p>
|
||||
<p>管理: <a ng-href="{{stream| sc_filter_preview_url}}" target="_blank">预览</a></p>
|
||||
<p ng-show="stream.publish.active">管理: <a ng-click="kickoff(stream)" href="javascript:void(0)">踢流</a></p>
|
||||
<p ng-show="support_raw_api">管理: <a ng-click="dvr(stream)" href="javascript:void(0)">录制</a> </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
Stream-{{stream.id}}
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse in">
|
||||
<div class="accordion-inner" ng-if="stream">
|
||||
<p>ID: {{stream.id}}</p>
|
||||
<p>Name: {{stream.name}}</p>
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + stream.vhost)">{{owner.name}}</a></td>
|
||||
<p>Publishing: {{stream.publish.active| sc_filter_has_stream}}</p>
|
||||
<p>Clients: {{stream.clients}} Clients</p>
|
||||
<p>Recv: {{stream.kbps.recv_30s| sc_filter_bitrate_k}}</p>
|
||||
<p>Send: {{stream.kbps.send_30s| sc_filter_bitrate_k}}</p>
|
||||
<p ng-if="stream.video">Video: <span>{{stream.video| sc_filter_video}}</span></p>
|
||||
<p ng-if="stream.audio">Audio: <span>{{stream.audio| sc_filter_audio}}</span></p>
|
||||
<p>Manage: <a ng-href="{{stream| sc_filter_preview_url}}" target="_blank">Preview</a></p>
|
||||
<p ng-show="stream.publish.active">Manage: <a ng-click="kickoff(stream)" href="javascript:void(0)">Kickoff</a></p>
|
||||
<p ng-show="support_raw_api">Manage: <a ng-click="dvr(stream)" href="javascript:void(0)">Record</a> </p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+49
@@ -0,0 +1,49 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
视频流(Streams)列表
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>流名称</th>
|
||||
<th>URL</th>
|
||||
<th>Vhost</th>
|
||||
<th>状态</th>
|
||||
<th>在线人数</th>
|
||||
<th>入口带宽</th>
|
||||
<th>出口带宽</th>
|
||||
<th>视频信息</th>
|
||||
<th>音频信息</th>
|
||||
<th>管理</th>
|
||||
</tr>
|
||||
<tr ng-repeat="stream in streams">
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/streams/' + stream.id)">{{stream.id}}</a></td>
|
||||
<td>{{stream.name| sc_filter_less}}</td>
|
||||
<td>{{stream |sc_filter_streamURL}}</td>
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + stream.vhost)">{{stream.owner.name}}</a></td>
|
||||
<td>{{stream.publish.active| sc_filter_has_stream}}</td>
|
||||
<td>{{stream.clients}}人</td>
|
||||
<td>{{stream.kbps.recv_30s| sc_filter_bitrate_k}}</td>
|
||||
<td>{{stream.kbps.send_30s| sc_filter_bitrate_k}}</td>
|
||||
<td><span ng-if="stream.video">{{stream.video| sc_filter_video}}</span></td>
|
||||
<td><span ng-if="stream.audio">{{stream.audio| sc_filter_audio}}</span></td>
|
||||
<td>
|
||||
<a ng-href="{{stream| sc_filter_preview_url}}" target="_blank">预览</a>
|
||||
<a ng-show="stream.publish.active" ng-click="kickoff(stream)" href="javascript:void(0)">踢流</a>
|
||||
<span ng-show="support_raw_api">
|
||||
<a href="javascript:void(0)" ng-click="dvr(stream)">录制</a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+49
@@ -0,0 +1,49 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
System Streams
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Name</th>
|
||||
<th>URL</th>
|
||||
<th>Vhost</th>
|
||||
<th>Status</th>
|
||||
<th>Clients</th>
|
||||
<th>Inbound</th>
|
||||
<th>Outbound</th>
|
||||
<th>Video</th>
|
||||
<th>Audio</th>
|
||||
<th>Manage</th>
|
||||
</tr>
|
||||
<tr ng-repeat="stream in streams">
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/streams/' + stream.id)">{{stream.id}}</a></td>
|
||||
<td>{{stream.name| sc_filter_less}}</td>
|
||||
<td>{{stream |sc_filter_streamURL}}</td>
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + stream.vhost)">{{stream.owner.name}}</a></td>
|
||||
<td>{{stream.publish.active| sc_filter_has_stream}}</td>
|
||||
<td>{{stream.clients}}</td>
|
||||
<td>{{stream.kbps.recv_30s| sc_filter_bitrate_k}}</td>
|
||||
<td>{{stream.kbps.send_30s| sc_filter_bitrate_k}}</td>
|
||||
<td><span ng-if="stream.video">{{stream.video| sc_filter_video}}</span></td>
|
||||
<td><span ng-if="stream.audio">{{stream.audio| sc_filter_audio}}</span></td>
|
||||
<td>
|
||||
<a ng-href="{{stream| sc_filter_preview_url}}" target="_blank">Preview</a>
|
||||
<a ng-show="stream.publish.active" ng-click="kickoff(stream)" href="javascript:void(0)">Kickoff</a>
|
||||
<span ng-show="support_raw_api">
|
||||
<a href="javascript:void(0)" ng-click="dvr(stream)">Record</a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+137
@@ -0,0 +1,137 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
服务器基本信息
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<div class="row">
|
||||
<div class="span3">
|
||||
<table class="table table-bordered" ng-if="server">
|
||||
<tr>
|
||||
<th colspan="2">SRS/{{server.version}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>运行</td>
|
||||
<td>{{server.srs_uptime| sc_filter_time}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CPU</td>
|
||||
<td>{{server.cpu_percent| sc_filter_percentf}} / {{system.cpus_online| sc_filter_percentf}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>内存</td>
|
||||
<td>
|
||||
{{server.mem_percent| sc_filter_percentf2}}
|
||||
{{server.mem_kbyte| sc_filter_filesize_k2}} / {{system.mem_ram_kbyte| sc_filter_filesize_k2}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>网络</td>
|
||||
<td>
|
||||
<span title="SRS的连接数">{{system.conn_srs}}</span> /
|
||||
<span title="SRS的入网带宽,即客户端上传带宽">{{kbps.in.srs| sc_filter_bitrate_k2}}</span> /
|
||||
<span title="SRS的出网带宽,即客户端下载带宽">{{kbps.out.srs| sc_filter_bitrate_k2}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span3">
|
||||
<table class="table table-bordered" ng-if="system">
|
||||
<tr>
|
||||
<th colspan="2">OS信息</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>运行</td>
|
||||
<td>{{system.uptime| sc_filter_time}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CPU</td>
|
||||
<td>{{system.cpu_percent * system.cpus_online| sc_filter_percentf}} / {{system.cpus_online| sc_filter_percentf}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>内存</td>
|
||||
<td>
|
||||
{{system.mem_ram_percent| sc_filter_percentf2}}
|
||||
{{system.mem_ram_kbyte * system.mem_ram_percent| sc_filter_filesize_k2}} / {{system.mem_ram_kbyte| sc_filter_filesize_k2}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>负载</td>
|
||||
<td>{{system.load_1m| sc_filter_number}} / {{system.load_5m| sc_filter_number}} / {{system.load_15m| sc_filter_number}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span3">
|
||||
<table class="table table-bordered" ng-if="system">
|
||||
<tr>
|
||||
<th colspan="2">负载信息</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>外网</td>
|
||||
<td>
|
||||
<span title="系统外网的入网带宽,即客户端上传带宽">{{kbps.in.sys| sc_filter_bitrate_k2}}</span> /
|
||||
<span title="系统外网的出网带宽,即客户端下载带宽">{{kbps.out.sys| sc_filter_bitrate_k2}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>内网</td>
|
||||
<td>
|
||||
<span title="系统内网的入网带宽,即客户端上传带宽">{{kbps.in.inner| sc_filter_bitrate_k2}}</span> /
|
||||
<span title="系统内网的出网带宽,即客户端下载带宽">{{kbps.out.inner| sc_filter_bitrate_k2}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>连接</td>
|
||||
<td>
|
||||
<span title="系统总连接数">{{system.conn_sys}}</span>
|
||||
<span title="系统ESTABLISHED状态的连接数">{{system.conn_sys_et}}</span>
|
||||
<span title="系统TIME_WAIT状态的连接数">{{system.conn_sys_tw}}</span>
|
||||
<span title="系统UDP绑定端口">{{system.conn_sys_udp}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>磁盘</td>
|
||||
<td>
|
||||
<span title="IO繁忙度">{{system.disk_busy_percent| sc_filter_percentf2}}</span>
|
||||
<span title="磁盘读取速度Bps">{{system.disk_read_KBps| sc_filter_filerate_k2}}</span>
|
||||
<span title="磁盘写入速度Bps">{{system.disk_write_KBps| sc_filter_filerate_k2}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span2">
|
||||
<table class="table table-bordered" ng-if="system">
|
||||
<tr>
|
||||
<th colspan="2">其他信息</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="系统CPU信息">CPU</td>
|
||||
<td>
|
||||
<span title="CPU核心数">{{system.cpus}}</span> /
|
||||
<span title="在线CPU核心数">{{system.cpus_online}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="SRS的PID">PID</td>
|
||||
<td>{{server.pid}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="SRS的父PID">PPID</td>
|
||||
<td>{{server.ppid}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="SRS API是否有效">Ready</td>
|
||||
<td>{{global.ok| sc_filter_yesno}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+137
@@ -0,0 +1,137 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
SRS Summary
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<div class="row">
|
||||
<div class="span3">
|
||||
<table class="table table-bordered" ng-if="server">
|
||||
<tr>
|
||||
<th colspan="2">SRS/{{server.version}}</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Alive</td>
|
||||
<td>{{server.srs_uptime| sc_filter_time}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CPU</td>
|
||||
<td>{{server.cpu_percent| sc_filter_percentf}} / {{system.cpus_online| sc_filter_percentf}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Memory</td>
|
||||
<td>
|
||||
{{server.mem_percent| sc_filter_percentf2}}
|
||||
{{server.mem_kbyte| sc_filter_filesize_k2}} / {{system.mem_ram_kbyte| sc_filter_filesize_k2}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Network</td>
|
||||
<td>
|
||||
<span title="SRS Connections">{{system.conn_srs}}</span> /
|
||||
<span title="SRS Inbound Bandwidth">{{kbps.in.srs| sc_filter_bitrate_k2}}</span> /
|
||||
<span title="SRS Outbound Bandwidth">{{kbps.out.srs| sc_filter_bitrate_k2}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span3">
|
||||
<table class="table table-bordered" ng-if="system">
|
||||
<tr>
|
||||
<th colspan="2">OS System</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Alive</td>
|
||||
<td>{{system.uptime| sc_filter_time}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CPU</td>
|
||||
<td>{{system.cpu_percent * system.cpus_online| sc_filter_percentf}} / {{system.cpus_online| sc_filter_percentf}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Memory</td>
|
||||
<td>
|
||||
{{system.mem_ram_percent| sc_filter_percentf2}}
|
||||
{{system.mem_ram_kbyte * system.mem_ram_percent| sc_filter_filesize_k2}} / {{system.mem_ram_kbyte| sc_filter_filesize_k2}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Load</td>
|
||||
<td>{{system.load_1m| sc_filter_number}} / {{system.load_5m| sc_filter_number}} / {{system.load_15m| sc_filter_number}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span3">
|
||||
<table class="table table-bordered" ng-if="system">
|
||||
<tr>
|
||||
<th colspan="2">IO Load</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Internet</td>
|
||||
<td>
|
||||
<span title="Internet Inbound Bandwidth">{{kbps.in.sys| sc_filter_bitrate_k2}}</span> /
|
||||
<span title="Internet Outbound Bandwidth">{{kbps.out.sys| sc_filter_bitrate_k2}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Intranet</td>
|
||||
<td>
|
||||
<span title="Intranet Inbound Bandwidth">{{kbps.in.inner| sc_filter_bitrate_k2}}</span> /
|
||||
<span title="Intranet Outbound Bandwidth">{{kbps.out.inner| sc_filter_bitrate_k2}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="Connections">Conns</td>
|
||||
<td>
|
||||
<span title="System">{{system.conn_sys}}</span>
|
||||
<span title="System ESTABLISHED">{{system.conn_sys_et}}</span>
|
||||
<span title="System TIME_WAIT">{{system.conn_sys_tw}}</span>
|
||||
<span title="System UDP Bind Ports">{{system.conn_sys_udp}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Disk</td>
|
||||
<td>
|
||||
<span title="IO Busy">{{system.disk_busy_percent| sc_filter_percentf2}}</span>
|
||||
<span title="Disk Read in Bps">{{system.disk_read_KBps| sc_filter_filerate_k2}}</span>
|
||||
<span title="Disk Write in Bps">{{system.disk_write_KBps| sc_filter_filerate_k2}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="span2">
|
||||
<table class="table table-bordered" ng-if="system">
|
||||
<tr>
|
||||
<th colspan="2">Others</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="System CPU Usage">CPU</td>
|
||||
<td>
|
||||
<span title="Number of CPU">{{system.cpus}}</span> /
|
||||
<span title="Online CPUs">{{system.cpus_online}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="PID of SRS">PID</td>
|
||||
<td>{{server.pid}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="PID of SRS's Parent">PPID</td>
|
||||
<td>{{server.ppid}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td title="Whether SRS API Ready?">Ready</td>
|
||||
<td>{{global.ok| sc_filter_yesno}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
虚拟主机-{{vhost.id}}
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse in">
|
||||
<div class="accordion-inner">
|
||||
<p>ID: {{vhost.id}}</p>
|
||||
<p>Name: {{vhost.name}}</p>
|
||||
<p>Enabled: {{vhost.enabled| sc_filter_enabled}}</p>
|
||||
<p>Streams: {{vhost.streams}}人</p>
|
||||
<p>Clients: {{vhost.clients}}人</p>
|
||||
<p>Recv: {{vhost.kbps.recv_30s| sc_filter_bitrate_k}}</p>
|
||||
<p>Send: {{vhost.kbps.send_30s| sc_filter_bitrate_k}}</p>
|
||||
<p>HLS: {{vhost.hls.enabled| sc_filter_enabled}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
Vhost-{{vhost.id}}
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse in">
|
||||
<div class="accordion-inner">
|
||||
<p>ID: {{vhost.id}}</p>
|
||||
<p>Name: {{vhost.name}}</p>
|
||||
<p>Enabled: {{vhost.enabled| sc_filter_enabled}}</p>
|
||||
<p>Streams: {{vhost.streams}} Clients</p>
|
||||
<p>Clients: {{vhost.clients}} Clients</p>
|
||||
<p>Recv: {{vhost.kbps.recv_30s| sc_filter_bitrate_k}}</p>
|
||||
<p>Send: {{vhost.kbps.send_30s| sc_filter_bitrate_k}}</p>
|
||||
<p>HLS: {{vhost.hls.enabled| sc_filter_enabled}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
虚拟主机(Vhosts)列表
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>主机名称</th>
|
||||
<th>状态</th>
|
||||
<th>在线流</th>
|
||||
<th>在线人数</th>
|
||||
<th>入口带宽</th>
|
||||
<th>出口带宽</th>
|
||||
<th>HLS</th>
|
||||
</tr>
|
||||
<tr ng-repeat="vhost in vhosts">
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + vhost.id)">{{vhost.id}}</a></td>
|
||||
<td>{{vhost.name}}</td>
|
||||
<td>{{vhost.enabled| sc_filter_enabled}}</td>
|
||||
<td>{{vhost.streams}}个</td>
|
||||
<td>{{vhost.clients}}人</td>
|
||||
<td>{{vhost.kbps.recv_30s| sc_filter_bitrate_k}}</td>
|
||||
<td>{{vhost.kbps.send_30s| sc_filter_bitrate_k}}</td>
|
||||
<td>{{vhost.hls.enabled| sc_filter_enabled}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
<div>
|
||||
<div class="accordion">
|
||||
<div class="accordion-group">
|
||||
<div class="accordion-heading" sc-collapse="in">
|
||||
<a class="accordion-toggle" href="javascript:void(0)">
|
||||
System Vhosts
|
||||
</a>
|
||||
</div>
|
||||
<div id="collapseOne" class="accordion-body collapse">
|
||||
<div class="accordion-inner">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th>Streams</th>
|
||||
<th>Clients</th>
|
||||
<th>Inbound</th>
|
||||
<th>Outbound</th>
|
||||
<th>HLS</th>
|
||||
</tr>
|
||||
<tr ng-repeat="vhost in vhosts">
|
||||
<td><a href="javascript:void(0)" ng-click="gogogo('/vhosts/' + vhost.id)">{{vhost.id}}</a></td>
|
||||
<td>{{vhost.name}}</td>
|
||||
<td>{{vhost.enabled| sc_filter_enabled}}</td>
|
||||
<td>{{vhost.streams}}个</td>
|
||||
<td>{{vhost.clients}}人</td>
|
||||
<td>{{vhost.kbps.recv_30s| sc_filter_bitrate_k}}</td>
|
||||
<td>{{vhost.kbps.send_30s| sc_filter_bitrate_k}}</td>
|
||||
<td>{{vhost.hls.enabled| sc_filter_enabled}}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user