diff --git a/dist/artplayer-plugin-flv.js b/dist/artplayer-plugin-flv.js new file mode 100644 index 000000000..db794f7a9 --- /dev/null +++ b/dist/artplayer-plugin-flv.js @@ -0,0 +1,8 @@ +/*! + * artplayer-plugin-flv.js v1.0.5 + * Github: https://github.com/zhw2590582/ArtPlayer#readme + * (c) 2017-2018 Harvey Zack + * Released under the MIT License. + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t["artplayer-plugin-flv"]={})}(this,function(t){"use strict";var r=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")};function o(t,e){for(var n=0;n"),["delay","number","width","height","column"].forEach(function(t){e.errorHandle("number"==typeof e.option[t],"The '".concat(t,"' is not a number"))}),this.option.delay=d(i,10,1e3),this.option.number=d(r,10,1e3),this.option.width=d(u,10,1e3),this.option.height=d(a,10,1e3),this.option.column=d(s,1,1e3),this}},{key:"inputChange",value:function(){var e=this,t=this.option.delay,n=["video/mp4","audio/ogg","video/webm"],o=this.option.fileInput.files[0];if(o){this.errorHandle(n.includes(o.type),"Only file types are supported: ".concat(n.toString(),", but got ").concat(o.type));var i=URL.createObjectURL(o);this.videoUrl=i,this.file=o,this.emit("file",this.file),this.video.src=i,p(t).then(function(){e.emit("video",e.video)}).catch(function(t){e.emit("error",t.message),console.error(t)})}}},{key:"start",value:function(){var n=this,t=this.option,o=t.width,i=t.height,r=t.number,u=t.delay;this.density=r/this.video.duration,this.errorHandle(this.file&&this.video,"Please select the video file first"),this.errorHandle(!this.processing,"There is currently a task in progress, please wait a moment..."),this.errorHandle(this.density<=1,"The preview density cannot be greater than 1, but got ".concat(this.density));var e=this.creatScreenshotDate(),a=this.creatCanvas(),s=a.getContext("2d");this.emit("canvas",a);var c,l=e.map(function(t,e){return function(){return n.video.currentTime=t.time,p(u).then(function(){s.drawImage(n.video,t.x,t.y,o,i),a.toBlob(function(t){n.thumbnailUrl&&URL.revokeObjectURL(n.thumbnailUrl),n.thumbnailUrl=URL.createObjectURL(t),n.emit("update",n.thumbnailUrl,(e+1)/r)})}).catch(function(t){console.error(t)})}});return this.processing=!0,(c=l,c.reduce(function(t,e){return t.then(e)},Promise.resolve())).then(function(){return p(2*u).then(function(){n.processing=!1,n.emit("done")}).catch(function(t){n.processing=!1,n.emit("error",t.message),console.error(t)})}).catch(function(t){n.processing=!1,n.emit("error",t.message),console.error(t)})}},{key:"creatScreenshotDate",value:function(){for(var t=this.option,e=t.number,n=t.width,o=t.height,i=t.column,r=this.video.duration/e,u=[r];u.length"),["delay","number","width","height","column"].forEach(function(e){t.errorHandle("number"==typeof t.option[e],"The '".concat(e,"' is not a number"))}),this.option.delay=d(i,10,1e3),this.option.number=d(r,10,1e3),this.option.width=d(a,10,1e3),this.option.height=d(s,10,1e3),this.option.column=d(u,1,1e3),this}},{key:"inputChange",value:function(){var e=this.option.fileInput.files[0];this.loadVideo(e)}},{key:"loadVideo",value:function(e){var t=this,n=this.option.delay;if(e){var o=this.video.canPlayType(e.type);this.errorHandle("maybe"===o||"probably"===o,"Playback of this file format is not supported: ".concat(e.type));var i=URL.createObjectURL(e);this.videoUrl=i,this.file=e,this.emit("file",this.file),this.video.src=i,p(n).then(function(){t.emit("video",t.video)}).catch(function(e){t.emit("error",e.message),console.error(e)})}}},{key:"start",value:function(){var o=this,e=this.option,i=e.width,r=e.height,a=e.number,s=e.delay;this.density=a/this.video.duration,this.errorHandle(this.file&&this.video,"Please select the video file first"),this.errorHandle(!this.processing,"There is currently a task in progress, please wait a moment..."),this.errorHandle(this.density<=1,"The preview density cannot be greater than 1, but got ".concat(this.density));var t=this.creatScreenshotDate(),u=this.creatCanvas(),l=u.getContext("2d");this.emit("canvas",u);var n,c=t.map(function(e,n){return function(){return o.video.currentTime=e.time,new Promise(function(t){p(s).then(function(){l.drawImage(o.video,e.x,e.y,i,r),u.toBlob(function(e){o.thumbnailUrl&&URL.revokeObjectURL(o.thumbnailUrl),o.thumbnailUrl=URL.createObjectURL(e),o.emit("update",o.thumbnailUrl,(n+1)/a),t()})}).catch(function(e){console.error(e)})})}});return this.processing=!0,(n=c,n.reduce(function(e,t){return e.then(t)},Promise.resolve())).then(function(){return p(2*s).then(function(){o.processing=!1,o.emit("done")}).catch(function(e){o.processing=!1,o.emit("error",e.message),console.error(e)})}).catch(function(e){o.processing=!1,o.emit("error",e.message),console.error(e)})}},{key:"creatScreenshotDate",value:function(){for(var e=this.option,t=e.number,n=e.width,o=e.height,i=e.column,r=this.video.duration/t,a=[r];a.length=Number(n)});return r?r.insertAdjacentElement("beforebegin",e):x(t,e),e}function It(t,e,n){return t.style[e]=n,t}function $(e,n){return Object.keys(n).forEach(function(t){It(e,t,n[t])}),e}function P(t,e){var n=!(2").replace(/\{\\([ibu])1\}/g,"<$1>").replace(/\{([ibu])\}/g,"<$1>").replace(/\{\/([ibu])\}/g,"").replace(/(\d\d:\d\d:\d\d),(\d\d\d)/g,"$1.$2").concat("\r\n\r\n"))}function L(t){return URL.createObjectURL(new Blob([t],{type:"text/vtt"}))}function _(t,e){var n=document.createElement("a");It(n,"display","none"),n.href=t,n.download=e,document.body.appendChild(n),n.click(),document.body.removeChild(n)}var j=Object.freeze({ArtPlayerError:y,errorHandle:Wt,clamp:qt,getExt:Dt,secondToTime:Ht,sleep:Ft,debounce:E,isObject:g,isElement:b,mergeDeep:w,append:x,remove:function(t){return t.parentNode.removeChild(t)},insertByIndex:k,setStyle:It,setStyles:$,getStyle:P,sublings:T,inverseClass:R,tooltip:O,srtToVtt:C,vttToBlob:L,downloadImage:_});function M(t,e,n){if("string"===n){if(""===e.trim())throw new y("".concat(t.join(".")," can not be empty"));return!0}if(e instanceof Element)return!0;throw new y("".concat(t.join(".")," require 'string' or 'Element' type, but got '").concat(n,"'"))}var A={container:{validator:M,required:!0},url:{type:"string",required:!0,validator:function(t,e,n){if("string"!==n)throw new y("".concat(t.join(".")," required 'string' type."));if(""===e.trim())throw new y("".concat(t.join(".")," can not be empty"));return!0}},poster:"string",title:"string",type:{type:"string"},mimeCodec:"string",theme:"string",volume:"number",isLive:"boolean",mse:"boolean",muted:"boolean",autoplay:"boolean",autoSize:"boolean",loop:"boolean",playbackRate:"boolean",aspectRatio:"boolean",screenshot:"boolean",setting:"boolean",hotkey:"boolean",pip:"boolean",mutex:"boolean",fullscreen:"boolean",fullscreenWeb:"boolean",plugins:{type:"array",child:{type:"function"}},whitelist:{type:"array",child:{type:"string|function|regexp"}},layers:{type:"array",child:{type:"object|function",disable:"boolean",name:"string",index:"number",html:M,style:"object",click:"function"}},contextmenu:{type:"array",child:{type:"object|function",disable:"boolean",name:"string",index:"number",html:M,style:"object",click:"function"}},quality:{type:"array",child:{default:"boolean",name:"string",url:"string"}},controls:{type:"array",child:{type:"object|function",disable:"boolean",name:"string",index:"number",html:M,style:"object",click:"function",position:function(t,e){return["top","left","right"].includes(e)}}},highlight:{type:"array",child:{type:"object",time:"number",text:"string"}},thumbnails:{type:"object",child:{type:"object",url:"string",number:"number",width:"number",height:"number",column:"number"}},subtitle:{type:"object",child:{type:"object",url:"string",style:"object"}},moreVideoAttr:"object",icons:"object",customType:"object",lang:"string"},Ut={mimeCodec:{mp4:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',webm:'video/webm; codecs="vorbis, vp8"',ts:'video/mp2t; codecs="avc1.42E01E, mp4a.40.2"'},mse:{mediaSource:{propertys:["activeSourceBuffers","duration","readyState","sourceBuffers"],methods:["addSourceBuffer","endOfStream","removeSourceBuffer","clearLiveSeekableRange","setLiveSeekableRange"],events:["sourceclose","sourceended","sourceopen"]},sourceBuffer:{propertys:["mode","updating","buffered","timestampOffset","audioTracks","videoTracks","textTracks","appendWindowStart","appendWindowEnd","trackDefaults"],methods:["appendBuffer","appendStream","abort","remove"],events:["abort","error","update","updateend","updatestart"]},sourceBufferList:{propertys:["length"],events:["addsourcebuffer","removesourcebuffer"]}},video:{propertys:["audioTracks","autoplay","buffered","controller","controls","crossOrigin","currentSrc","currentTime","defaultMuted","defaultPlaybackRate","duration","ended","error","loop","mediaGroup","muted","networkState","paused","playbackRate","played","preload","readyState","seekable","seeking","src","startDate","textTracks","videoTracks","volume"],methods:["addTextTrack","canPlayType","load","play","pause"],events:["abort","canplay","canplaythrough","durationchange","emptied","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting"]}},z=function t(e){var n=this;Bt(this,t);var i=e.option.whitelist;this.userAgent=window.navigator.userAgent,this.isMobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(this.userAgent),this.state=!this.isMobile||i.some(function(t){var e=!1;switch(f.kindOf(t)){case"string":e=-1\n \n \n ',this.$player=this.$container.querySelector(".artplayer-video-player"),this.$video=this.$container.querySelector(".artplayer-video")}},{key:"destroy",value:function(t){t?this.$container.innerHTML="":this.$player.classList.add("artplayer-destroy")}}]),n}(),W={"zh-cn":{"About author":"关于作者","Video info":"视频统计信息",Close:"关闭","Video load failed":"视频加载失败",Volume:"音量",Play:"播放",Pause:"暂停",Rate:"速度",Mute:"静音",Flip:"视频翻转",Horizontal:"水平",Vertical:"垂直",Reconnect:"重新连接","Hide subtitle":"隐藏字幕","Show subtitle":"显示字幕","Hide danmu":"隐藏弹幕","Show danmu":"显示弹幕","Show setting":"显示设置","Hide setting":"隐藏设置",Screenshot:"截图","Play speed":"播放速度","Aspect ratio":"画面比例",Default:"默认",Normal:"正常","Switch video":"切换","Switch subtitle":"切换字幕",Fullscreen:"全屏","Exit fullscreen":"退出全屏","Web fullscreen":"网页全屏","Exit web fullscreen":"退出网页全屏","Mini player":"迷你播放器"},"zh-tw":{"About author":"關於作者","Video info":"影片統計訊息",Close:"關閉","Video load failed":"影片載入失敗",Volume:"音量",Play:"播放",Pause:"暫停",Rate:"速度",Mute:"靜音",Flip:"影片翻轉",Horizontal:"水平",Vertical:"垂直",Reconnect:"重新連接","Hide subtitle":"隱藏字幕","Show subtitle":"顯示字幕","Show setting":"顯示设置","Hide setting":"隱藏设置","Hide danmu":"隱藏彈幕","Show danmu":"顯示彈幕",Screenshot:"截圖","Play speed":"播放速度","Aspect ratio":"畫面比例",Default:"默認",Normal:"正常","Switch video":"切換","Switch subtitle":"切換字幕",Fullscreen:"全屏","Exit fullscreen":"退出全屏","Web fullscreen":"網頁全屏","Exit web fullscreen":"退出網頁全屏","Mini player":"迷你播放器"}},q=function(){function e(t){Bt(this,e),this.art=t,this.init()}return r(e,[{key:"init",value:function(){this.language=W[this.art.option.lang.toLowerCase()]||{}}},{key:"get",value:function(t){return this.language[t]||t}},{key:"update",value:function(t){W=w(W,t),this.init()}}]),e}();function Nt(e,t){var n=e.option,i=e.notice,r=e.template.$video;Object.defineProperty(t,"screenshot",{value:function(){try{var t=function(){var t=document.createElement("canvas");t.width=r.videoWidth,t.height=r.videoHeight,t.getContext("2d").drawImage(r,0,0);var e=t.toDataURL("image/png");return _(e,"".concat(n.title||"artplayer","_").concat(Ht(r.currentTime),".png")),e}();e.emit("screenshot",t)}catch(t){i.show(t),console.warn(t)}}})}var Vt=n(function(t){var o,e,n,i,r,a;o="undefined"!=typeof window&&void 0!==window.document?window.document:{},e=t.exports,n="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,i=function(){for(var t,e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n=0,i=e.length,r={};n