最近在一网盘项目里烦恼着播放器的问题,经过千辛万苦终于找到一个合适的了,一个Open Source的JS播放器,可以适应多浏览器,太兴奋了,急于与大家分享一下:

地址:http://www.happyworm.com/jquery/jplayer/download.htm

网盘地址:http://u.115.com

下图是播放器的图片,有兴趣的朋友可以上去溜一溜。如果对于网盘里面的JS代码有不明白的地方, 可以随时来发贴。

下面本人所写的一个JPlayer 代理类,大家也可以参考一下:

player proxy Code
  1var player_proxy = function(){
  2    var _datalist = [];    //音乐列表
  3    var _btn_obj;    //按钮对象
  4    var _show_state = -1;    //-1:没有音乐 0:正在播入 1:暂停中 2:已停止
  5    var _progress_change;
  6    var _player;
  7    var _play_index = -1;    //播放序号
  8    var _volume = 50;    //默认音量
  9    var _play_handler;
 10    var _is_no_sound = false;
 11    var _play_pattern = 2; //播放模式 0:单曲循环; 1:顺序; 2:循环; 3:随机
 12    var _data_change_handler;    //单乐数据改变事件
 13    
 14    //根据序号播放歌曲
 15    var play_index = function(index){
 16        if(_datalist.length > 0){
 17            var url = _datalist[index]["filepath"];
 18            _player.changeAndPlay(url);
 19            _play_index = index;
 20            if(_play_handler){
 21                _play_handler(_datalist[index]);
 22            }
 23        }
 24    }
 25
 26    //播放第一首
 27    var play_first = function(){
 28        if(_datalist.length > 0){
 29            play_index(0);
 30        }
 31    }
 32    
 33    //播放下一首
 34    var play_next = function(){
 35        var n = get_play_index_num();
 36        if(n < _datalist.length){
 37            play_index(n);
 38        }
 39        else{
 40            play_index(0);
 41        }
 42    }
 43    
 44    //播放上一首
 45    var play_previous = function(){
 46        var n = get_play_index_num(true);
 47        if(n >= 0){
 48            play_index(n);
 49        }
 50    }
 51    
 52    var show_play_btn = function(){
 53        $("#" + _btn_obj["play"]).hide();
 54        $("#" + _btn_obj["pause"]).show();
 55        $("#" + _btn_obj["stop"]).show();
 56    }
 57    
 58    var show_pause_btn = function(){
 59        $("#" + _btn_obj["play"]).show();
 60        $("#" + _btn_obj["pause"]).hide();
 61        $("#" + _btn_obj["stop"]).show();
 62    }
 63    
 64    var show_stop_btn = function(){
 65        $("#" + _btn_obj["play"]).show();
 66        $("#" + _btn_obj["pause"]).hide();
 67    }
 68    
 69    //验证Key是否存在
 70    var check_key = function(key){
 71        for(var i = 0; i < _datalist.length;i++){
 72            var item = _datalist[i];
 73            if(item.key == key){
 74                return true;
 75            }
 76        }
 77        return false;
 78    }
 79    
 80    var get_play_index_num = function(is_pre){
 81        var i = _play_index;
 82        if(is_pre){
 83            switch(_play_pattern){
 84                case 0:
 85                    break;
 86                case 1:
 87                    i-=1;
 88                    break;
 89                case 2:
 90                    i-=1;
 91                    if(i < 0){
 92                        i = 0;
 93                    }
 94                    play_index(i);
 95                    break;
 96                case 3:
 97                    i = parseInt(Math.random()*(_datalist.length-1));
 98                    break;
 99            }
100        }
101        else{
102            switch(_play_pattern){
103                case 0:
104                    break;
105                case 1:
106                    i+=1;
107                    break;
108                case 2:
109                    i+=1;
110                    if(i >= _datalist.length){
111                        i = 0;
112                    }
113                    play_index(i);
114                    break;
115                case 3:
116                    i = parseInt(Math.random()*(_datalist.length-1));
117                    break;
118            }
119        }
120        return i;
121    }
122    
123    //控制静音状态
124    this.control_sound = function(p_has){
125        if(p_has == undefined){
126            return _is_no_sound;
127        }
128        _is_no_sound = p_has;
129        if(_is_no_sound){
130               _player.volume(0);
131        }else{
132            _player.volume(_volume);
133        }
134    },
135    //播放进度事件
136    this.on_progress_change = function(fun){
137        if(_progress_change){
138            _progress_change = function(){
139                _progress_change();
140                fun();
141            }
142        }
143        else{
144            _progress_change = fun;
145        }
146    },
147    //获得正在播放歌曲对象
148    this.get_active_music = function(){
149        if(_play_index != -1 && _datalist.length > 0){
150            return _datalist[_play_index];
151        }
152        return null;
153    },
154    //播放
155    this.play = function(p_key){
156        for(var i = 0; i < _datalist.length; i++){
157            if(p_key == _datalist[i].key){
158                play_index(i);
159            }
160        }
161    },
162    this.play_first_music = function(){
163        play_first();
164    },
165    //增加歌曲
166    this.add_data = function(p_key,p_name,p_filepath){
167        var obj = {key:p_key,filepath:p_filepath,name:p_name};
168        var result_obj = [];
169        var is_add = false;
170        if(!check_key(obj.key)){
171            _datalist.push(obj);
172            result_obj.push(obj);
173            is_add = true;
174        }
175        if(_data_change_handler){
176            _data_change_handler(is_add,result_obj);
177        }
178    },
179    //增加歌曲(批量)
180    this.add_dataarr = function(p_obj_arr){
181        var is_add = false;
182        var result_obj = [];
183        for(var i = 0; i < p_obj_arr.length; i++){
184            if(!check_key(p_obj_arr[i].key)){
185                _datalist.push(p_obj_arr[i]);
186                result_obj.push(p_obj_arr[i]);
187                is_add = true;
188            }
189        }
190        if(_data_change_handler){
191            _data_change_handler(is_add,result_obj);
192        }
193        return is_add;
194    },
195    //删除歌曲
196    this.delete_data = function(p_key){
197        var index = -1;
198        for(var i = 0; i < _datalist.length;i++){
199            var item = _datalist[i];
200            if(item.key == p_key){
201                index = i;
202            }
203        }
204        var key = -1;
205        if(index != -1){
206            key = _datalist[index].key;
207            if(_data_change_handler){
208                _data_change_handler(true,[{key:key}],true);
209            }
210            _datalist.splice(index,1);
211        }
212        else{
213            if(_data_change_handler){
214                _data_change_handler(false,{key:key},true);
215            }
216        }
217    },
218    //绑定按钮
219    this.bind_btn = function(obj){
220        if(obj){
221            _btn_obj = obj;
222            $.each(_btn_obj, function(i, n){
223                var ele = $("#" + n);
224                if(ele == undefined){
225                    ele = $(n);
226                }
227                ele.click(function(){
228                    switch(i){
229                        case "play":    //播放
230                            _player.play();
231                            show_play_btn();
232                            break;
233                        case "pause":    //暂停
234                            _player.pause();
235                            show_pause_btn();
236                            break;
237                        case "stop":    //停止
238                            _player.stop();
239                            show_stop_btn()
240                            break;
241                        case "pre":        //前一首
242                            play_previous();
243                            show_play_btn();
244                            break;
245                        case "next":    //下一首
246                            play_next();
247                            show_play_btn();
248                            break;
249                    }
250                });
251            }); 
252        }
253    },
254    //设置音量
255    this.set_volume = function(p_num){
256        if(p_num == undefined){
257            return _volume;
258        }
259        _volume = p_num;
260        _player.volume(_is_no_sound? 0 : _volume);
261    },
262    //设置进度
263    this.set_plan = function(p_num){
264        _player.playHead(p_num);
265    },
266    //播放事件
267    this.set_play_call_back = function(p_fun){
268        _play_handler = p_fun;
269    },
270    //设置列表改变事件
271    this.set_data_change_handler = function(p_fun){
272        if(p_fun){
273            _data_change_handler = p_fun;
274        }
275    },
276    //设置播放模式
277    this.pattern = function(p_pattern){
278        if(p_pattern == undefined){
279            return _play_pattern;
280        }
281        _play_pattern = p_pattern;
282    },
283    //获取列表
284    this.get_datasource = function(){
285        return _datalist;
286    },
287    this.get_player = function(){
288        return _player;
289    },
290    //初始化
291    this.init = function(p_playId,p_play_callback){
292        _player = $("#" + p_playId);
293        if(p_play_callback){
294            _play_handler = p_play_callback;
295        }
296        if(_progress_change){
297            _player.onProgressChange(_progress_change);
298        }
299        _player.onSoundComplete(function(){
300            var i = get_play_index_num();
301            play_index(i);
302        });
303        _player.jPlayer({
304            ready: function () {
305                if(_play_index == -1){
306                   play_first();
307                   show_play_btn();
308                }
309                else{
310                    show_stop_btn();
311                }
312            },
313            swfPath: "xxxxx"    //这里是jplayer falsh所在目录
314        });
315    }
316}

