JQuery播放器代理--IE下支持wma格式
1/**//**
2*
3* Media 代理
4* @param Object p_play:播放器
5*/
6var media_player_proxy = function(p_play){
7 var _play = p_play;
8 var _progress_change;
9 var _sound_complete;
10
11 var progress_change = function(){
12 if(_progress_change){
13 //进度改变事件
14 //lp:已下载百分数; ppr:; ppa:已播放百分数 pt:播放时间; tt:总时间
15 var lp = _play.network.downloadProgress;
16 var ppr;
17 if(_play.playState == 3){
18 var ppa = Number(_play.controls.currentPosition) / Number(_play.currentMedia.duration) * 100;
19 var pt = Number(_play.controls.currentPosition) * 1000;
20 var tt = Number(_play.currentMedia.duration) * 1000;
21 _progress_change(lp,ppr,ppa,pt,tt);
22
23 if(Number(_play.currentMedia.duration - _play.controls.currentPosition) < 0.3){
24
25 if(_sound_complete){
26 _sound_complete();
27 }
28 }
29 }
30 }
31 }
32 //改变路径(私)
33 var change = function(p_url){
34 _play.url = p_url;
35 _play.controls.play();
36 }
37
38 //播放
39 this.play = function(){
40 _play.controls.play();
41 },
42 //改变并播放
43 this.changeAndPlay = function(p_url){
44 change(p_url);
45 _play.controls.play();
46 }
47 //暂停
48 this.pause = function(){
49 _play.controls.pause();
50 },
51 //停止
52 this.stop = function(){
53 _play.controls.stop();
54 },
55 //设置音量
56 this.volume = function(p_value){
57 _play.settings.volume = p_value
58 },
59 //设置进度
60 this.playHead = function(p_num){
61 //p_num 百分比
62 _play.controls.currentPosition = Math.ceil(p_num / 100 * _play.currentMedia.duration);
63 progress_change();
64 },
65 //进度改变事件
66 this.onProgressChange = function(p_handler){
67 _progress_change = p_handler;
68 },
69 //播放完成事件
70 this.onSoundComplete = function(p_handler){
71 _sound_complete = p_handler;
72 },
73 //播放加载事件
74 this.mPlayer = function(p_obj){
75 if(p_obj){
76 p_obj.ready();
77 }
78 window.setInterval(progress_change,100);
79 }
80}
81
82
83var player_proxy = function(){
84 var _datalist = []; //音乐列表
85 var _btn_obj; //按钮对象
86 var _show_state = -1; //-1:没有音乐 0:正在播入 1:暂停中 2:已停止
87 var _progress_change;
88 var _player;
89 var _play_index = -1; //播放序号
90 var _volume = 50; //默认音量
91 var _play_handler;
92 var _is_no_sound = false;
93 var _play_pattern = 2; //播放模式 0:单曲循环; 1:顺序; 2:循环; 3:随机
94 var _data_change_handler; //单乐数据改变事件
95
96 //根据序号播放歌曲
97 var play_index = function(index){
98 if(_datalist.length > 0){
99 var url = _datalist[index]["filepath"];
100 _player.changeAndPlay(url);
101 _play_index = index;
102 if(_play_handler){
103 _play_handler(_datalist[index]);
104 }
105 }
106 }
107
108 //播放第一首
109 var play_first = function(){
110 if(_datalist.length > 0){
111 play_index(0);
112 }
113 }
114
115 //播放下一首
116 var play_next = function(){
117 var n = get_play_index_num();
118 if(n < _datalist.length){
119 play_index(n);
120 }
121 else{
122 play_index(0);
123 }
124 }
125
126 //播放上一首
127 var play_previous = function(){
128 var n = get_play_index_num(true);
129 if(n >= 0){
130 play_index(n);
131 }
132 }
133
134 var show_play_btn = function(){
135 $("#" + _btn_obj["play"]).hide();
136 $("#" + _btn_obj["pause"]).show();
137 $("#" + _btn_obj["stop"]).show();
138 }
139
140 var show_pause_btn = function(){
141 $("#" + _btn_obj["play"]).show();
142 $("#" + _btn_obj["pause"]).hide();
143 $("#" + _btn_obj["stop"]).show();
144 }
145
146 var show_stop_btn = function(){
147 $("#" + _btn_obj["play"]).show();
148 $("#" + _btn_obj["pause"]).hide();
149 }
150
151 //验证Key是否存在
152 var check_key = function(key){
153 for(var i = 0; i < _datalist.length;i++){
154 var item = _datalist[i];
155 if(item.key == key){
156 return true;
157 }
158 }
159 return false;
160 }
161
162 var get_play_index_num = function(is_pre){
163 var i = _play_index;
164 if(is_pre){
165 switch(_play_pattern){
166 case 0:
167 break;
168 case 1:
169 i-=1;
170 break;
171 case 2:
172 i-=1;
173 if(i < 0){
174 i = 0;
175 }
176 play_index(i);
177 break;
178 case 3:
179 i = parseInt(Math.random()*(_datalist.length-1));
180 break;
181 }
182 }
183 else{
184 switch(_play_pattern){
185 case 0:
186 break;
187 case 1:
188 i+=1;
189 break;
190 case 2:
191 i+=1;
192 if(i >= _datalist.length){
193 i = 0;
194 }
195 play_index(i);
196 break;
197 case 3:
198 i = parseInt(Math.random()*(_datalist.length-1));
199 break;
200 }
201 }
202 return i;
203 }
204
205 //控制静音状态
206 this.control_sound = function(p_has){
207 if(p_has == undefined){
208 return _is_no_sound;
209 }
210 _is_no_sound = p_has;
211 if(_is_no_sound){
212 _player.volume(0);
213 }else{
214 _player.volume(_volume);
215 }
216 },
217 //播放进度事件
218 this.on_progress_change = function(fun){
219 if(_progress_change){
220 _progress_change = function(){
221 _progress_change();
222 fun();
223 }
224 }
225 else{
226 _progress_change = fun;
227 }
228 },
229 //获得正在播放歌曲对象
230 this.get_active_music = function(){
231 if(_play_index != -1 && _datalist.length > 0){
232 return _datalist[_play_index];
233 }
234 return null;
235 },
236 //播放
237 this.play = function(p_key){
238 for(var i = 0; i < _datalist.length; i++){
239 if(p_key == _datalist[i].key){
240 play_index(i);
241 }
242 }
243 },
244 this.play_first_music = function(){
245 play_first();
246 },
247 //增加歌曲 必须字段 key: 音乐标识; filepath: 路径; name: 音乐名
248 this.add_data = function(p_key,p_name,p_filepath){
249 var obj = {key:p_key,filepath:p_filepath,name:p_name};
250 var result_obj = [];
251 var is_add = false;
252 if(!check_key(obj.key)){
253 _datalist.push(obj);
254 result_obj.push(obj);
255 is_add = true;
256 }
257 if(_data_change_handler){
258 _data_change_handler(is_add,result_obj);
259 }
260 },
261 //增加歌曲(批量)
262 this.add_dataarr = function(p_obj_arr){
263 var is_add = false;
264 var result_obj = [];
265 for(var i = 0; i < p_obj_arr.length; i++){
266 if(!check_key(p_obj_arr[i].key)){
267 _datalist.push(p_obj_arr[i]);
268 result_obj.push(p_obj_arr[i]);
269 is_add = true;
270 }
271 }
272 if(_data_change_handler){
273 _data_change_handler(is_add,result_obj);
274 }
275 return is_add;
276 },
277 //删除歌曲
278 this.delete_data = function(p_key){
279 var index = -1;
280 for(var i = 0; i < _datalist.length;i++){
281 var item = _datalist[i];
282 if(item.key == p_key){
283 index = i;
284 }
285 }
286 var key = -1;
287 if(index != -1){
288 key = _datalist[index].key;
289 if(_data_change_handler){
290 _data_change_handler(true,[{key:key}],true);
291 }
292 _datalist.splice(index,1);
293 }
294 else{
295 if(_data_change_handler){
296 _data_change_handler(false,{key:key},true);
297 }
298 }
299 },
300 //绑定按钮
301 this.bind_btn = function(obj){
302 if(obj){
303 _btn_obj = obj;
304 $.each(_btn_obj, function(i, n){
305 var ele = $("#" + n);
306 if(ele == undefined){
307 ele = $(n);
308 }
309 ele.click(function(){
310 switch(i){
311 case "play": //播放
312 _player.play();
313 show_play_btn();
314 break;
315 case "pause": //暂停
316 _player.pause();
317 show_pause_btn();
318 break;
319 case "stop": //停止
320 _player.stop();
321 show_stop_btn()
322 break;
323 case "pre": //前一首
324 play_previous();
325 show_play_btn();
326 break;
327 case "next": //下一首
328 play_next();
329 show_play_btn();
330 break;
331 }
332 });
333 });
334 }
335 },
336 //设置音量
337 this.set_volume = function(p_num){
338 if(p_num == undefined){
339 return _volume;
340 }
341 _volume = p_num;
342 _player.volume(_is_no_sound? 0 : _volume);
343 },
344 //设置进度
345 this.set_plan = function(p_num){
346 _player.playHead(p_num);
347 },
348 //播放事件
349 this.set_play_call_back = function(p_fun){
350 _play_handler = p_fun;
351 },
352 //设置列表改变事件
353 this.set_data_change_handler = function(p_fun){
354 if(p_fun){
355 _data_change_handler = p_fun;
356 }
357 },
358 //设置播放模式
359 this.pattern = function(p_pattern){
360 if(p_pattern == undefined){
361 return _play_pattern;
362 }
363 _play_pattern = p_pattern;
364 },
365 //获取列表
366 this.get_datasource = function(){
367 return _datalist;
368 },
369 this.get_player = function(){
370 return _player;
371 },
372 //初始化
373 this.init = function(p_playId,p_play_callback){
374 if($.browser.msie){
375 _player = new media_player_proxy(document.getElementById(p_playId));
376 }
377 else{
378 _player = $("#" + p_playId);
379 }
380 if(p_play_callback){
381 _play_handler = p_play_callback;
382 }
383 if(_progress_change){
384 _player.onProgressChange(_progress_change);
385 }
386 _player.onSoundComplete(function(){
387 var i = get_play_index_num();
388 play_index(i);
389 });
390 if($.browser.msie){
391 _player.mPlayer({
392 ready: function () {
393 if(_play_index == -1){
394 play_first();
395 show_play_btn();
396 }
397 else{
398 show_stop_btn();
399 }
400 }
401 });
402 }
403 else{
404 _player.jPlayer({
405 ready: function () {
406 if(_play_index == -1){
407 play_first();
408 show_play_btn();
409 }
410 else{
411 show_stop_btn();
412 }
413 },
414 swfPath: URL_STATIC+"/media/music"
415 });
416 }
417 }
418}
使用方法:
var player = new player_proxy();
player.bind_btn({//绑定BOTTON
play:"play_btn", //播放
pause:"pause_btn",//暂停
stop:"stop_btn",//停止
pre:"pre_btn",//上一首
next:"next_btn"//下一首
});
//音乐数据格式 [{key:音乐标识, filepath:路径, name:音乐名}]
player.set_data_change_handler(function(issuccess,arr,isdel){ //改变音乐数据后,执行的函数
//issuccess: 是否成功
//arr: 音乐数据改变的列表
//isdel: true为删除数据
});
player.on_progress_change(function(lp,ppr,ppa,pt,tt){ //进步改变后,执行的函数
//lp:已下载百分数; ppr:; ppa:已播放百分数 pt:播放时间; tt:总时间
});
player.init(playId,play_callback); //playId:放置播放器的层ID,IE下的HTML需要加入media player object 如以下HTML; play_callback: 播放歌曲时,执行的函数
/*
<object id="media_player" width="350" height="64" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112"
align="baseline" border="0" standby="Loading Microsoft Windows Media Player components"
type="application/x-oleobject">
<param name="URL" value="">
<param name="autoStart" value="true">
<param name="invokeURLs" value="false">
<param name="playCount" value="100">
<param name="defaultFrame" value="datawindow">
</object>
*/
//除此之外,还提供了以下方法
player.control_sound(p_has); //p_has: true设置静音,false开启声音
player.add_dataarr(obj_arr);//增加歌曲(批量) 音乐数据:数组
转载于:https://www.cnblogs.com/Max-Gan/archive/2009/07/29/1533838.html
JQuery播放器代理--IE下支持wma格式相关推荐
- 把路由器变成音乐播放器和网络收音机,支持摇控
楼主说的太简单了 帮楼主补充一下: rmplayer ---------- 版本 0.0.1 ---------- 内容 --------- 1. 软件目的 使用键盘.遥控器或其它输入设备控制 ...
- Aliplayer 播放器的使用(支持直播,点播、录播,视频播放等功能)
最近公司需要写一个简单的直播H5,作为前端播放器第一选择当然是video.js了.可是样式是在无法忍受,而且有些交互也不太友好.无奈继续寻找更加合适的播放器,阿里的Aliplayer 便是一个不错的选 ...
- 高颜值网易云音乐第三方播放器 YesPlayMusic Mac中文版 支持m1
YesPlayMusic,一款高颜值的第三方网易云播放器,不仅设计精美,播放体验很优秀,而且可以听一些灰色和 VIP 的歌曲,支持网易云账号登录,还可以进行 MV 播放和歌词显示.支持 Unblock ...
- 鸿蒙系统怎样去掉下拉音乐播放器,windows10系统下怎样取消音乐播放器默认播放器...
一位用户反馈自己的windows10系统电脑中,默认音乐播放器是百度音乐,因为自己并不喜欢用百度音乐来播放歌曲,就想将其取消掉.这该如何操作呢?接下来,就随小编看看windows10系统下取消音乐播放 ...
- 全景播放器,免安装支持全景视频
全景图片播放器,同时支持全景视频,可直接拖入页面查看.免安装全景播放器,文件不要大于20M Hpano 3D全景播放器是一款免安装可以720度互动浏览的全景图片查看器,通过拖球形全景图片或视频文件进行 ...
- html mp3默认播放器,Win7系统下设置默认音乐播放器的两种方法
可能很多新手用户不知道Win7系统下怎么设置默认音乐播放器?我们习惯将某一程序设置为默认打开方式,音乐播放器也可以这样子的.一些用户想把酷狗播放器.或者qq音乐设置为默认音乐播放器,只要打开音乐文件, ...
- php avi格式播放,Linux_网页播放器代码全集,1.avi格式代码片断如下:obje - phpStudy...
网页播放器代码全集 1.avi格式 代码片断如下: 2.mpg格式 代码片断如下: 3.smi格式 代码片断如下: 4.rm格式 代码片断如下: 5.wmv格式 代码片断如下: 6.wma格式 放在 ...
- 3 photolemur 样式_macOS下支持RAW格式的照片编辑工具
对于数字摄影爱好者而言,RAW格式拥有无可替代的重要性.这种格式的照片能完整保留相机传感器记录的未经处理.未经压缩的原始数据,让你在后期编辑阶段调整动态范围.色彩和噪点等参数时,拥有更高的自由度. M ...
- linux下播放wma格式,Ubuntu 20.04中使Rhythmbox支持WMA格式文件播放
这是一个麻烦事,可以如下做: 1.安装qmmp,或者deepin-music,跳过这一限制: 2.或者安装soundconverter,进行转换后播放: 3.实现想只用这个软件,就进行尝试安装: su ...
最新文章
- R语言使用lm构建线性回归模型、并将目标变量对数化实战:模型训练集和测试集的残差总结信息(residiual summary)、模型训练(测试)集自由度计算、模型训练(测试)集残差标准误计算
- JAVASE初级笔记
- CentOS6.5挂载windows共享文件夹
- JQuery+ajax+jsonp 跨域访问
- 通过案例对 spark streaming 透彻理解三板斧之三:spark streaming运行机制与架构
- android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...
- P4015 运输问题
- Taro+react开发(7)--控制跳转
- 【Python3网络爬虫开发实战】 1.7.1-Charles的安装
- mysql启动和常用语法实战回顾
- 研究员公开Razer 0day,插入鼠标即可获得Windows管理员权限
- weblogic登录验证被拒绝_腾讯游戏:疑似未成年人登录和支付时需人脸识别验证...
- 生成式对抗网络论文阅读整理
- hustoj 服务器配置
- 全球IP地址分配对应表
- 高等代数 多项式环(第7章)5* 结式与域
- 使用广义α方法(the generalized-α method)求解时变动力学问题
- OGRE关于 Demo_Ocean 例子的分析
- 慧荣SM2246XT、SM2246EN开卡教程 及 固件下载
- uniapp canvas绘图生成海报
热门文章
- 计算机网络实验报告嗅探器,计算机网络实验(Wireshark)
- 第17课 欧耶欧耶 《小学生C++趣味编程》
- Python学习之Python安装
- mysql待办事项表名_Activiti中彻底解决待办事项列表查询复杂、API不友好的设计方案...
- 信息安全工程师笔记-网络安全漏洞防护技术原理与应用
- C++工作笔记-根据父类指针获取子类类型(或不同的对象)
- Java工作笔记-Map的基本用法
- 计算机风格学,由风格学习算法自动生成大规模手写字体
- Linux端口6888被占用怎么解决,zabbix如何监控外部端口的状态?
- 怎么多次调用c语言dll,c-如何从注入到同一程序的另一个.dll中调用...