Javascript, Other

用javascript操作MediaPlayer

8 Comments 08 August 2007

最近要为点播页面开发一些新的功能,比如点播的播完自动跳转、节目记忆等,需要与activex对象进行一些通讯并进行一些操作,和开发activex的同事交流了一下,发现并不难,只要用javascript响应mediaplayer的内部事件就行,其中与流播放有直接关系的事件有:OpenStateChange,PlayStateChange,Buffering,MarkerHit,ScriptCommand等。

我这里只需要检测播放器是否已经播完视频文件,所以只需要对PlayStateChange进行监控即可,把javascript的代码发在这里,并附上PlayStateChange的一些状态参数,更详细的介绍请看这里

  1. <script lang="javascript" type="text/javascript">
  2. var last_order =1;
  3. var order =1;
  4. var rid=0;
  5.  
  6. function changeFileUrl(rid,order)
  7. {
  8. window.rid = rid;
  9. window.order = order;
  10. basic_url = "dianbo/playlist/";
  11. wmplayer.stop();
  12. wmplayer.FileName = basic_url+rid+"_"+order+".asx";
  13. wmplayer.play();
  14. setTimeout("changePlayStat()","1000");   
  15.     }
  16.  
  17. function changePlayStat()
  18. {
  19. old_itemId = window.rid+"_"+window.last_order;
  20. now_itemId = window.rid+"_"+window.order;
  21. try{
  22. document.getElementById(old_itemId).className="";
  23. //alert(old_itemId);
  24. document.getElementById(now_itemId).className="now";
  25. window.last_order = window.order;
  26. setCookie(window.rid,window.order);
  27. }
  28. catch(e){};
  29. }
  30.  
  31. function wmplayer.CorePlayer::PlayStateChange(state)
  32. {
  33. //alert(state);
  34. if(state==8)
  35. {
  36. window.order = parseInt(window.order)+1;
  37. setTimeout("changePlayStat()","1000");   
  38.     }
  39. }
  40.  
  41. function checkLastPlay()
  42. {
  43. last_play = getCookie(window.rid);
  44. if(last_play>0) 
  45. {
  46. if(confirm("您上次看到第"+last_play+"集,要继续观看吗?"))
  47. {
  48.     window.order = last_play;
  49.     window.last_order = last_play;
  50.     changeFileUrl(window.rid,window.order);
  51.         }
  52. else changeFileUrl(window.rid,window.order);
  53. return;   
  54.     }
  55. changeFileUrl(window.rid,window.order);
  56. }
  57. checkLastPlay();
  58. </script>

状态参数如下:

wmppsUndefined = 0;//未知状态
wmppsStopped = 1;//播放停止
wmppsPaused = 2;//播放暂停
wmppsPlaying = 3;//正在播放
wmppsScanForward = 4;//向前搜索
wmppsScanReverse = 5;//向后搜索
wmppsBuffering = 6;//正在缓冲
wmppsWaiting = 7;//正在等待流开始
wmppsMediaEnded = 8;//播放流已结束
wmppsTransitioning = 9;//准备新的媒体文件
wmppsReady = 10;//播放准备就绪
wmppsReconnecting = 11;//尝试重新连接流媒体数据
wmppsLast = 12;//上一次状态,状态没有改变

Your Comments

8 Comments so far

  1. jay says:

    function wmplayer.CorePlayer::PlayStateChange(state)
    这句是什么意思,麻烦楼主指教(主要是那个::)

  2. Nicky says:

    力力最近有没有研究ajax的框架啊?

  3. i.Ksharp says:

    !,GOOD,收藏一下研究

  4. Zillionpark says:

    我所想象的以后的自己的博客就是你这个博客的这个样子

  5. tibet tour says:

    功能很好用的

  6. Anonymous says:

    静态调用


Share your view

Post a comment

© 2007 Satellite Of Love. Powered by Wordpress.

Photo Edition, originally Daily Edition.