使用方法可以上去115网盘的播放器参考一下,有this在前面是公开的方法,使用过JS的朋友,如何是创建与使用一个类就不用再提了吧。

转载于:https://www.cnblogs.com/Max-Gan/archive/2009/06/10/1500788.html

JQuery 开源播放器 JPlayer相关推荐

  1. 基于jQuery的网页影音播放器jPlayer的基本使用教程

    原文地址:http://www.jb51.net/article/80655.htm jPlayer简介: 想在网页上播放背景音乐,不想用html标签的方式,因为那样只有音乐全部下载完以后才能播放,还 ...

  2. 开源播放器 ijkplayer (一) :使用Ijkplayer播放直播视频

    1.ijkplayer 编码 IjkPlayer支持硬解码和软解码. 软解码时不会旋转视频角度这时需要你通过onInfo的what == IMediaPlayer.MEDIA_INFO_VIDEO_R ...

  3. 开源播放器 Banshee 发布 1.0 beta 2

    Banshee也是个很是不错的开源播放器,同时也是SuSE的内置播放器,默许支持靠山播放,消息区域告诉,可以快速跳过以后曲目,评分等等,也支持全局热键,媒体库支持音频和视频. 新版本提供了对网络视频和 ...

  4. 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)...

    前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...

  5. jQuery幻灯片播放器插件

    jQuery幻灯片播放器插件 在线演示 本地下载 posted @ 2018-12-01 22:26 栖息地 阅读(...) 评论(...) 编辑 收藏

  6. qq浏览器开源播放器_使用极简的开源Web浏览器Min浏览网络

    qq浏览器开源播放器 世界是否需要其他Web浏览器? 尽管拥有多种浏览器供选择的日子已经一去不复返了,但是仍然有很多人在开发可以帮助我们使用Web的新应用程序. Min是这些新型浏览器之一. 顾名思义 ...

  7. Mark几款优秀的基于MPC开源播放器的源码供参考.

    SEP 11TH, 2016 2:00 PM MPC(Media Player Classic)是一款基于DirectShow由一名匈牙利大佬Gabest开发的一款开源播放器. 由于该项目基于GPL源 ...

  8. jQuery歌词播放器

    jQuery歌词播放器 界面美观支持同步歌词课随意调整进度条和声音大小 需要引用的插件: 编写代码: <style>部分: 歌词部分: 播放器部分: 运行效果  

  9. 播放器JPlayer的使用及遇到的问题

    原文地址:http://blog.csdn.net/z69183787/article/details/8178656?_t_t_t=0.5149982699228508 jPlayer是一个用于控制 ...

