正在显示
1 个修改的文件
包含
57 行增加
和
24 行删除
| @@ -16,6 +16,7 @@ | @@ -16,6 +16,7 @@ | ||
| 16 | <script type="text/javascript"> | 16 | <script type="text/javascript"> |
| 17 | var srs_publisher = null; | 17 | var srs_publisher = null; |
| 18 | var remote_player = null; | 18 | var remote_player = null; |
| 19 | + var realtime_player = null; | ||
| 19 | 20 | ||
| 20 | $(function(){ | 21 | $(function(){ |
| 21 | // get the vhost and port to set the default url. | 22 | // get the vhost and port to set the default url. |
| @@ -33,6 +34,9 @@ | @@ -33,6 +34,9 @@ | ||
| 33 | $("#remote_tips").tooltip({ | 34 | $("#remote_tips").tooltip({ |
| 34 | title: "为了支持HLS输出,FLASH编码器输出的流需要经过转码(VP6=>H264,MP3=>aac),所以会黑屏较长时间,请耐心等待" | 35 | title: "为了支持HLS输出,FLASH编码器输出的流需要经过转码(VP6=>H264,MP3=>aac),所以会黑屏较长时间,请耐心等待" |
| 35 | }); | 36 | }); |
| 37 | + $("#low_latecy_tips").tooltip({ | ||
| 38 | + title: "服务器不转码直接转发FLASH编码器的流,所以延迟比支持HLS的流要低很多" | ||
| 39 | + }); | ||
| 36 | 40 | ||
| 37 | $("#btn_publish").click(on_user_publish); | 41 | $("#btn_publish").click(on_user_publish); |
| 38 | 42 | ||
| @@ -120,11 +124,17 @@ | @@ -120,11 +124,17 @@ | ||
| 120 | }; | 124 | }; |
| 121 | srs_publisher.start(); | 125 | srs_publisher.start(); |
| 122 | 126 | ||
| 123 | - // start the player. | 127 | + // start the normal player with HLS supported. |
| 124 | remote_player = new SrsPlayer("remote_player", 430, 185); | 128 | remote_player = new SrsPlayer("remote_player", 430, 185); |
| 125 | remote_player.on_player_ready = function() { | 129 | remote_player.on_player_ready = function() { |
| 126 | }; | 130 | }; |
| 127 | remote_player.start(); | 131 | remote_player.start(); |
| 132 | + | ||
| 133 | + // start the realtime player. | ||
| 134 | + realtime_player = new SrsPlayer("realtime_player", 430, 185); | ||
| 135 | + realtime_player.on_player_ready = function() { | ||
| 136 | + }; | ||
| 137 | + realtime_player.start(); | ||
| 128 | }); | 138 | }); |
| 129 | 139 | ||
| 130 | /** | 140 | /** |
| @@ -136,7 +146,8 @@ | @@ -136,7 +146,8 @@ | ||
| 136 | * players_pub enalbed HLS. | 146 | * players_pub enalbed HLS. |
| 137 | */ | 147 | */ |
| 138 | function update_play_url() { | 148 | function update_play_url() { |
| 139 | - var ret = srs_parse_rtmp_url($("#txt_url").val()); | 149 | + var url = $("#txt_url").val(); |
| 150 | + var ret = srs_parse_rtmp_url(url); | ||
| 140 | var query = parse_query_string(); | 151 | var query = parse_query_string(); |
| 141 | 152 | ||
| 142 | var srs_player_url = "http://" + query.host + query.dir + "/srs_player.html?"; | 153 | var srs_player_url = "http://" + query.host + query.dir + "/srs_player.html?"; |
| @@ -149,17 +160,19 @@ | @@ -149,17 +160,19 @@ | ||
| 149 | 160 | ||
| 150 | var hls_url = "http://" + ret.server + ":" + query.http_port + "/" + ret.app + "/" + ret.stream + ".m3u8"; | 161 | var hls_url = "http://" + ret.server + ":" + query.http_port + "/" + ret.app + "/" + ret.stream + ".m3u8"; |
| 151 | 162 | ||
| 152 | - $("#txt_play_url").text("点击或右键复制").attr("href", srs_player_url).attr("target", "_blank"); | ||
| 153 | - $("#txt_play_hls").text("点击或右键复制").attr("href", hls_url).attr("target", "_blank"); | ||
| 154 | - $("#txt_play_jwplayer").text("点击或右键复制").attr("href", jwplayer_url).attr("target", "_blank"); | 163 | + $("#txt_play_realtime").text("RTMP低延时(点击打开)").attr("href", url).attr("target", "_blank"); |
| 164 | + $("#txt_play_url").text("RTMP已转码(点击打开)").attr("href", srs_player_url).attr("target", "_blank"); | ||
| 165 | + $("#txt_play_hls").text("HLS-m3u8(点击打开或右键复制)").attr("href", hls_url).attr("target", "_blank"); | ||
| 166 | + $("#txt_play_jwplayer").text("HLS-JWPlayer(点击打开)").attr("href", jwplayer_url).attr("target", "_blank"); | ||
| 155 | } | 167 | } |
| 156 | function on_user_publish() { | 168 | function on_user_publish() { |
| 157 | if ($("#btn_publish").text() == "停止发布") { | 169 | if ($("#btn_publish").text() == "停止发布") { |
| 158 | srs_publisher.stop(); | 170 | srs_publisher.stop(); |
| 159 | $("#btn_publish").text("发布视频"); | 171 | $("#btn_publish").text("发布视频"); |
| 160 | - $("#txt_play_url").text("请发布视频").attr("href", "#").attr("target", "_self"); | ||
| 161 | - $("#txt_play_hls").text("请发布视频").attr("href", "#").attr("target", "_self"); | ||
| 162 | - $("#txt_play_jwplayer").text("请发布视频").attr("href", "#").attr("target", "_self"); | 172 | + $("#txt_play_realtime").text("RTMP低延时(请发布视频)").attr("href", "#").attr("target", "_self"); |
| 173 | + $("#txt_play_url").text("RTMP已转码(请发布视频)").attr("href", "#").attr("target", "_self"); | ||
| 174 | + $("#txt_play_hls").text("HLS-m3u8(请发布视频)").attr("href", "#").attr("target", "_self"); | ||
| 175 | + $("#txt_play_jwplayer").text("HLS-JWPlayer(请发布视频)").attr("href", "#").attr("target", "_self"); | ||
| 163 | return; | 176 | return; |
| 164 | } | 177 | } |
| 165 | 178 | ||
| @@ -188,7 +201,14 @@ | @@ -188,7 +201,14 @@ | ||
| 188 | info("开始推流到服务器"); | 201 | info("开始推流到服务器"); |
| 189 | srs_publisher.publish(url, vcodec, acodec); | 202 | srs_publisher.publish(url, vcodec, acodec); |
| 190 | 203 | ||
| 191 | - // replay the url. | 204 | + // directly play the url for the realtime player. |
| 205 | + realtime_player.stop(); | ||
| 206 | + realtime_player.play(url); | ||
| 207 | + | ||
| 208 | + // the normal player should play the transcoded stream in another vhost. | ||
| 209 | + // for example, publish stream to vhost players, | ||
| 210 | + // the realtime player play the vhost players, which may donot support HLS, | ||
| 211 | + // the normal player play the vhost players_pub, which transcoded to h264/aac with HLS. | ||
| 192 | var ret = srs_parse_rtmp_url(url); | 212 | var ret = srs_parse_rtmp_url(url); |
| 193 | var pub_url = "rtmp://" + ret.server + ":" + ret.port + "/" + ret.app; | 213 | var pub_url = "rtmp://" + ret.server + ":" + ret.port + "/" + ret.app; |
| 194 | pub_url += "?vhost=" + srs_get_player_publish_vhost(ret.vhost) + "/" + ret.stream; | 214 | pub_url += "?vhost=" + srs_get_player_publish_vhost(ret.vhost) + "/" + ret.stream; |
| @@ -247,20 +267,11 @@ | @@ -247,20 +267,11 @@ | ||
| 247 | </div> | 267 | </div> |
| 248 | <div class="control-group"> | 268 | <div class="control-group"> |
| 249 | <div class="form-inline"> | 269 | <div class="form-inline"> |
| 250 | - 观看地址(rtmp地址): | ||
| 251 | - <a id="txt_play_url" class="input-xxlarge" href="#">请发布视频</a> | ||
| 252 | - </div> | ||
| 253 | - </div> | ||
| 254 | - <div class="control-group"> | ||
| 255 | - <div class="form-inline"> | ||
| 256 | - HLS地址(m3u8地址): | ||
| 257 | - <a id="txt_play_hls" class="input-xxlarge" href="#">请发布视频</a> | ||
| 258 | - </div> | ||
| 259 | - </div> | ||
| 260 | - <div class="control-group"> | ||
| 261 | - <div class="form-inline"> | ||
| 262 | - HLS地址(JWPlayer): | ||
| 263 | - <a id="txt_play_jwplayer" class="input-xxlarge" href="#">请发布视频</a> | 270 | + 播放地址 |
| 271 | + 1.<a id="txt_play_realtime" class="input-xxlarge" href="#">RTMP低延时(请发布视频)</a> | ||
| 272 | + 2.<a id="txt_play_url" class="input-xxlarge" href="#">RTMP已转码(请发布视频)</a> | ||
| 273 | + 3.<a id="txt_play_hls" class="input-xxlarge" href="#">HLS-m3u8(请发布视频)</a> | ||
| 274 | + 4.<a id="txt_play_jwplayer" class="input-xxlarge" href="#">HLS-JWPlayer(请发布视频)</a> | ||
| 264 | </div> | 275 | </div> |
| 265 | </div> | 276 | </div> |
| 266 | <div id="video_modal" class="modal hide fade"> | 277 | <div id="video_modal" class="modal hide fade"> |
| @@ -423,7 +434,29 @@ | @@ -423,7 +434,29 @@ | ||
| 423 | </div> | 434 | </div> |
| 424 | </div> | 435 | </div> |
| 425 | </div> | 436 | </div> |
| 426 | - <hr> | 437 | + <div class="container"> |
| 438 | + <div class="row-fluid"> | ||
| 439 | + <div class="span6"> | ||
| 440 | + <div class="accordion-group"> | ||
| 441 | + <div class="accordion-heading"> | ||
| 442 | + <span class="accordion-toggle" data-toggle="collapse" href="#collapseOne"> | ||
| 443 | + <strong>远程服务器</strong> | ||
| 444 | + <a id="low_latecy_tips" href="#" data-toggle="tooltip" data-placement="top" title=""> | ||
| 445 | + 低延时<img src="img/tooltip.png"/> | ||
| 446 | + </a> | ||
| 447 | + </span> | ||
| 448 | + </div> | ||
| 449 | + <div id="collapseOne" class="accordion-body collapse in"> | ||
| 450 | + <div class="accordion-inner"> | ||
| 451 | + <div id="realtime_player"></div> | ||
| 452 | + </div> | ||
| 453 | + </div> | ||
| 454 | + </div> | ||
| 455 | + </div> | ||
| 456 | + <div class="span6"> | ||
| 457 | + </div> | ||
| 458 | + </div> | ||
| 459 | + </div> | ||
| 427 | <footer> | 460 | <footer> |
| 428 | <p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team © 2013</a></p> | 461 | <p><a href="https://github.com/winlinvip/simple-rtmp-server">SRS Team © 2013</a></p> |
| 429 | </footer> | 462 | </footer> |
-
请 注册 或 登录 后发表评论