| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 | 
							- <template>
 
-   <div id="jessibuca" style="width: auto; height: auto">
 
-     <div id="container" ref="container" style="width: 100%; height: 10rem; background-color: #000" @dblclick="fullscreenSwich">
 
-       <div class="buttons-box" id="buttonsBox">
 
-         <div class="buttons-box-left">
 
-           <i v-if="!playing" class="iconfont icon-play jessibuca-btn" @click="playBtnClick"></i>
 
-           <i v-if="playing" class="iconfont icon-pause jessibuca-btn" @click="pause"></i>
 
-           <i class="iconfont icon-stop jessibuca-btn" @click="destroy"></i>
 
-           <i v-if="isNotMute" class="iconfont icon-audio-high jessibuca-btn" @click="jessibuca.mute()"></i>
 
-           <i v-if="!isNotMute" class="iconfont icon-audio-mute jessibuca-btn" @click="jessibuca.cancelMute()"></i>
 
-         </div>
 
-         <div class="buttons-box-right">
 
-           <span class="jessibuca-btn">{{kBps}} kb/s</span>
 
- <!--          <i class="iconfont icon-file-record1 jessibuca-btn"></i>-->
 
- <!--          <i class="iconfont icon-xiangqing2 jessibuca-btn" ></i>-->
 
-           <i class="iconfont icon-camera1196054easyiconnet jessibuca-btn" @click="jessibuca.screenshot('截图','png',0.5)" style="font-size: 1rem !important"></i>
 
-           <i class="iconfont icon-shuaxin11 jessibuca-btn" @click="playBtnClick"></i>
 
-           <i v-if="!fullscreen" class="iconfont icon-weibiaoti10 jessibuca-btn" @click="fullscreenSwich"></i>
 
-           <i v-if="fullscreen" class="iconfont icon-weibiaoti11 jessibuca-btn" @click="fullscreenSwich"></i>
 
-         </div>
 
-     </div>
 
-     </div>
 
-   </div>
 
- </template>
 
- <script>
 
