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

add fullscreen event and rescale

This commit is contained in:
winlin 2013-12-21 01:04:29 +08:00
parent 02f46d6fcc
commit 065cbbe4aa
5 changed files with 497 additions and 237 deletions

View file

@ -1,3 +1,6 @@
/**
* update the navigator, add same query string.
*/
function update_nav() {
$("#nav_srs_player").attr("href", "srs_player.html" + window.location.search);
$("#nav_srs_publisher").attr("href", "srs_publisher.html" + window.location.search);
@ -7,6 +10,9 @@ function update_nav() {
$("#nav_vlc").attr("href", "vlc.html" + window.location.search);
}
/**
* parse the query string to object.
*/
function parse_query_string(){
var query_string = String(window.location.search).replace(" ", "").split("?")[1];
if(query_string == undefined){
@ -60,6 +66,11 @@ function build_default_hls_url() {
return "http://" + vhost + ":" + port + "/" + app + "/" + stream + ".m3u8";
}
/**
* initialize the page.
* @param rtmp_url the rtmp stream url to play
* @param hls_url the hls stream url to play
*/
function srs_init(rtmp_url, hls_url) {
update_nav();
@ -70,3 +81,146 @@ function srs_init(rtmp_url, hls_url) {
$(hls_url).val(build_default_hls_url());
}
}
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
/**
* the SrsPlayer object.
*/
function SrsPlayer(container, stream_url, width, height, buffer_time) {
if (!SrsPlayer.__id) {
SrsPlayer.__id = 100;
}
if (!SrsPlayer.__players) {
SrsPlayer.__players = [];
}
SrsPlayer.__players.push(this);
this.container = container;
this.stream_url = stream_url;
this.width = width;
this.height = height;
this.buffer_time = buffer_time;
this.id = SrsPlayer.__id++;
this.callbackObj = null;
// callback set the following values.
this.meatadata = {}; // for on_player_metadata
}
/**
* user can set some callback, then start the player.
* callbacks:
* on_player_ready():int, when srs player ready, user can play.
* on_player_metadata(metadata:Object):int, when srs player get metadata.
*/
SrsPlayer.prototype.start = function() {
// embed the flash.
var flashvars = {};
flashvars.id = this.id;
flashvars.on_player_ready = "__srs_on_player_ready";
flashvars.on_player_metadata = "__srs_on_player_metadata";
var params = {};
params.wmode = "opaque";
params.allowFullScreen = "true";
params.allowScriptAccess = "always";
var attributes = {};
var self = this;
swfobject.embedSWF(
"srs_player/release/srs_player.swf", this.container,
this.width, this.height,
"11.1", "js/AdobeFlashPlayerInstall.swf",
flashvars, params, attributes,
function(callbackObj){
self.callbackObj = callbackObj;
}
);
return this;
}
SrsPlayer.prototype.play = function() {
return this.callbackObj.ref.__play(this.stream_url, this.width, this.height, this.buffer_time);
}
SrsPlayer.prototype.stop = function() {
for (var i = 0; i < SrsPlayer.__players.length; i++) {
var player = SrsPlayer.__players[i];
if (player.id != this.id) {
continue;
}
SrsPlayer.__players.splice(i, 1);
break;
}
return this.callbackObj.ref.__stop();
}
SrsPlayer.prototype.pause = function() {
return this.callbackObj.ref.__pause();
}
SrsPlayer.prototype.resume = function() {
return this.callbackObj.ref.__resume();
}
/**
* to set the DAR, for example, DAR=16:9
* @param num, for example, 9.
* use metadata height if 0.
* use user specified height if -1.
* @param den, for example, 16.
* use metadata width if 0.
* use user specified width if -1.
*/
SrsPlayer.prototype.dar = function(num, den) {
return this.callbackObj.ref.__dar(num, den);
}
/**
* set the fullscreen size data.
* @refer the refer fullscreen mode. it can be:
* video: use video orignal size.
* screen: use screen size to rescale video.
* @param percent, the rescale percent, where
* 100 means 100%.
*/
SrsPlayer.prototype.set_fs = function(refer, percent) {
return this.callbackObj.ref.__set_fs(refer, percent);
}
SrsPlayer.prototype.on_player_ready = function() {
return this.play();
}
SrsPlayer.prototype.on_player_metadata = function(metadata) {
return 0;
}
function __srs_on_player_ready(id) {
for (var i = 0; i < SrsPlayer.__players.length; i++) {
var player = SrsPlayer.__players[i];
if (player.id != id) {
continue;
}
return player.on_player_ready();
}
throw new Error("player not found. id=" + id);
}
function __srs_on_player_metadata(id, metadata) {
for (var i = 0; i < SrsPlayer.__players.length; i++) {
var player = SrsPlayer.__players[i];
if (player.id != id) {
continue;
}
// user may override the on_player_metadata,
// so set the data before invoke it.
player.metadata = metadata;
return player.on_player_metadata(metadata);
}
throw new Error("player not found. id=" + id);
}