mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Detect whether flash enabled for srs-player. 3.0.73
This commit is contained in:
parent
33c7f6d0e4
commit
b0afc00733
5 changed files with 250 additions and 353 deletions
|
@ -145,6 +145,7 @@ For previous versions, please read:
|
||||||
|
|
||||||
## V3 changes
|
## V3 changes
|
||||||
|
|
||||||
|
* v3.0, 2019-12-18, Detect whether flash enabled for srs-player. 3.0.73
|
||||||
* v3.0, 2019-12-17, Fix HTTP CORS bug when sending response for OPTIONS. 3.0.72
|
* v3.0, 2019-12-17, Fix HTTP CORS bug when sending response for OPTIONS. 3.0.72
|
||||||
* v3.0, 2019-12-17, Enhance HTTP response write for final_request.
|
* v3.0, 2019-12-17, Enhance HTTP response write for final_request.
|
||||||
* v3.0, 2019-12-17, Refactor HTTP stream to disconnect client when unpublish.
|
* v3.0, 2019-12-17, Refactor HTTP stream to disconnect client when unpublish.
|
||||||
|
|
|
@ -80,7 +80,7 @@ function build_default_rtmp_url() {
|
||||||
var port = (query.port == undefined)? schema=="http"?80:1935:query.port;
|
var port = (query.port == undefined)? schema=="http"?80:1935:query.port;
|
||||||
var vhost = (query.vhost == undefined)? window.location.hostname:query.vhost;
|
var vhost = (query.vhost == undefined)? window.location.hostname:query.vhost;
|
||||||
var app = (query.app == undefined)? "live":query.app;
|
var app = (query.app == undefined)? "live":query.app;
|
||||||
var stream = (query.stream == undefined)? "demo":query.stream;
|
var stream = (query.stream == undefined)? "livestream":query.stream;
|
||||||
|
|
||||||
var queries = [];
|
var queries = [];
|
||||||
if (server != vhost && vhost != "__defaultVhost__") {
|
if (server != vhost && vhost != "__defaultVhost__") {
|
||||||
|
|
|
@ -118,6 +118,9 @@ SrsPlayer.prototype.start = function(url) {
|
||||||
flashvars, params, attributes,
|
flashvars, params, attributes,
|
||||||
function(callbackObj){
|
function(callbackObj){
|
||||||
self.callbackObj = callbackObj;
|
self.callbackObj = callbackObj;
|
||||||
|
if (!callbackObj.success) {
|
||||||
|
console.error('Initialize player failed:'); console.error(callbackObj);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -45,369 +45,220 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="alert alert-info fade in">
|
<div name="detect_flash">
|
||||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
<div id="main_flash_alert" class="alert alert-danger fade in hide">
|
||||||
<strong><span>Usage:</span></strong> <span>输入RTMP/HTTP地址后点击“播放视频”即可播放视频</span>
|
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||||
</div>
|
<strong><span>Usage:</span></strong>
|
||||||
<div class="form-inline">
|
<span>
|
||||||
URL:
|
请点击下面的图标,启用Flash
|
||||||
<input type="text" id="txt_url" class="input-xxlarge" value="">
|
</span>
|
||||||
<button class="btn btn-primary" id="btn_play">播放视频</button>
|
|
||||||
<button class="btn" id="btn_generate_link">生成链接</button>
|
|
||||||
</div>
|
|
||||||
<div id="link_modal" class="modal hide fade">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h3><a href="https://github.com/ossrs/srs">SRS Link Generator</a></h3>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div id="main_flash_hdr" class="hide">
|
||||||
<div class="form-horizontal">
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="link_server">服务器地址</label>
|
|
||||||
<div class="controls">
|
|
||||||
<span id="link_server" class="span4 uneditable-input"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="link_port">服务器端口</label>
|
|
||||||
<div class="controls">
|
|
||||||
<span id="link_port" class="span2 uneditable-input"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="link_vhost">RTMP Vhost</label>
|
|
||||||
<div class="controls">
|
|
||||||
<span id="link_vhost" class="span4 uneditable-input"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="link_app">RTMP App</label>
|
|
||||||
<div class="controls">
|
|
||||||
<span id="link_app" class="span4 uneditable-input"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="link_stream">RTMP Stream</label>
|
|
||||||
<div class="controls">
|
|
||||||
<span id="link_stream" class="span4 uneditable-input"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="link_rtmp">RTMP地址</label>
|
|
||||||
<div class="controls">
|
|
||||||
<span id="link_rtmp" class="span4 uneditable-input"></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="control-group">
|
|
||||||
<label class="control-label" for="link_url">播放链接地址</label>
|
|
||||||
<div class="controls">
|
|
||||||
<div style="margin-top:5px;"><a href="#" id="link_url" target="_blank">请右键拷贝此链接地址.</a></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer"></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="container">
|
|
||||||
<hr/>
|
<div id="main_content" class="hide">
|
||||||
<span>
|
<div class="alert alert-info fade in">
|
||||||
注意:必须按照<a href="https://github.com/ossrs/srs/wiki/SampleDemo">SRS DEMO</a>
|
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||||
启动和设置服务器,下面所有的链接才能观看。
|
<strong><span>Usage:</span></strong> <span>输入RTMP/HTTP-FLV/HLS地址后点击“播放视频”即可播放视频</span>
|
||||||
</span>
|
</div>
|
||||||
<div class="accordion" id="main_accordion">
|
<div class="form-inline">
|
||||||
<div class="accordion-group">
|
URL:
|
||||||
<div class="accordion-heading">
|
<input type="text" id="txt_url" class="input-xxlarge" value="">
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse1">
|
<button class="btn btn-primary" id="btn_play">播放视频</button>
|
||||||
<strong>[1] SRS示例播放流: 原始流</strong>
|
<button class="btn" id="btn_generate_link">生成链接</button>
|
||||||
</span>
|
<p></p>
|
||||||
</div>
|
</div>
|
||||||
<div id="collapse1" class="accordion-body collapse">
|
<div id="link_modal" class="modal hide fade">
|
||||||
<div class="accordion-inner">
|
<div class="modal-header">
|
||||||
<a href="#" id="srs_publish">rtmp://demo.srs.com/live/livestream</a> <br/>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
<span>用户推送过来的唯一一路流,经过服务器的多种变换和再转发。</span>
|
<h3><a href="https://github.com/ossrs/srs">SRS Link Generator</a></h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="link_server">服务器地址</label>
|
||||||
|
<div class="controls">
|
||||||
|
<span id="link_server" class="span4 uneditable-input"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="link_port">服务器端口</label>
|
||||||
|
<div class="controls">
|
||||||
|
<span id="link_port" class="span2 uneditable-input"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="link_vhost">RTMP Vhost</label>
|
||||||
|
<div class="controls">
|
||||||
|
<span id="link_vhost" class="span4 uneditable-input"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="link_app">RTMP App</label>
|
||||||
|
<div class="controls">
|
||||||
|
<span id="link_app" class="span4 uneditable-input"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="link_stream">RTMP Stream</label>
|
||||||
|
<div class="controls">
|
||||||
|
<span id="link_stream" class="span4 uneditable-input"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="link_rtmp">RTMP地址</label>
|
||||||
|
<div class="controls">
|
||||||
|
<span id="link_rtmp" class="span4 uneditable-input"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="link_url">播放链接地址</label>
|
||||||
|
<div class="controls">
|
||||||
|
<div style="margin-top:5px;"><a href="#" id="link_url" target="_blank">请右键拷贝此链接地址.</a></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="accordion-group">
|
<div class="modal-footer"></div>
|
||||||
<div class="accordion-heading">
|
</div>
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse10">
|
<div id="main_modal" class="modal hide fade">
|
||||||
<strong>[2] SRS示例播放流: 原始流HLS</strong>
|
<div class="modal-header">
|
||||||
</span>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
</div>
|
<h3><a href="https://github.com/ossrs/srs">SrsPlayer</a></h3>
|
||||||
<div id="collapse10" class="accordion-body collapse">
|
</div>
|
||||||
<div class="accordion-inner">
|
<div class="modal-body">
|
||||||
<a href="#" id="srs_publish_hls" target="_blank">http://demo.srs.com/live/livestream.m3u8</a> <br/>
|
<div id="player"></div>
|
||||||
<span>对用户的流进行HLS切片(若编码为非H264/AAC,HLS流会自动禁用)。</span>
|
<div class="progress progress-striped active" id="pb_buffer_bg">
|
||||||
</div>
|
<div class="bar" style="width: 0%;" id="pb_buffer"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="accordion-group">
|
<div class="modal-footer" id="my_modal_footer">
|
||||||
<div class="accordion-heading">
|
<div>
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse2">
|
<div class="btn-group dropup">
|
||||||
<strong>[3] SRS示例播放流: 转码配置LD流</strong>
|
<button class="btn dropdown-toggle" data-toggle="dropdown">
|
||||||
</span>
|
全屏比例大小<span class="caret"></span>
|
||||||
</div>
|
</button>
|
||||||
<div id="collapse2" class="accordion-body collapse">
|
<ul class="dropdown-menu">
|
||||||
<div class="accordion-inner">
|
<li><a id="btn_fs_size_screen_100" href="#">屏幕大小(100%)</a></li>
|
||||||
<a href="#" id="srs_publish_ld">rtmp://demo.srs.com/live/livestream_ld</a> <br/>
|
<li><a id="btn_fs_size_screen_75" href="#">屏幕大小(75%)</a></li>
|
||||||
<span>对原始流加了<a href="http://ffmpeg.org/ffmpeg-filters.html#overlay">FFMPEG图片水印</a></span>
|
<li><a id="btn_fs_size_screen_50" href="#">屏幕大小(50%)</a></li>
|
||||||
|
<li><a id="btn_fs_size_video_100" href="#">视频大小(100%)</a></li>
|
||||||
|
<li><a id="btn_fs_size_video_75" href="#">视频大小(75%)</a></li>
|
||||||
|
<li><a id="btn_fs_size_video_50" href="#">视频大小(50%)</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group dropup">
|
||||||
|
<button class="btn dropdown-toggle" data-toggle="dropdown">显示比例<span class="caret"></span></button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a id="btn_dar_original" href="#">视频原始比例</a></li>
|
||||||
|
<li><a id="btn_dar_21_9" href="#">宽屏影院(21:9)</a></li>
|
||||||
|
<li><a id="btn_dar_16_9" href="#">宽屏电视(16:9)</a></li>
|
||||||
|
<li><a id="btn_dar_4_3" href="#">窄屏(4:3)</a></li>
|
||||||
|
<li><a id="btn_dar_fill" href="#">填充(容器比例)</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group dropup">
|
||||||
|
<button class="btn dropdown-toggle" data-toggle="dropdown">缓冲区大小<span class="caret"></span></button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a id="btn_bt_0_1" href="#">0.1秒(实时)</a></li>
|
||||||
|
<li><a id="btn_bt_0_2" href="#">0.2秒(实时)</a></li>
|
||||||
|
<li><a id="btn_bt_0_3" href="#">0.3秒(实时)</a></li>
|
||||||
|
<li><a id="btn_bt_0_5" href="#">0.5秒(实时)</a></li>
|
||||||
|
<li><a id="btn_bt_0_8" href="#">0.8秒(会议)</a></li>
|
||||||
|
<li><a id="btn_bt_1_0" href="#">1秒(低延迟)</a></li>
|
||||||
|
<li><a id="btn_bt_2_0" href="#">2秒(较低延时)</a></li>
|
||||||
|
<li><a id="btn_bt_3_0" href="#">3秒(流畅播放)</a></li>
|
||||||
|
<li><a id="btn_bt_4_0" href="#">4秒(流畅播放)</a></li>
|
||||||
|
<li><a id="btn_bt_5_0" href="#">5秒(网速较低)</a></li>
|
||||||
|
<li><a id="btn_bt_6_0" href="#">6秒(网速较低)</a></li>
|
||||||
|
<li><a id="btn_bt_8_0" href="#">8秒(网速较低)</a></li>
|
||||||
|
<li><a id="btn_bt_10_0" href="#">10秒(无所谓延迟)</a></li>
|
||||||
|
<li><a id="btn_bt_15_0" href="#">15秒(无所谓延迟)</a></li>
|
||||||
|
<li><a id="btn_bt_20_0" href="#">20秒(无所谓延迟)</a></li>
|
||||||
|
<li><a id="btn_bt_30_0" href="#">30秒(流畅第一)</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group dropup">
|
||||||
|
<button class="btn dropdown-toggle" data-toggle="dropdown">最大缓冲区<span class="caret"></span></button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a id="btn_mbt_0_6" href="#">0.6秒(实时)</a></li>
|
||||||
|
<li><a id="btn_mbt_0_9" href="#">0.9秒(实时)</a></li>
|
||||||
|
<li><a id="btn_mbt_1_2" href="#">1.2秒(实时)</a></li>
|
||||||
|
<li><a id="btn_mbt_1_5" href="#">1.5秒(实时)</a></li>
|
||||||
|
<li><a id="btn_mbt_2_4" href="#">2.4秒(会议)</a></li>
|
||||||
|
<li><a id="btn_mbt_3_0" href="#">3秒(低延迟)</a></li>
|
||||||
|
<li><a id="btn_mbt_6_0" href="#">6秒(较低延时)</a></li>
|
||||||
|
<li><a id="btn_mbt_9_0" href="#">9秒(流畅播放)</a></li>
|
||||||
|
<li><a id="btn_mbt_12_0" href="#">12秒(流畅播放)</a></li>
|
||||||
|
<li><a id="btn_mbt_15_0" href="#">15秒(网速较低)</a></li>
|
||||||
|
<li><a id="btn_mbt_18_0" href="#">18秒(网速较低)</a></li>
|
||||||
|
<li><a id="btn_mbt_24_0" href="#">24秒(网速较低)</a></li>
|
||||||
|
<li><a id="btn_mbt_30_0" href="#">30秒(无所谓延迟)</a></li>
|
||||||
|
<li><a id="btn_mbt_45_0" href="#">45秒(无所谓延迟)</a></li>
|
||||||
|
<li><a id="btn_mbt_60_0" href="#">60秒(无所谓延迟)</a></li>
|
||||||
|
<li><a id="btn_mbt_90_0" href="#">90秒(流畅第一)</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group dropup">
|
||||||
|
<a id="btn_fullscreen" class="btn">全屏</a>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group dropup">
|
||||||
|
<button id="btn_pause" class="btn">暂停播放</button>
|
||||||
|
<button id="btn_resume" class="btn hide">继续播放</button>
|
||||||
|
</div>
|
||||||
|
<div class="btn-group dropup">
|
||||||
|
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">关闭播放器</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="hide" id="fullscreen_tips">
|
||||||
<div class="accordion-group">
|
请<font color="red">点击视频</font>进入全屏模式~<br/>
|
||||||
<div class="accordion-heading">
|
由于安全原因,Flash全屏无法使用JS触发
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse11">
|
|
||||||
<strong>[4] SRS示例播放流: 转码配置LD流HLS</strong>
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="collapse11" class="accordion-body collapse">
|
<div>
|
||||||
<div class="accordion-inner">
|
<div class="input-prepend div_play_time" title="BufferLength/BufferTime/MaxBufferTime">
|
||||||
<a href="#" id="srs_publish_ld_hls" target="_blank">http://demo.srs.com/live/livestream_ld.m3u8</a> <br/>
|
<span class="add-on">@B</span>
|
||||||
<span>对转码配置LD流进行HLS切片。</span>
|
<input class="span2" style="width:80px" id="txt_buffer" type="text" placeholder="0/0/0s">
|
||||||
|
</div>
|
||||||
|
<div class="input-prepend div_play_time" title="视频的播放流畅度">
|
||||||
|
<span class="add-on">@F</span>
|
||||||
|
<input class="span2" style="width:57px" id="txt_fluency" type="text" placeholder="100%">
|
||||||
|
</div>
|
||||||
|
<div class="input-prepend div_play_time" title="视频总共卡顿次数">
|
||||||
|
<span class="add-on">@E</span>
|
||||||
|
<input class="span2" style="width:45px" id="txt_empty_count" type="text" placeholder="0">
|
||||||
|
</div>
|
||||||
|
<div class="input-prepend div_play_time" title="视频当前的帧率FPS">
|
||||||
|
<span class="add-on">@F</span>
|
||||||
|
<input class="span2" style="width:55px" id="txt_fps" type="text" placeholder="fps">
|
||||||
|
</div>
|
||||||
|
<div class="input-prepend div_play_time" title="视频当前的码率(视频+音频),单位:Kbps">
|
||||||
|
<span class="add-on">@B</span>
|
||||||
|
<input class="span2" style="width:55px" id="txt_bitrate" type="text" placeholder="kbps">
|
||||||
|
</div>
|
||||||
|
<div class="input-prepend div_play_time" title="播放时长,格式:天 时:分:秒">
|
||||||
|
<span class="add-on">@T</span>
|
||||||
|
<input class="span2" style="width:85px" id="txt_time" type="text" placeholder="天 时:分:秒">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div style="margin-top:-12px;">
|
||||||
<div class="accordion-group">
|
<span id="debug_info"></span>
|
||||||
<div class="accordion-heading">
|
URL: <a href="#" id="player_url"></a>
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse3">
|
<div class="input-prepend div_play_time" title="当前时间:年-月-日 时:分:秒">
|
||||||
<strong>[5] SRS示例播放流: 转码配置SD流</strong>
|
<span class="add-on">@N</span>
|
||||||
</span>
|
<input class="span2" style="width:135px" id="player_clock" type="text" placeholder="年-月-日 时:分:秒">
|
||||||
</div>
|
|
||||||
<div id="collapse3" class="accordion-body collapse">
|
|
||||||
<div class="accordion-inner">
|
|
||||||
<a href="#" id="srs_publish_sd">rtmp://demo.srs.com/live/livestream_sd</a> <br/>
|
|
||||||
<span>对原始流应用了<a href="http://ffmpeg.org/ffmpeg-filters.html#Filtering-Introduction">FFMPEG翻转滤镜</a></span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div>
|
||||||
<div class="accordion-group">
|
<div class="input-prepend" title="首播时间,点播放到开始播放的时间,秒">
|
||||||
<div class="accordion-heading">
|
<span class="add-on">@PST</span>
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse12">
|
<input class="span1" style="width:60px" id="txt_pst" type="text" placeholder="N秒">
|
||||||
<strong>[6] SRS示例播放流: 转码配置SD流HLS</strong>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="collapse12" class="accordion-body collapse">
|
|
||||||
<div class="accordion-inner">
|
|
||||||
<a href="#" id="srs_publish_sd_hls" target="_blank">http://demo.srs.com/live/livestream_sd.m3u8</a> <br/>
|
|
||||||
<span>对转码配置SD流进行HLS切片。</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="accordion-group">
|
|
||||||
<div class="accordion-heading">
|
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse4">
|
|
||||||
<strong>[7] SRS示例播放流: 转发原始流</strong>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="collapse4" class="accordion-body collapse">
|
|
||||||
<div class="accordion-inner">
|
|
||||||
<a href="#" id="srs_publish_fw">rtmp://demo.srs.com:19350/live/livestream</a> <br/>
|
|
||||||
<span>将用户推送的流转发到另外的vhost或服务器,做热备用。</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="accordion-group">
|
|
||||||
<div class="accordion-heading">
|
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse13">
|
|
||||||
<strong>[8] SRS示例播放流: 转发原始流HLS</strong>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="collapse13" class="accordion-body collapse">
|
|
||||||
<div class="accordion-inner">
|
|
||||||
<a href="#" id="srs_publish_fw_hls" target="_blank">http://demo.srs.com/forward/live/livestream.m3u8</a> <br/>
|
|
||||||
<span>对转发原始流进行HLS切片(若编码为非H264/AAC,HLS流会自动禁用)。</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="accordion-group">
|
|
||||||
<div class="accordion-heading">
|
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse5">
|
|
||||||
<strong>[9] SRS示例播放流: 转发转码配置LD流</strong>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="collapse5" class="accordion-body collapse">
|
|
||||||
<div class="accordion-inner">
|
|
||||||
<a href="#" id="srs_publish_fw_ld">rtmp://demo.srs.com:19350/live/livestream_ld</a> <br/>
|
|
||||||
<span>FFMPEG加水印后的流也会自动转发。</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="accordion-group">
|
|
||||||
<div class="accordion-heading">
|
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse14">
|
|
||||||
<strong>[10] SRS示例播放流: 转发转码配置LD流HLS</strong>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="collapse14" class="accordion-body collapse">
|
|
||||||
<div class="accordion-inner">
|
|
||||||
<a href="#" id="srs_publish_fw_ld_hls" target="_blank">http://demo.srs.com/forward/live/livestream_ld.m3u8</a> <br/>
|
|
||||||
<span>对转发转码配置LD流进行HLS切片,所有转发的流会自动支持HLS。</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="accordion-group">
|
|
||||||
<div class="accordion-heading">
|
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse6">
|
|
||||||
<strong>[11] SRS示例播放流: 转发转码配置SD流</strong>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="collapse6" class="accordion-body collapse">
|
|
||||||
<div class="accordion-inner">
|
|
||||||
<a href="#" id="srs_publish_fw_sd">rtmp://demo.srs.com:19350/live/livestream_sd</a> <br/>
|
|
||||||
<span>FFMPEG翻转后的流也会自动转发。</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="accordion-group">
|
|
||||||
<div class="accordion-heading">
|
|
||||||
<span class="accordion-toggle" data-toggle="collapse" data-parent="#main_accordion" href="#collapse15">
|
|
||||||
<strong>[12] SRS示例播放流: 转发转码配置SD流HLS</strong>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div id="collapse15" class="accordion-body collapse">
|
|
||||||
<div class="accordion-inner">
|
|
||||||
<a href="#" id="srs_publish_fw_sd_hls" target="_blank">http://demo.srs.com/forward/live/livestream_sd.m3u8</a> <br/>
|
|
||||||
<span>对转发转码配置SD流进行HLS切片,所有转发的流会自动支持HLS。</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="main_modal" class="modal hide fade">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h3><a href="https://github.com/ossrs/srs">SrsPlayer</a></h3>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<div id="player"></div>
|
|
||||||
<div class="progress progress-striped active" id="pb_buffer_bg">
|
|
||||||
<div class="bar" style="width: 0%;" id="pb_buffer"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer" id="my_modal_footer">
|
|
||||||
<div>
|
|
||||||
<div class="btn-group dropup">
|
|
||||||
<button class="btn dropdown-toggle" data-toggle="dropdown">
|
|
||||||
全屏比例大小<span class="caret"></span>
|
|
||||||
</button>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a id="btn_fs_size_screen_100" href="#">屏幕大小(100%)</a></li>
|
|
||||||
<li><a id="btn_fs_size_screen_75" href="#">屏幕大小(75%)</a></li>
|
|
||||||
<li><a id="btn_fs_size_screen_50" href="#">屏幕大小(50%)</a></li>
|
|
||||||
<li><a id="btn_fs_size_video_100" href="#">视频大小(100%)</a></li>
|
|
||||||
<li><a id="btn_fs_size_video_75" href="#">视频大小(75%)</a></li>
|
|
||||||
<li><a id="btn_fs_size_video_50" href="#">视频大小(50%)</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group dropup">
|
|
||||||
<button class="btn dropdown-toggle" data-toggle="dropdown">显示比例<span class="caret"></span></button>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a id="btn_dar_original" href="#">视频原始比例</a></li>
|
|
||||||
<li><a id="btn_dar_21_9" href="#">宽屏影院(21:9)</a></li>
|
|
||||||
<li><a id="btn_dar_16_9" href="#">宽屏电视(16:9)</a></li>
|
|
||||||
<li><a id="btn_dar_4_3" href="#">窄屏(4:3)</a></li>
|
|
||||||
<li><a id="btn_dar_fill" href="#">填充(容器比例)</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group dropup">
|
|
||||||
<button class="btn dropdown-toggle" data-toggle="dropdown">缓冲区大小<span class="caret"></span></button>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a id="btn_bt_0_1" href="#">0.1秒(实时)</a></li>
|
|
||||||
<li><a id="btn_bt_0_2" href="#">0.2秒(实时)</a></li>
|
|
||||||
<li><a id="btn_bt_0_3" href="#">0.3秒(实时)</a></li>
|
|
||||||
<li><a id="btn_bt_0_5" href="#">0.5秒(实时)</a></li>
|
|
||||||
<li><a id="btn_bt_0_8" href="#">0.8秒(会议)</a></li>
|
|
||||||
<li><a id="btn_bt_1_0" href="#">1秒(低延迟)</a></li>
|
|
||||||
<li><a id="btn_bt_2_0" href="#">2秒(较低延时)</a></li>
|
|
||||||
<li><a id="btn_bt_3_0" href="#">3秒(流畅播放)</a></li>
|
|
||||||
<li><a id="btn_bt_4_0" href="#">4秒(流畅播放)</a></li>
|
|
||||||
<li><a id="btn_bt_5_0" href="#">5秒(网速较低)</a></li>
|
|
||||||
<li><a id="btn_bt_6_0" href="#">6秒(网速较低)</a></li>
|
|
||||||
<li><a id="btn_bt_8_0" href="#">8秒(网速较低)</a></li>
|
|
||||||
<li><a id="btn_bt_10_0" href="#">10秒(无所谓延迟)</a></li>
|
|
||||||
<li><a id="btn_bt_15_0" href="#">15秒(无所谓延迟)</a></li>
|
|
||||||
<li><a id="btn_bt_20_0" href="#">20秒(无所谓延迟)</a></li>
|
|
||||||
<li><a id="btn_bt_30_0" href="#">30秒(流畅第一)</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group dropup">
|
|
||||||
<button class="btn dropdown-toggle" data-toggle="dropdown">最大缓冲区<span class="caret"></span></button>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a id="btn_mbt_0_6" href="#">0.6秒(实时)</a></li>
|
|
||||||
<li><a id="btn_mbt_0_9" href="#">0.9秒(实时)</a></li>
|
|
||||||
<li><a id="btn_mbt_1_2" href="#">1.2秒(实时)</a></li>
|
|
||||||
<li><a id="btn_mbt_1_5" href="#">1.5秒(实时)</a></li>
|
|
||||||
<li><a id="btn_mbt_2_4" href="#">2.4秒(会议)</a></li>
|
|
||||||
<li><a id="btn_mbt_3_0" href="#">3秒(低延迟)</a></li>
|
|
||||||
<li><a id="btn_mbt_6_0" href="#">6秒(较低延时)</a></li>
|
|
||||||
<li><a id="btn_mbt_9_0" href="#">9秒(流畅播放)</a></li>
|
|
||||||
<li><a id="btn_mbt_12_0" href="#">12秒(流畅播放)</a></li>
|
|
||||||
<li><a id="btn_mbt_15_0" href="#">15秒(网速较低)</a></li>
|
|
||||||
<li><a id="btn_mbt_18_0" href="#">18秒(网速较低)</a></li>
|
|
||||||
<li><a id="btn_mbt_24_0" href="#">24秒(网速较低)</a></li>
|
|
||||||
<li><a id="btn_mbt_30_0" href="#">30秒(无所谓延迟)</a></li>
|
|
||||||
<li><a id="btn_mbt_45_0" href="#">45秒(无所谓延迟)</a></li>
|
|
||||||
<li><a id="btn_mbt_60_0" href="#">60秒(无所谓延迟)</a></li>
|
|
||||||
<li><a id="btn_mbt_90_0" href="#">90秒(流畅第一)</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group dropup">
|
|
||||||
<a id="btn_fullscreen" class="btn">全屏</a>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group dropup">
|
|
||||||
<button id="btn_pause" class="btn">暂停播放</button>
|
|
||||||
<button id="btn_resume" class="btn hide">继续播放</button>
|
|
||||||
</div>
|
|
||||||
<div class="btn-group dropup">
|
|
||||||
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">关闭播放器</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="hide" id="fullscreen_tips">
|
|
||||||
请<font color="red">点击视频</font>进入全屏模式~<br/>
|
|
||||||
由于安全原因,Flash全屏无法使用JS触发
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div class="input-prepend div_play_time" title="BufferLength/BufferTime/MaxBufferTime">
|
|
||||||
<span class="add-on">@B</span>
|
|
||||||
<input class="span2" style="width:80px" id="txt_buffer" type="text" placeholder="0/0/0s">
|
|
||||||
</div>
|
|
||||||
<div class="input-prepend div_play_time" title="视频的播放流畅度">
|
|
||||||
<span class="add-on">@F</span>
|
|
||||||
<input class="span2" style="width:57px" id="txt_fluency" type="text" placeholder="100%">
|
|
||||||
</div>
|
|
||||||
<div class="input-prepend div_play_time" title="视频总共卡顿次数">
|
|
||||||
<span class="add-on">@E</span>
|
|
||||||
<input class="span2" style="width:45px" id="txt_empty_count" type="text" placeholder="0">
|
|
||||||
</div>
|
|
||||||
<div class="input-prepend div_play_time" title="视频当前的帧率FPS">
|
|
||||||
<span class="add-on">@F</span>
|
|
||||||
<input class="span2" style="width:55px" id="txt_fps" type="text" placeholder="fps">
|
|
||||||
</div>
|
|
||||||
<div class="input-prepend div_play_time" title="视频当前的码率(视频+音频),单位:Kbps">
|
|
||||||
<span class="add-on">@B</span>
|
|
||||||
<input class="span2" style="width:55px" id="txt_bitrate" type="text" placeholder="kbps">
|
|
||||||
</div>
|
|
||||||
<div class="input-prepend div_play_time" title="播放时长,格式:天 时:分:秒">
|
|
||||||
<span class="add-on">@T</span>
|
|
||||||
<input class="span2" style="width:85px" id="txt_time" type="text" placeholder="天 时:分:秒">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style="margin-top:-12px;">
|
|
||||||
<span id="debug_info"></span>
|
|
||||||
URL: <a href="#" id="player_url"></a>
|
|
||||||
<div class="input-prepend div_play_time" title="当前时间:年-月-日 时:分:秒">
|
|
||||||
<span class="add-on">@N</span>
|
|
||||||
<input class="span2" style="width:135px" id="player_clock" type="text" placeholder="年-月-日 时:分:秒">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div class="input-prepend" title="首播时间,点播放到开始播放的时间,秒">
|
|
||||||
<span class="add-on">@PST</span>
|
|
||||||
<input class="span1" style="width:60px" id="txt_pst" type="text" placeholder="N秒">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
<footer>
|
||||||
<p><a href="https://github.com/ossrs/srs">SRS Team © 2013</a></p>
|
<p><a href="https://github.com/ossrs/srs">SRS Team © 2013</a></p>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -423,6 +274,48 @@
|
||||||
<script type="text/javascript" src="js/srs.publisher.js"></script>
|
<script type="text/javascript" src="js/srs.publisher.js"></script>
|
||||||
<script type="text/javascript" src="js/srs.utility.js"></script>
|
<script type="text/javascript" src="js/srs.utility.js"></script>
|
||||||
<script type="text/javascript" src="js/winlin.utility.js"></script>
|
<script type="text/javascript" src="js/winlin.utility.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var __on_flash_ready = null;
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
// 探测Flash是否正常启用。
|
||||||
|
$('#main_flash_hdr').html(
|
||||||
|
'\
|
||||||
|
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="100%"> \
|
||||||
|
<param name="movie" value="srs_player/release/srs_player.swf"> \
|
||||||
|
<param name="quality" value="autohigh"> \
|
||||||
|
<param name="swliveconnect" value="true"> \
|
||||||
|
<param name="allowScriptAccess" value="always"> \
|
||||||
|
<param name="bgcolor" value="#0"> \
|
||||||
|
<param name="allowFullScreen" value="true"> \
|
||||||
|
<param name="wmode" value="opaque"> \
|
||||||
|
<param name="FlashVars" value="log=1"> \
|
||||||
|
<param name="flashvars" value="id=1&on_player_ready=__on_flash_ready"> \
|
||||||
|
<embed src="srs_player/release/srs_player.swf" width="100%" height="100%" \
|
||||||
|
quality="autohigh" bgcolor="#0" align="middle" allowfullscreen="true" allowscriptaccess="always" \
|
||||||
|
type="application/x-shockwave-flash" swliveconnect="true" wmode="opaque" \
|
||||||
|
flashvars="id=1&on_player_ready=__on_flash_ready" \
|
||||||
|
pluginspage="http://www.macromedia.com/go/getflashplayer"> \
|
||||||
|
</object> \
|
||||||
|
'
|
||||||
|
);
|
||||||
|
$('#main_flash_hdr').show();
|
||||||
|
|
||||||
|
var showFlashHdr = setTimeout(function(){
|
||||||
|
$('#main_flash_alert').show();
|
||||||
|
}, 300);
|
||||||
|
|
||||||
|
__on_flash_ready = function (id) {
|
||||||
|
clearTimeout(showFlashHdr);
|
||||||
|
|
||||||
|
$('#main_flash_alert').hide();
|
||||||
|
$('#main_flash_hdr').hide();
|
||||||
|
$('#main_content').show();
|
||||||
|
|
||||||
|
autoLoadPage();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
</script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var srs_player = null;
|
var srs_player = null;
|
||||||
var url = null;
|
var url = null;
|
||||||
|
@ -504,7 +397,7 @@
|
||||||
* http://localhost:8088/players/srs_player.html?vhost=ossrs.net&app=live&stream=livestream&server=ossrs.net&port=1935&autostart=true&schema=rtmp
|
* http://localhost:8088/players/srs_player.html?vhost=ossrs.net&app=live&stream=livestream&server=ossrs.net&port=1935&autostart=true&schema=rtmp
|
||||||
* http://localhost:8088/players/srs_player.html?vhost=ossrs.net&app=live&stream=livestream.flv&server=ossrs.net&port=8080&autostart=true&schema=http
|
* http://localhost:8088/players/srs_player.html?vhost=ossrs.net&app=live&stream=livestream.flv&server=ossrs.net&port=8080&autostart=true&schema=http
|
||||||
*/
|
*/
|
||||||
$(function(){
|
var autoLoadPage = function() {
|
||||||
var query = parse_query_string();
|
var query = parse_query_string();
|
||||||
|
|
||||||
// get the vhost and port to set the default url.
|
// get the vhost and port to set the default url.
|
||||||
|
@ -580,9 +473,9 @@
|
||||||
$("#pb_buffer").width(Number(buffer).toFixed(1) + "%");
|
$("#pb_buffer").width(Number(buffer).toFixed(1) + "%");
|
||||||
|
|
||||||
$("#pb_buffer_bg").attr("title",
|
$("#pb_buffer_bg").attr("title",
|
||||||
"缓冲区:" + buffer_length.toFixed(1) + "秒, 最大缓冲区:"
|
"缓冲区:" + buffer_length.toFixed(1) + "秒, 最大缓冲区:"
|
||||||
+ this.max_buffer_time.toFixed(1) + "秒, 当前:"
|
+ this.max_buffer_time.toFixed(1) + "秒, 当前:"
|
||||||
+ buffer.toFixed(1) + "%");
|
+ buffer.toFixed(1) + "%");
|
||||||
|
|
||||||
var bts = this.buffer_time >= 1? this.buffer_time.toFixed(0) : this.buffer_time.toFixed(1);
|
var bts = this.buffer_time >= 1? this.buffer_time.toFixed(0) : this.buffer_time.toFixed(1);
|
||||||
var mbts = this.buffer_time >= 1? this.max_buffer_time.toFixed(0) : this.max_buffer_time.toFixed(1);
|
var mbts = this.buffer_time >= 1? this.max_buffer_time.toFixed(0) : this.max_buffer_time.toFixed(1);
|
||||||
|
@ -627,9 +520,9 @@
|
||||||
var apply_url_change = function() {
|
var apply_url_change = function() {
|
||||||
var rtmp = parse_rtmp_url($("#txt_url").val());
|
var rtmp = parse_rtmp_url($("#txt_url").val());
|
||||||
var url = "http://" + query.host + query.pathname + "?"
|
var url = "http://" + query.host + query.pathname + "?"
|
||||||
+ "app=" + rtmp.app + "&stream=" + rtmp.stream
|
+ "app=" + rtmp.app + "&stream=" + rtmp.stream
|
||||||
+ "&server=" + rtmp.server + "&port=" + rtmp.port
|
+ "&server=" + rtmp.server + "&port=" + rtmp.port
|
||||||
+ "&autostart=true";
|
+ "&autostart=true";
|
||||||
if (query.shp_identify) {
|
if (query.shp_identify) {
|
||||||
url += "&shp_identify=" + query.shp_identify;
|
url += "&shp_identify=" + query.shp_identify;
|
||||||
}
|
}
|
||||||
|
@ -806,6 +699,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
apply_url_change();
|
apply_url_change();
|
||||||
});
|
};
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
// The version config.
|
// The version config.
|
||||||
#define VERSION_MAJOR 3
|
#define VERSION_MAJOR 3
|
||||||
#define VERSION_MINOR 0
|
#define VERSION_MINOR 0
|
||||||
#define VERSION_REVISION 72
|
#define VERSION_REVISION 73
|
||||||
|
|
||||||
// The macros generated by configure script.
|
// The macros generated by configure script.
|
||||||
#include <srs_auto_headers.hpp>
|
#include <srs_auto_headers.hpp>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue