O problema mais básico com o desenvolvedor que ainda está preso ao reprodutor de mídia de janela enquanto há entrega de conteúdo de vídeo é a maneira como seus eventos funcionam.
Os eventos do Windows media player são basicamente os enum. Começando de 0 a 12
Onde
case 0: "Undefined"
case 1: "Stopped";
case 2: "Paused";
.
.
.
case 11: "Reconnecting"
case 12 : "Last"
e assim por diante. Em muitas ocasiões, o desenvolvedor nem sabe como usá-los.
Então aqui estou. Eu estava no mesmo tipo de dificuldade quando preciso de uma solução para o meu player que estava usando o objeto IE para exibir um player da web no protetor de tela do Windows.
A escolha óbvia era usar o JWplayer. E, inicialmente, obtivemos sucesso. Executar o JWplayer no protetor de tela foi muito divertido, mas havia um problema.
O problema era que, uma vez que o conteúdo do JWplayer é armazenado em cache, ele nunca é executado. Na verdade, ele começou a apresentar um erro de javascript.
Não me lembro qual foi esse erro e até agora não consegui encontrar o motivo por trás dele, mas provavelmente o motivo era o objeto do IE6 que estávamos usando para executar o JWplayer no protetor de tela.
Então, qual foi a solução. Mantendo o código como está, mas usando um player diferente. Para qual player pode ser mais adequado para a instância do IE , o que não surpreende WMV (Windows media player)
Então aqui estou compartilhando o código que escrevi para o meu Windows media player. JWplayer like framework para Windows media player.
código
var WMPlayer={
isFullScreen: "",
cnt: 0,
setup: function (options) {
player = document.getElementById('contentPlayer');
this.isFullScreen = options.fullScreen;
player.URl = options.file;
player.settings.autoStart = options.autostart;
player.height = options.height;
player.width = options.width;
if (player.settings.autoStart == true) {
player.controls.play();
}
if (options.controls == false) {
this.HideControls();
}
},
HideControls: function () {
// player.uiMode = "none";
},
FullScreen: function (bool) {
// player.fullScreen = bool;
},
Pause: function () {
// player.controls.pause();
},
Play: function () {
// player.controls.play();
},
Playing: function () {
// writing code like do we need to make player fullscreen once it start playing
},
Ready: function () {
// DO something when player is ready to play
},
Time: function () {
clearInterval(playPauseInterval);
// There is not Time Event in WMVPlayer so we need to figure it out by using javascript interval
playPauseInterval = setInterval(function () {
var playerCurrentDuration = player.controls.currentPosition;
}, 100);
}
}
Não, não o código sozinho. Precisamos configurar eventos principais do wmvplayer para chamar nossos eventos.
object(type='video/x-ms-wmv',id='contentPlaye'r,CLSID:'6BF52A52-394A-11d3-B153-00C04F79FAA6' )
param(name='wmode',value='trasparent')
param(name='stretchToFi't,value='true')
param(name='autoStart',value='false')
script(type='text/javascript', for=.contentPlayer' ,event='playStateChange').
if (player != null) {
if (player.playState == 3) {
WMPlayer.Playing();
clearInterval(pauseInt);
WMPlayer.Time();
}
if (player.playState == 8) {
clearInterval(pauseIntervalWMPlayer);
cnt = 0;
nextPausecnt = 0
}
if (player.playState == 10) {
WMPlayer.Ready();
}
}
Primeiros passos chamando o método de configuração da instância do WMPlayer.
WMPlayer.setup({
autostart: true,
file: URL,
height: h,
width: w,
fullScreen: paramFullScreen,
controls: false
});