• 网页嵌入快播播放器并实现服务器视频文件连续播放


    上篇我们在网页中(html、jsp、php)嵌入了快播播放器,嵌入代码如下:

    	<object classid="clsid:F3D0D36F-23F8-4682-A195-74C92B03D4AF" width="560" height="420" id="QvodPlayer" name="QvodPlayer" onError="downLoadQvod();">  
    				 <param name="url" id="qvodurl0" value="http://192.168.1.254:8089/ftp/ftpupload//2_1001_025201.AVI">
    				 <param name="Autoplay" value="1">   
    				 <param name="Showcontrol" value="1">  
    	</object>  


    参数介绍:url:播放视频文件的地址  Autoplay:是否自动播放,1:是,0:否  Showcontrol:是否显示控制栏,也就是下面的声音控制以及进度条 1:是,0:否,界面如下:注意:下载的快播版本不同会有不同的页面效果

    在项目中我们可能会有这样的需求,就是从服务器端获取很多的视频文件地址,我们播放一个后自动跳转到下一个,开始我也是从快播方面考虑,在其论坛上http://bbs.kuaibo.com/找了很多相关方面的资料,发现其有自己的内部实现方式,可能要在其后台进行相应的发布和地址格式转换等等,想要研究的看这篇博客:http://bbs.kuaibo.com/thread-19410-1-1.html,后来想来想去,还是自己用js解决了,在里面使用了我们的定时器。代码如下:

    <script type="text/javascript">
    		 function downLoadQvod(){
    		    if(window.confirm('请您先安装QvodPlayer软件,然后刷新本页才可以正常播放!')){
    				window.open('<%=basePath%>video/qvod-setup.exe');
    			  }
    		 }
    
    		 function play(){
    		   QvodPlayer.url="F:/30230201/02-53-02.AVI";
                    QvodPlayer.play();
    		 }
             
    		 var i=0;
    		 function getState(){
    		 //将请求的地址封装为数组
    		  var   urlArray=["F:/30230201/02-52-01.AVI","F:/30230201/02-53-02.AVI","F:/30230201/02-53-03.AVI"];
    		  var state = QvodPlayer.PlayState;
    		   if(state==0&&i<urlArray.length){
    		      QvodPlayer.url=urlArray[i];
    			  QvodPlayer.play();
    			  i++;
    		   }
    		 }
             
    		 //设置定时器,1s种请求一次
    		 setInterval("getState()",1000);
    	</script>

    我们也可以点击按钮后出发定时器:

    	 //单个视频播放
    		 function singlePlay(path){
    			QvodPlayer.url="${video_path}"+path;
    			QvodPlayer.play();
    		 }
    		 
    		 //多个视频连续播放
    		 function multiPlay(index){
    			 var urls=$("#s_"+index).text();
    			 var i=1;
    			 if(urls!=""){
    				 var urlArray=urls.split(",");
    				 singlePlay(urlArray[0]);
    				 setInterval(function(){
    					 var state = QvodPlayer.PlayState;
    					  if(state==0&&i<urlArray.length-1){
    						  singlePlay(urlArray[i]);
    						  i++;
    					   }
    				 },1000);
    			 }
    		 }


    这样,每1s中就是判断上一个视频文件是否播放完毕,播放完后自动跳转到下一集,不足的是没有做到像快播那样自动缓冲下一集的功能,只是一个文件的跳转而已!!

    上面我们可以看到快播里面一个方法:QvodPlayer.PlayState;它是调用了快播中的一个属性,快播给我们的js和vb提供了相应的接口,正是因为这些接口的存在,我们才可以在页面中可以对快播玩转自如,下面把它提供的接口给大家瞧瞧:

    1、属性接口:
    1)URL:播放文件地址。URL值格式:qvod://文件大小|文件hash值|文件名|
    如:qvod://145485901|E4284D21B54DCB7181EA853B88746D693ACEA079|美丽的选择-第三部-05.rmvb|
    2) AutoPlay:是否自动播放。0:不自动播放  1:自动播放。默认是不自动播放。
    < PARAM NAME='AutoPlay'  VALUE='0'>
    3) Showcontrol:是否显示控制栏,0=不显示  1= 显示 默认参数是显示
    < PARAM NAME='Showcontrol'  VALUE='0'>

    4)NextWebPage:播放当前节目后自动导航到下一集或者其它网页的功能
    默认为空即不导航。网页地址请以http://开头.
    <;PARAM NAME='NextWebPage' VALUE='http://www.vod588.com/dy_player/b22cbb3c.html?262614'>

    5)NumLoop:是否循环播放当前节目
    值:0 为不循环,大于0为循环次数,递减到0后即停止循环,-1为一直循环。
    默认为0.

    6)QvodAdUrl: 网页中的链接地址是qvod://格式时,可以在网页中用此参数指定播放前的缓冲页面地址
    注:3.0.0.58版本及将来发布的版本才支持。
    <PARAM NAME='QvodAdUrl' VALUE='http://buffer-ad.qvod.com/index_bak.asp'>

    2、方法接口:
    1)播放
    Play():        
    2)停止                        
    Stop():        
    3)暂停
    Pause():                        

    4)设置当前播放位置
    Currentpos:         
    例如想设置播放位置在一分钟则:
    c++等语言:
    long newValue = 60;
    put_Currentpos(newValue);
    javastricpt/vb/vbstricpt等脚本语言:
    var pos = 60;
    QvodPlayer.Currentpos = 60;

    5) 得到当前播放位置
    Currentpos:
    c++等语言:               
    double newValue = 0;
    newValue  = get_Currentpos();
    javastricpt/vb/vbstricpt等脚本语言:
    var pos = 0;
    pos  = QvodPlayer.Currentpos;

    6) 得到播放持续时间
    Duration:               
    c++等语言:
    double newValue = 0;
    newValue  = get_Duration();
    javastricpt/vb/vbstricpt等脚本语言:
    var pos = 0;
    pos  = QvodPlayer.Duration;

    7) 设置全屏与否
    Full (BOOL bFull):        
    如设置全屏
    c++等语言:
    BOOL bFull = TRUE;//全屏则为TRUE,取消全屏则为FALSE
    put_Full (bFull );
    javastricpt/vb/vbstricpt等脚本语言:
    var pos = true;
    QvodPlayer.Full= true;


    8) 得到是否全屏
    Full:
    c++等语言:
    BOOL bFull = TRUE;
    bFull  = get_Full ();
    javastricpt/vb/vbstricpt等脚本语言:
    var pos = true;
    pos  = QvodPlayer.Full;        

    9) 设置静音
    Mute():
    c++等语言:
    BOOL bMute= TRUE;//静单为TRUE,取消静音则为FALSE;
    put_Mute(bMute);
    javastricpt/vb/vbstricpt等脚本语言:
    var pos = true;
    QvodPlayer.Mute = pos ;        

    10) 得到是否静音状态
    BOOL GetMute():
    c++等语言:
    BOOL bMute = TRUE;
    Mute  = get_Mute ();
    javastricpt/vb/vbstricpt等脚本语言:
    var pos = true;
    pos  = QvodPlayer.Mute;        
                   
    11) 得到当前播放状态
    PlayState():
    c++等语言:
    PLAYSTATE state= Undefined ;
    state= get_PlayState ();
    javastricpt/vb/vbstricpt等脚本语言:
    var state;
    state = QvodPlayer.PlayState;

    播放状态值:        
    enum enum_PalyState
    {
    _S_Init = 0,
    _S_Stop,
    _S_Pause,
    _S_Playing,
    _S_Buffering,
    _S_Waiting,
    _S_MediaEnded,
    _S_Ready,
    _S_Conning,
    _S_BTDowning,
    _S_CreateDS,
    _S_Stoping
    };//Undefined = 0,准备就绪 Stopped = 1,停止; Paused = 2,暂停; Playing = 3,播放中; Buffering = 4,缓冲中; Waiting = 5,等待中; MediaEnded = 6,播放结束Ready = 7, 准备读;Reconnecting = 8,重连中; BTDowning = 9 BT种子下载中; Createing = 10,正在连接中; Stoping=11 正在停止;

    刚开始播的时候的状态是Createing
    上面只是一部分,其他的就不一一例举了,想去了解,点击这里查看更多:http://bbs.kuaibo.com/thread-592-1-1.html

  • 相关阅读:
    win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
    Jenkins 不同角色不同视图及不同权限设置
    dig挖出DNS的秘密
    Linux Shell高级技巧
    《Linux内核设计与实现》读书笔记
    github开发
    NodeJs-- 新建项目实例
    Linux makefile 教程 非常详细,且易懂
    cms完整视频教程+源码 孔浩老师 全131讲
    Redis实现简单消息队列
  • 原文地址:https://www.cnblogs.com/riskyer/p/3339468.html
Copyright © 2020-2023  润新知