canvas 视频音乐播放器

canvas 视频音乐播放器


var play_nor_img_path = 'images/play_btn_n.png'; //播放按钮 正常时   60x60 px
var play_sec_img_path = "images/play_btn_s.png";//播放按钮 选中时
var play_clc_img_path = "images/play_btn_c.png";//播放按钮 单击时
var pause_nor_img_path = 'images/pause_btn_n.png';//暂停按钮 正常时
var pause_sec_img_path = "images/pause_btn_s.png";//暂停按钮 选中时
var pause_clc_img_path = "images/pause_btn_c.png";//暂停按钮 单击时
var main_bg = "images/main_UI_bg.png";  //背景图 1920x930 px;
var logo ="images/logo.webm";
var logop;
var pause_icon;
var songTime;
var nowSongTime;
var lunt_update = false;function player(path=""){window.audio=[]; var mobj;var isMovie = getFiletype(path);window.audio.isMovie = isMovie;//获取对象LEFT 总宽度function getpos(e){var obj = e;var left = obj.offsetLeft;while(obj = obj.offsetParent){left+= obj.offsetLeft;}return left;}if(isMovie == false){ //是否视频  可以改为自动判断拓展名 mobj = new Audio(path); logop = document.createElement("video");document.body.appendChild(logop);logop.style.display="none";logop.src=logo;logop.play();window.setInterval(function(){if(logop.ended == true){logop.play();}},100);}else{var mobj_style="display:none;"mobj = document.createElement("video");document.body.appendChild(mobj);mobj.setAttribute("style",mobj_style);mobj.src=path;}audio.id=mobj;setWindow();var count = 0;var inc_lunt=document.getElementById("inc_lunt");var main_lunt = document.getElementById("main_lunt");mobj.play();// 设置播放按钮if(mobj.ended == true || mobj.paused == true){play_icon.style.background="url('"+play_nor_img_path+"')"} else {play_icon.style.background="url('"+pause_nor_img_path+"')"}//获取目标参数;//手动设置播放进度main_lunt.onclick = function (e=window.event){ //取得单位位置所处时间 乘以 鼠标所在相对于进度条的位置console.info(e.clientX+","+e.clientY+":"+getInc_pos(songTime,700,e.clientX - getpos(inc_lunt)));inc_lunt.style.width = (e.clientX - inc_lunt.offsetLeft)+"px";mobj.currentTime =getInc_pos(songTime,700,e.clientX - getpos(inc_lunt));}mobj.addEventListener("play",function (){start_update_lunt()//循环绘制视频var t3 = window.setInterval(function (){if(mobj.ended == true || mobj.paused == true){ //播放停止时移除计时器clearInterval(t3);}else{try{if(window.audio.isMovie == false){window.audio.rect.drawImage(logop,0,0,900,490); //绘制一帧}else {window.audio.rect.drawImage(mobj,0,0,900,490); //绘制一帧}}catch(e){console.error(e.message);//报错 }}},100);},false);//player 代码结束
}
function setWindow(){//设置窗口 及UIvar musicWinObj = document.getElementsByClassName("music_win")[0];var nodeValue="";nodeValue += "position: absolute;";nodeValue += "width: 900px;";nodeValue += "height:550px;";nodeValue += "margin-top: -275px;";nodeValue += "margin-left: -450px;";nodeValue += "left: 50%;";nodeValue += "top:50%;";nodeValue += "background:#C3C3C3; z-index:1";nodeValue += "";musicWinObj.setAttribute("style",nodeValue);var h_data='';h_data += '<div style="position: absolute; width: 900px;height: 60px; background: #F0F0F0;bottom: 0px; margin-left: -450px; left:50%;">';h_data += '<div style="position: absolute; width: 120px; height: 60px; margin-top: -30px;  top:50%;">';h_data += '<div id="play_icon" style=" position: absolute; width: 60px; height: 60px;margin-left: -30px;left:50%; margin-top: -30px;  top:50%;"></div><!--播放按钮-->';h_data += '</div><!--播放按钮层 -->';h_data += '<div id="main_lunt" style="width: 700px;height: 10px; border: #000000 1px solid; margin-left: -350px; left:55%;position: absolute; margin-top: -5px; top:50%;">';h_data += '<div id="inc_lunt" style="height: 10px; background: #000000;left:0%;position: absolute; margin-top: -5px; top:50%;"></div><!--动态进度条-->';h_data += '</div><div style="border-radius:90deg;"></div><!--进度条-->';h_data += '</div>';   musicWinObj.innerHTML=h_data;//创建视频绘画区var vid_win = document.createElement("canvas");var vid_win_style = "width: 900px; height: 490px; position:relative;  margin-left: -450px; top: 0px; left: 50%; background: #000000;";vid_win.setAttribute("style",vid_win_style);vid_win.style.display="block";musicWinObj.appendChild(vid_win);vid_win.width="900";vid_win.height="490";window.audio.rect = vid_win.getContext("2d"); //取得绘图上下文//设置播放按钮play_icon = document.getElementById("play_icon");play_icon.style.background="url('"+play_nor_img_path+"')"var main_bg_style = '';main_bg_style +='position:absolute; width:1920px; height:960px; margin-left:-960px; left:50%; margin-top:-480px; top:50%; z-index:0';//创建背景区var main_bg_win = document.createElement("div");document.body.appendChild(main_bg_win); main_bg_win.setAttribute("style",main_bg_style);main_bg_win.style.background="url('"+main_bg+"')";vid_win.ondblclick =function (){  //双击绘图层 canvas 最大化if(main_bg_win.style.display != "none" ){main_bg_win.style.display = "none";var full_scr_style = "width: 1920px; height: 960px; position:absolute;  margin-left: -960px; margin-top: -475px; top: 50%; left: 50%; background: #000000; display:block;z-index:20";vid_win.setAttribute("style",full_scr_style);}else{main_bg_win.style.display = "block";vid_win.setAttribute("style",vid_win_style);}}//事件绑定   移入移出事件play_icon.onmousemove=function (){if(audio.id.ended == true || audio.id.paused == true){play_icon.style.background="url('"+play_sec_img_path+"')"} else {play_icon.style.background="url('"+pause_sec_img_path+"')"}}play_icon.onmouseover=function (){if(audio.id.ended == true || audio.id.paused == true){play_icon.style.background="url('"+play_sec_img_path+"')"} else {play_icon.style.background="url('"+pause_sec_img_path+"')"}}play_icon.onmouseout=function (){if(audio.id.ended == true || audio.id.paused == true){play_icon.style.background="url('"+play_nor_img_path+"')"} else {play_icon.style.background="url('"+pause_nor_img_path+"')"}}//播放暂停及图标设置play_icon.onmousedown=function(){  if(audio.id.ended == true || audio.id.paused == true){play_icon.style.background="url('"+play_clc_img_path+"')"audio.id.play();start_update_lunt();} else {play_icon.style.background="url('"+pause_clc_img_path+"')"audio.id.pause();}}play_icon.onmouseup=function(){if(audio.id.ended == true || audio.id.paused == true){play_icon.style.background="url('"+play_nor_img_path+"')"} else {play_icon.style.background="url('"+pause_nor_img_path+"')"}}}
function getInc_pos(maxnum,max_t,pos){ //进度条比例计算return pos*(maxnum/max_t);
}function getInc_pos_f(maxnum,max_t,pin){ //没有用的 函数return pin*(max_t/maxnum);
}
function start_update_lunt(){if(lunt_update == false){lunt_update = true;var t = setInterval(function(timeV=t){songTime = window.audio.id.duration;nowSongTime = window.audio.id.currentTime;inc_lunt.style.width = getInc_pos(100,songTime,nowSongTime)+"%"; //设置进度条if(window.audio.id.ended == true){lunt_update = false;console.error("end!");clearInterval(t);//停止时移除定时器}       },100)}
}function getFiletype(str_path){/*var end5 = str_path.substr(str_path.length-6,str_path.length);console.info(end5);var pos = end5.indexOf(".");console.info(pos);var end5len = end5.length;console.info(end5len);var type = end5.substr(pos,end5len-1);console.info(type);*/var pos = str_path.indexOf(".");var str_path_len = str_path.length;var type = str_path.substr(pos,str_path_len-1);console.log(type);var video = new Array(10);var music = new Array(10);video = ["mp4","avi","3gp","webm","mkv","mpg","wmv","vob","flv"];music = ["mp3","wav","ogg","m4a","amr","m4r","acc","wave","flac"];for(var i =0;i<10;i++){if(type == "."+video[i]){return true;}if(type == "."+music[i]){return false;}}return false;
}

posted @ 2019-01-02 12:13 栖息地 阅读(...) 评论(...) 编辑 收藏

canvas 视频音乐播放器相关推荐

  1. C++ QT视频音乐播放器

     程序示例精选 C++/QT视频音乐播放器 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对<<C++/QT视频音乐播放器>>编写代 ...

  2. html制作在线视频音乐播放器,用html5制作音乐播放器,这3款就足够了!

    用HTML5结合Jquery做一个简易版的音乐播放器 代码展示: 三生草 var sum = 1; function ssss(a) { var s = document.getElementById ...

  3. html音乐播放器 频谱,HTML5 Canvas 实现简易 绘制音乐环形频谱图

    0.启发 在B站我们有很多的小伙伴们应该都看到过用AE做的可视化音乐播放器播放音乐的视频,看着特别酷炫带感有木有. B站截图 B站截图 B站截图 所以今天我就用 Canvas 做个简单 环形频谱图. ...

  4. java swing实现的简单音乐播放器源码附带视频指导教程

    大家好,今天给大家演示一下由Java swing实现的一款简单的音乐播放器,该项目实现了添加音乐.播放音乐.暂停.停止,快退快进.歌词载入等功能,功能相对比较丰富,是Java初学者学习参考的很好资料, ...

  5. iOS主题更换、音乐播放器、栏目管理、上传视频封面等源码

    iOS精选源码 主题更换库ThemeStyleTools ios 上传视频选择视频封面(videoCoverController) 网络音乐播放器SCMusic(适配iOS11) OpenGL DEM ...

  6. css3音乐播放器,CSS3-自定义视频与音乐播放器!

    今天说一下自定义视频和音乐播放器!直接先看看完成后的效果图把! 视频: video.jpg 音乐: 音乐.jpg 哈哈,是不是觉得太难看了,根本没心情往下继续看了?那就对了.我也觉得难看,但是重点来了 ...

  7. html乐谱播放器,html5 canvas音谱可视化mp3音乐播放器代码

    特效描述:html5 canvas 音谱可视化 mp3音乐 播放器代码.html5 canvas通过AudioContext对获取audio标签播放的音域和音高,调用js绘制相应高度的矩形或线条. 代 ...

  8. iOS多种刷新样式、音乐播放器、仿抖音视频、旅游App等源码

    iOS精选源码 企业级开源项目,模仿艺龙旅行App 3D立体相册,可以旋转的立方体 横竖屏切换工具,使用陀螺仪检测手机设备方向,锁屏状- Swift版Refresh(可以自定义多种样式)架构方面有所优 ...

  9. linux命令音乐视频合并,Linux下基于命令行的音乐播放器 (1)

    按照同事的话说,我是一个十足的命令控. 利用最近项目通宵发布的空闲时间中,写了一个命令行下的音乐播放器,以满足我在linux命令下的需求. 播放器利用技术: Python+GST(http://gst ...

最新文章

  1. Appium官网Introduction
  2. paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控...
  3. sql中like带参数的写法
  4. 高性能分布式计算与存储系统设计概要——暨2012年工作3年半总结
  5. Redis命令——发布订阅
  6. 《javascript高级程序设计》笔记:Function类型
  7. IOS15全屏滑动返回
  8. java语言中的标识符_Java语言基本语法(一)————关键字标识符(Java语言标识符命名规范Java语言的包名、类名、接口名、变量名、函数名、常量名命名规则 )...
  9. webapi自宿主设置本地端口使用https协议
  10. transition过渡的趣玩
  11. 【不了解你就OUT了】云原生基本原则
  12. 调用外部程序处理文件_Python使用内置方法、模块调用外部命令
  13. Python之网络编程(基于tcp实现远程执行命令)
  14. python反编译class文件_反编译java class文件
  15. 计算机在高分子材料与工程中的应用,计算机技术在高分子材料工程中的应用.doc...
  16. linux脚本两个分号,Linux Shell中各种分号和括号的用法总结
  17. 将vtt字幕转成srt
  18. 使用 Abp.Zero 搭建第三方登录模块(四):微信小程序开发
  19. 笔记本键盘失灵,外接键盘不行,只有无线鼠标能用【完美解决】!
  20. C++计算行列式(函数)

热门文章

  1. 有位传奇大佬,自杀了...
  2. 微信小程序————搜索框获取本地缓存搜索记录
  3. Java中有哪些集合,集合中有哪些类?
  4. Java笔记(六)——类和对象(上) 类的定义 / 初始化 / toString
  5. Pr 2019 快速入门(2)
  6. 计算机中文字底纹咋操作,word文档中的如何添加文字背景? -电脑资料
  7. 一年一度的双十一你错了吗?
  8. android电子市场!斗鱼直播Android开发二面被刷,大厂面试题汇总
  9. ubuntu上鼠标出现十字架解决方案
  10. 微信H5中禁止分享好友及分享到朋友圈的方法