最新文章

  1. 越阳刚的男人越容易生女孩
  2. BPSK,QPSK,2FSK,16QAM,64QAM信号在高斯信道与瑞利信道下的误码率性能仿真
  3. Acwing第 29 场周赛【完结】
  4. 问题“The connection to the server....:6443 was refused - did you specify the right host or port?”的处理!
  5. id,clientid 和 uniqueid 的区别
  6. 在移动设备中创建ArcGIS API for JavaScript地图应用程序
  7. auto和decltype的用法总结
  8. eclipse写javaee的时候js文件新增函数找不到
  9. 【中国农业银行风险管理部总经理 田继敏】筑牢IT风险第二道防线 保障银行信息科技安全
  10. 用telnet逛bbs
  11. java老九_【老九】【Java】小议转义字符
  12. 纯CSS3 3D图片向上翻转渐隐消失动画DEMO演示
  13. 2022到2023基于java+微信小程序毕业设计课题参考
  14. [计算机视觉]-经典网络inception v1、v2、v3、v4核心工作详解及总结
  15. 我国计算机领域研究的状况文档,计算机应用现状与发展趋势.doc
  16. 免费下载各种json包的网址
  17. 神经网络实例Python
  18. cad面积累计lisp怎么用_求一个cad的lisp:一次计算多个封闭线框的面积,并显示每个面积和总面积...
  19. WAYOS版本OEM,替换WAYOS的LOGO,江边小鸟杰作啊
  20. 流放之路服务器连接中断,流放之路卡顿及频繁掉线解决方案大全

热门文章

  1. 酷派品牌重塑,任重而道远
  2. 毕业设计之 - 题目:基于深度学习的手势识别实现
  3. 怀孕初期症状护理大全
  4. oracle中sign函数详解
  5. python标识符其他部分有哪些组成_Python基础知识
  6. 如何快速进入人工智能NLP/CV热门领域
  7. 让Linux系统崩溃的命令
  8. 修模界的“神器”模方 | 视图裁切、底灰修复、区域选取、联动质检——让修模更高效
  9. 事情很严重,卡巴斯基很生气
  10. echarts初始化仪表盘(gauge)