Files
SEONexus/code/public/template/shikong/huiyuan/js/class/VideoPlayer.js
2025-04-21 17:49:17 +08:00

98 lines
3.0 KiB
JavaScript

import { apiGetVideoInfo } from '../public/api/index.js';
import { fetchApi,onError} from '../public/api/fetch.js';
class VideoPlayer {
constructor(intPayStatus, intVideoId, CctvOpening, strVideoPlayUrl, strDownUrl) {
this.intPayStatus = intPayStatus;
this.intVideoId = intVideoId;
this.CctvOpening = CctvOpening;
this.strVideoPlayUrl = strVideoPlayUrl;
this.strDownUrl = strDownUrl;
}
init() {
this.intDplay();
}
intDplay() {
if (this.intPayStatus !== 1 && checkIsMemberFn()) {
this.fetchVideoInfo();
return;
}
if (this.shouldShowCctvOpening()) {
this.setupCctvOpening();
} else {
this.startMainVideo();
}
}
fetchVideoInfo() {
let strApiUrl = apiGetVideoInfo + '?vid=' + this.intVideoId;
fetchApi(strApiUrl, null,successFn, onError)
function successFn(res) {
if (res.code == '000') {
videoInfoJs.setDownUrl(res.data.downurl);
videoInfoJs.setPlayUrl(res.data.playurl);
}
}
}
shouldShowCctvOpening() {
const disallowedDevices = ['UCBrowser', 'QuarkBrowser', 'VIVODevice'];
return this.CctvOpening.length > 0 &&
!checkIsMemberStatus() &&
!disallowedDevices.includes(detectBrowserOrDevice());
}
setupCctvOpening() {
this.strCctvHref = this.CctvOpening[0].href;
this.strCctvUrl = this.CctvOpening[0].cover;
this.strCctvUrl.indexOf(".m3u8") > 0 ? this.showCctvVideo() : this.showCctvImg();
this.bindCctvClickEvent();
}
showCctvVideo() {
this.boolIsShowCctvVideo = true;
this.intCountDownTimes = this.intCctvOpeningTimes;
$(".isShow_cctv_video").show();
this.beforePlay(this.strCctvUrl, true);
}
showCctvImg() {
this.boolIsShowCctvImg = true;
this.intCountDownTimes = this.intCctvOpeningTimes;
$(".isShow_cctv_img img").attr('src', this.strCctvUrl);
$(".isShow_cctv_img").show();
}
bindCctvClickEvent() {
if (this.cctvEventBound) return;
$(".isShow_cctv_video").on('click', () => {
if (this.intCountDownTimes === this.intCctvOpeningTimes) {
this.beforePlay(this.strCctvUrl);
return;
}
if (checkIsLoginFn()) {
$(".isShow_cctv_img, .isShow_cctv_video").hide();
this.intCountDownTimes = 0;
clearInterval(this.CctvInterval);
this.setPlayUrl(this.strVideoPlayUrl);
}
});
this.cctvEventBound = true;
}
startMainVideo() {
this.intCountDownTimes = 0;
this.setPlayUrl(this.strVideoPlayUrl);
this.setDownUrl(this.strDownUrl);
}
// ... Any other methods or helpers you might need can be added here.
}
// 使用方式:
// const player = new VideoPlayer(intPayStatus, intVideoId, CctvOpening, strVideoPlayUrl, strDownUrl);
// player.init();