1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

Detect whether flash enabled for srs-publisher.

This commit is contained in:
winlin 2019-12-18 11:33:34 +08:00
parent b0afc00733
commit c830dc6700
2 changed files with 265 additions and 207 deletions

View file

@ -67,7 +67,6 @@
<input type="text" id="txt_url" class="input-xxlarge" value=""> <input type="text" id="txt_url" class="input-xxlarge" value="">
<button class="btn btn-primary" id="btn_play">播放视频</button> <button class="btn btn-primary" id="btn_play">播放视频</button>
<button class="btn" id="btn_generate_link">生成链接</button> <button class="btn" id="btn_generate_link">生成链接</button>
<p></p>
</div> </div>
<div id="link_modal" class="modal hide fade"> <div id="link_modal" class="modal hide fade">
<div class="modal-header"> <div class="modal-header">
@ -260,6 +259,7 @@
</div> </div>
<footer> <footer>
<p></p>
<p><a href="https://github.com/ossrs/srs">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/ossrs/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>

View file

@ -31,237 +31,253 @@
</div> </div>
</div> </div>
<div class="container"> <div class="container">
<div class="alert alert-info fade in" id="txt_log"> <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 id="txt_log_title">Usage:</span></strong> <button type="button" class="close" data-dismiss="alert">×</button>
<span id="txt_log_msg">设置编码参数点“发布视频”允许Flash访问摄像头即可推流</span> <strong><span>Usage:</span></strong>
</div> <span>
<div class="control-group"> 请点击下面的图标启用Flash
<div class="form-inline"> </span>
<button class="btn" id="btn_video_settings">视频编码配置</button> </div>
<button class="btn" id="btn_audio_settings">音频编码配置</button> <div id="main_flash_hdr" class="hide">
</div> </div>
</div> </div>
<div class="control-group">
<div class="form-inline"> <div id="main_content" class="hide">
发布地址: <div class="alert alert-info fade in" id="txt_log">
<input type="text" id="txt_url" class="input-xxlarge" value=""></input> <button type="button" class="close" data-dismiss="alert">×</button>
<button class="btn btn-primary" id="btn_publish">发布视频</button> <strong><span id="txt_log_title">Usage:</span></strong>
<label class="checkbox"> <span id="txt_log_msg">设置编码参数点“发布视频”允许Flash访问摄像头即可推流</span>
<input type="checkbox" id="cb_preview">预览
</label>
</div> </div>
</div> <div class="control-group">
<div class="control-group"> <div class="form-inline">
<div class="form-inline"> <button class="btn" id="btn_video_settings">视频编码配置</button>
播放地址 <button class="btn" id="btn_audio_settings">音频编码配置</button>
1.<a id="txt_play_realtime" class="input-xxlarge" href="#">RTMP低延时(请发布视频)</a>
2.<a id="txt_play_url" class="input-xxlarge" href="#">RTMP已转码(请发布视频)</a>
3.<a id="txt_play_hls" class="input-xxlarge" href="#">HLS-m3u8(请发布视频)</a>
4.<a id="txt_play_jwplayer" class="input-xxlarge" href="#">HLS-JWPlayer(请发布视频)</a>
</div>
</div>
<div id="video_modal" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>视频编码</h3>
</div>
<div class="modal-body">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" for="sl_cameras">
摄像头
<a id="sl_cameras_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span4" id="sl_cameras"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_vcodec">
Codec
<a id="sl_cameras_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_vcodec"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_profile">
Profile
<a id="sl_profile_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_profile"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_level">
Level
<a id="sl_level_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_level"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_gop">
GOP
<a id="sl_gop_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_gop"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_size">
尺寸
<a id="sl_size_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_size"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_fps">
帧率
<a id="sl_fps_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_fps"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_bitrate">
码率
<a id="sl_bitrate_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_bitrate"></select>
</div>
</div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="control-group">
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">设置</button> <div class="form-inline">
</div> 发布地址:
</div> <input type="text" id="txt_url" class="input-xxlarge" value=""></input>
<div id="audio_modal" class="modal hide fade"> <button class="btn btn-primary" id="btn_publish">发布视频</button>
<div class="modal-header"> <label class="checkbox">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <input type="checkbox" id="cb_preview">预览
<h3>音频编码</h3> </label>
</div>
<div class="modal-body">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" for="sl_microphones">
麦克风
<a id="worker_id_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span4" id="sl_microphones"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_acodec">
编码
<a id="sl_acodec_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_acodec"></select>
</div>
</div>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="control-group">
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">设置</button> <div class="form-inline">
播放地址
1.<a id="txt_play_realtime" class="input-xxlarge" href="#">RTMP低延时(请发布视频)</a>
2.<a id="txt_play_url" class="input-xxlarge" href="#">RTMP已转码(请发布视频)</a>
3.<a id="txt_play_hls" class="input-xxlarge" href="#">HLS-m3u8(请发布视频)</a>
4.<a id="txt_play_jwplayer" class="input-xxlarge" href="#">HLS-JWPlayer(请发布视频)</a>
</div>
</div> </div>
</div> <div id="video_modal" class="modal hide fade">
<div class="container"> <div class="modal-header">
<div class="row-fluid"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<div class="span6"> <h3>视频编码</h3>
<div class="accordion-group"> </div>
<div class="accordion-heading"> <div class="modal-body">
<span class="accordion-toggle"> <div class="form-horizontal">
<strong>本地摄像头</strong> <div class="control-group">
</span> <label class="control-label" for="sl_cameras">
摄像头
<a id="sl_cameras_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span4" id="sl_cameras"></select>
</div>
</div> </div>
<div class="accordion-body collapse in"> <div class="control-group">
<div class="accordion-inner"> <label class="control-label" for="sl_vcodec">
<div id="local_publisher"></div> Codec
<a id="sl_cameras_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_vcodec"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_profile">
Profile
<a id="sl_profile_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_profile"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_level">
Level
<a id="sl_level_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_level"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_gop">
GOP
<a id="sl_gop_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_gop"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_size">
尺寸
<a id="sl_size_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_size"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_fps">
帧率
<a id="sl_fps_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_fps"></select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="sl_bitrate">
码率
<a id="sl_bitrate_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_bitrate"></select>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="span6"> <div class="modal-footer">
<div class="accordion-group"> <button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">设置</button>
<div class="accordion-heading"> </div>
<span class="accordion-toggle"> </div>
<strong>远程服务器</strong> <div id="audio_modal" class="modal hide fade">
<a id="remote_tips" href="#" data-toggle="tooltip" data-placement="top" title=""> <div class="modal-header">
黑屏<img src="img/tooltip.png"/> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3>音频编码</h3>
</div>
<div class="modal-body">
<div class="form-horizontal">
<div class="control-group">
<label class="control-label" for="sl_microphones">
麦克风
<a id="worker_id_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a> </a>
<a id="remote_player_url" href="#" data-toggle="tooltip" data-placement="top" title=""> </label>
播放地址<img src="img/tooltip.png"/> <div class="controls">
</a> <select class="span4" id="sl_microphones"></select>
</span> </div>
</div> </div>
<div class="accordion-body collapse in"> <div class="control-group">
<div class="accordion-inner"> <label class="control-label" for="sl_acodec">
<div id="remote_player"></div> 编码
<a id="sl_acodec_tips" href="#" data-toggle="tooltip" data-placement="right" title="">
<img src="img/tooltip.png"/>
</a>
</label>
<div class="controls">
<select class="span2" id="sl_acodec"></select>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" data-dismiss="modal" aria-hidden="true">设置</button>
</div>
</div>
<div class="container">
<div class="row-fluid">
<div class="span6">
<div class="accordion-group">
<div class="accordion-heading">
<span class="accordion-toggle">
<strong>本地摄像头</strong>
</span>
</div>
<div class="accordion-body collapse in">
<div class="accordion-inner">
<div id="local_publisher"></div>
</div>
</div>
</div>
</div>
<div class="span6">
<div class="accordion-group">
<div class="accordion-heading">
<span class="accordion-toggle">
<strong>远程服务器</strong>
<a id="remote_tips" href="#" data-toggle="tooltip" data-placement="top" title="">
黑屏<img src="img/tooltip.png"/>
</a>
<a id="remote_player_url" href="#" data-toggle="tooltip" data-placement="top" title="">
播放地址<img src="img/tooltip.png"/>
</a>
</span>
</div>
<div class="accordion-body collapse in">
<div class="accordion-inner">
<div id="remote_player"></div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="container">
<div class="container"> <div class="row-fluid">
<div class="row-fluid"> <div class="span6">
<div class="span6"> <div class="accordion-group">
<div class="accordion-group"> <div class="accordion-heading">
<div class="accordion-heading"> <span class="accordion-toggle">
<span class="accordion-toggle"> <strong>远程服务器</strong>
<strong>远程服务器</strong> <a id="low_latecy_tips" href="#" data-toggle="tooltip" data-placement="top" title="">
<a id="low_latecy_tips" href="#" data-toggle="tooltip" data-placement="top" title=""> 低延时<img src="img/tooltip.png"/>
低延时<img src="img/tooltip.png"/> </a>
</a> <a id="realtime_player_url" href="#" data-toggle="tooltip" data-placement="top" title="">
<a id="realtime_player_url" href="#" data-toggle="tooltip" data-placement="top" title=""> 播放地址<img src="img/tooltip.png"/>
播放地址<img src="img/tooltip.png"/> </a>
</a> </span>
</span> </div>
</div> <div class="accordion-body collapse in">
<div class="accordion-body collapse in"> <div class="accordion-inner">
<div class="accordion-inner"> <div id="realtime_player"></div>
<div id="realtime_player"></div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="span6">
<div class="span6"> </div>
</div> </div>
</div> </div>
</div> </div>
<footer> <footer>
<p></p>
<p><a href="https://github.com/ossrs/srs">SRS Team &copy; 2013</a></p> <p><a href="https://github.com/ossrs/srs">SRS Team &copy; 2013</a></p>
</footer> </footer>
</div> </div>
@ -276,13 +292,55 @@
<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_publisher = null; var srs_publisher = null;
var remote_player = null; var remote_player = null;
var realtime_player = null; var realtime_player = null;
var query = parse_query_string(); var query = parse_query_string();
$(function(){ var autoLoadPage = function() {
// get the vhost and port to set the default url. // get the vhost and port to set the default url.
// for example: http://192.168.1.213/players/jwplayer6.html?port=1935&vhost=demo // for example: http://192.168.1.213/players/jwplayer6.html?port=1935&vhost=demo
// url set to: rtmp://demo:1935/live/livestream // url set to: rtmp://demo:1935/live/livestream
@ -366,7 +424,7 @@
} }
realtime_player.start(); realtime_player.start();
} }
}); };
function on_publish_stop() { function on_publish_stop() {
if (!srs_can_republish()) { if (!srs_can_republish()) {