- export default {
 
-     name: 'jessibuca',
 
-     data() {
 
-         return {
 
-           jessibuca: null,
 
-           playing: false,
 
-           isNotMute: false,
 
-           quieting: false,
 
-           fullscreen: false,
 
-           loaded: false, // mute
 
-           speed: 0,
 
-           performance: "", // 工作情况
 
-           kBps: 0,
 
-           btnDom: null,
 
-           videoInfo: null,
 
-           volume: 1,
 
-           rotate: 0,
 
-           vod: true, // 点播
 
-           forceNoOffscreen: false,
 
-         };
 
-     },
 
-     props: ['videoUrl', 'error', 'hasAudio', 'height'],
 
-     mounted () {
 
-       window.onerror = (msg) => {
 
-         // console.error(msg)
 
-       };
 
-       let paramUrl = decodeURIComponent(this.$route.params.url)
 
-        this.$nextTick(() =>{
 
-          let dom = document.getElementById("container");
 
-          dom.style.height = (9/16 ) * dom.clientWidth + "px"
 
-           if (typeof (this.videoUrl) == "undefined") {
 
-             this.videoUrl = paramUrl;
 
-           }
 
-          this.btnDom = document.getElementById("buttonsBox");
 
-           console.log("初始化时的地址为: " + this.videoUrl)
 
-          this.play(this.videoUrl)
 
-         })
 
-     },
 
-     watch:{
 
-         videoUrl(newData, oldData){
 
-             this.play(newData)
 
-         },
 
-         immediate:true
 
-     },
 
-     methods: {
 
-         create(){
 
-           let options =  {};
 
-           console.log(this.$refs.container)
 
-           console.log("hasAudio  " + this.hasAudio)
 
-           this.jessibuca = new window.Jessibuca(Object.assign(
 
-             {
 
-               container: this.$refs.container,
 
-               videoBuffer: 0.2, // 最大缓冲时长,单位秒
 
-               isResize: true,
 
-               isFlv: true,
 
-               decoder: "./static/js/jessibuca/index.js",
 
-               // text: "WVP-PRO",
 
-               // background: "bg.jpg",
 
-               loadingText: "加载中",
 
-               hasAudio: typeof (this.hasAudio) =="undefined"? true: this.hasAudio,
 
-               debug: false,
 
-               supportDblclickFullscreen: false, // 是否支持屏幕的双击事件,触发全屏,取消全屏事件。
 
-               operateBtns: {
 
-                 fullscreen: false,
 
-                 screenshot: false,
 
-                 play: false,
 
-                 audio: false,
 
-               },
 
-               record: "record",
 
-               vod: this.vod,
 
-               forceNoOffscreen: this.forceNoOffscreen,
 
-               isNotMute: this.isNotMute,
 
-             },
 
-             options
 
-           ));
 
-           let _this = this;
 
-           this.jessibuca.on("load", function () {
 
-             console.log("on load init");
 
-           });
 
-           this.jessibuca.on("log", function (msg) {
 
-             console.log("on log", msg);
 
-           });
 
-           this.jessibuca.on("record", function (msg) {
 
-             console.log("on record:", msg);
 
-           });
 
-           this.jessibuca.on("pause", function () {
 
-             _this.playing = false;
 
-           });
 
-           this.jessibuca.on("play", function () {
 
-             _this.playing = true;
 
-           });
 
-           this.jessibuca.on("fullscreen", function (msg) {
 
-             console.log("on fullscreen", msg);
 
-             _this.fullscreen = msg
 
-           });
 
-           this.jessibuca.on("mute", function (msg) {
 
-             console.log("on mute", msg);
 
-             _this.isNotMute = !msg;
 
-           });
 
-           this.jessibuca.on("audioInfo", function (msg) {
 
-             // console.log("audioInfo", msg);
 
-           });
 
-           this.jessibuca.on("videoInfo", function (msg) {
 
-             this.videoInfo = msg;
 
-             // console.log("videoInfo", msg);
 
-           });
 
-           this.jessibuca.on("bps", function (bps) {
 
-             // console.log('bps', bps);
 
-           });
 
-           let _ts = 0;
 
-           this.jessibuca.on("timeUpdate", function (ts) {
 
-             // console.log('timeUpdate,old,new,timestamp', _ts, ts, ts - _ts);
 
-             _ts = ts;
 
-           });
 
-           this.jessibuca.on("videoInfo", function (info) {
 
-             console.log("videoInfo", info);
 
-           });
 
-           this.jessibuca.on("error", function (error) {
 
-             console.log("error", error);
 
-           });
 
-           this.jessibuca.on("timeout", function () {
 
-             console.log("timeout");
 
-           });
 
-           this.jessibuca.on('start', function () {
 
-             console.log('start');
 
-           })
 
-           this.jessibuca.on("performance", function (performance) {
 
-             let show = "卡顿";
 
-             if (performance === 2) {
 
-               show = "非常流畅";
 
-             } else if (performance === 1) {
 
-               show = "流畅";
 
-             }
 
-             _this.performance = show;
 
-           });
 
-           this.jessibuca.on('buffer', function (buffer) {
 
-             // console.log('buffer', buffer);
 
-           })
 
-           this.jessibuca.on('stats', function (stats) {
 
-             // console.log('stats', stats);
 
-           })
 
-           this.jessibuca.on('kBps', function (kBps) {
 
-             _this.kBps = Math.round(kBps);
 
-           });
 
-           // 显示时间戳 PTS
 
-           this.jessibuca.on('videoFrame', function () {
 
-           })
 
-           //
 
-           this.jessibuca.on('metadata', function () {
 
-           });
 
-         },
 
-         playBtnClick: function (event){
 
-           this.play(this.videoUrl)
 
-         },
 
-         play: function (url) {
 
-           console.log(url)
 
-             if (this.jessibuca) {
 
-               this.destroy();
 
-             }
 
-             this.create();
 
-             this.jessibuca.on("play", () => {
 
-               this.playing = true;
 
-               this.loaded = true;
 
-               this.quieting = this.jessibuca.quieting;
 
-             });
 
-             if (this.jessibuca.hasLoaded()) {
 
-               this.jessibuca.play(url);
 
-             } else {
 
-               this.jessibuca.on("load", () => {
 
-                 console.log("load 播放")
 
-                 this.jessibuca.play(url);
 
-               });
 
-             }
 
-         },
 
-         pause: function () {
 
-           if (this.jessibuca) {
 
-             this.jessibuca.pause();
 
-           }
 
-           this.playing = false;
 
-           this.err = "";
 
-           this.performance = "";
 
-         },
 
-         destroy: function () {
 
-           if (this.jessibuca) {
 
-             this.jessibuca.destroy();
 
-           }
 
-           if (document.getElementById("buttonsBox") == null) {
 
-             document.getElementById("container").appendChild(this.btnDom)
 
-           }
 
-           this.jessibuca = null;
 
-           this.playing = false;
 
-           this.err = "";
 
-           this.performance = "";
 
-         },
 
-         eventcallbacK: function(type, message) {
 
-             // console.log("player 事件回调")
 
-             // console.log(type)
 
-             // console.log(message)
 
-         },
 
-         fullscreenSwich: function (){
 
-             let isFull = this.isFullscreen()
 
-             this.jessibuca.setFullscreen(!isFull)
 
-             this.fullscreen = !isFull;
 
-         },
 
-         isFullscreen: function (){
 
-           return document.fullscreenElement ||
 
-             document.msFullscreenElement  ||
 
-             document.mozFullScreenElement ||
 
-             document.webkitFullscreenElement || false;
 
-         }
 
-     },
 
-     destroyed() {
 
-       if (this.jessibuca) {
 
-         this.jessibuca.destroy();
 
-       }
 
-       this.playing = false;
 
-       this.loaded = false;
 
-       this.performance = "";
 
-     },
 
- }
 
- </script>
 
- <style>
 
-   .buttons-box{
 
-     width: 100%;
 
-     height: 28px;
 
-     background-color: rgba(43, 51, 63, 0.7);
 
-     position: absolute;
 
-     display: -webkit-box;
 
-     display: -ms-flexbox;
 
-     display: flex;
 
-     left: 0;
 
-     bottom: 0;
 
-     user-select: none;
 
-     z-index: 10;
 
-   }
 
-   .jessibuca-btn{
 
-     width: 20px;
 
-     color: rgb(255, 255, 255);
 
-     line-height: 27px;
 
-     margin: 0px 10px;
 
-     padding: 0px 2px;
 
-     cursor: pointer;
 
-     text-align: center;
 
-     font-size: 0.8rem !important;
 
-   }
 
-   .buttons-box-right {
 
-     position: absolute;
 
-     right: 0;
 
-   }
 
- </style>
 
 
  |