|
@@ -1,4 +1,5 @@
|
|
|
import '@/assets/css/videojs.scss';
|
|
import '@/assets/css/videojs.scss';
|
|
|
|
|
+import { isSafari } from 'billd-utils';
|
|
|
import flvJs from 'flv.js';
|
|
import flvJs from 'flv.js';
|
|
|
import videoJs from 'video.js';
|
|
import videoJs from 'video.js';
|
|
|
import Player from 'video.js/dist/types/player';
|
|
import Player from 'video.js/dist/types/player';
|
|
@@ -34,8 +35,9 @@ export function useFlvPlay() {
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
function setMuted(val) {
|
|
function setMuted(val) {
|
|
|
|
|
+ console.log(val, '--------');
|
|
|
if (flvPlayer.value) {
|
|
if (flvPlayer.value) {
|
|
|
- flvPlayer.value.muted = val;
|
|
|
|
|
|
|
+ // flvPlayer.value.muted = val;
|
|
|
}
|
|
}
|
|
|
if (flvVideoEl.value) {
|
|
if (flvVideoEl.value) {
|
|
|
flvVideoEl.value.muted = val;
|
|
flvVideoEl.value.muted = val;
|
|
@@ -45,38 +47,43 @@ export function useFlvPlay() {
|
|
|
function startFlvPlay(data: { flvurl: string }) {
|
|
function startFlvPlay(data: { flvurl: string }) {
|
|
|
destroyFlv();
|
|
destroyFlv();
|
|
|
return new Promise<{ width: number; height: number }>((resolve) => {
|
|
return new Promise<{ width: number; height: number }>((resolve) => {
|
|
|
- if (flvJs.isSupported()) {
|
|
|
|
|
- flvPlayer.value = flvJs.createPlayer({
|
|
|
|
|
- type: 'flv',
|
|
|
|
|
- url: data.flvurl,
|
|
|
|
|
- });
|
|
|
|
|
- const videoEl = document.createElement('video');
|
|
|
|
|
- videoEl.muted = true;
|
|
|
|
|
- videoEl.playsInline = true;
|
|
|
|
|
- videoEl.setAttribute('webkit-playsinline', 'true');
|
|
|
|
|
- flvVideoEl.value = videoEl;
|
|
|
|
|
- flvVideoEl.value.addEventListener('play', () => {
|
|
|
|
|
- console.log('flv-play');
|
|
|
|
|
- });
|
|
|
|
|
- flvVideoEl.value.addEventListener('playing', () => {
|
|
|
|
|
- console.log('flv-playing');
|
|
|
|
|
- resolve({
|
|
|
|
|
- width: flvVideoEl.value?.videoWidth || 0,
|
|
|
|
|
- height: flvVideoEl.value?.videoHeight || 0,
|
|
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ if (flvJs.isSupported()) {
|
|
|
|
|
+ flvPlayer.value = flvJs.createPlayer({
|
|
|
|
|
+ type: 'flv',
|
|
|
|
|
+ url: data.flvurl,
|
|
|
});
|
|
});
|
|
|
- });
|
|
|
|
|
- flvPlayer.value.attachMediaElement(flvVideoEl.value);
|
|
|
|
|
- flvPlayer.value.load();
|
|
|
|
|
- try {
|
|
|
|
|
- console.log('开始播放flv播放');
|
|
|
|
|
- flvPlayer.value.play();
|
|
|
|
|
- } catch (err) {
|
|
|
|
|
- console.error('flv播放失败');
|
|
|
|
|
- console.log(err);
|
|
|
|
|
|
|
+ const videoEl = document.createElement('video');
|
|
|
|
|
+ // videoEl.autoplay = true;
|
|
|
|
|
+ videoEl.muted = true;
|
|
|
|
|
+ videoEl.playsInline = true;
|
|
|
|
|
+ videoEl.setAttribute('webkit-playsinline', 'true');
|
|
|
|
|
+ flvVideoEl.value = videoEl;
|
|
|
|
|
+ flvVideoEl.value.addEventListener('play', () => {
|
|
|
|
|
+ console.log('flv-play');
|
|
|
|
|
+ });
|
|
|
|
|
+ flvVideoEl.value.addEventListener('playing', () => {
|
|
|
|
|
+ console.log('flv-playing', isSafari());
|
|
|
|
|
+ setMuted(appStore.muted);
|
|
|
|
|
+
|
|
|
|
|
+ resolve({
|
|
|
|
|
+ width: flvVideoEl.value?.videoWidth || 0,
|
|
|
|
|
+ height: flvVideoEl.value?.videoHeight || 0,
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ flvPlayer.value.attachMediaElement(flvVideoEl.value);
|
|
|
|
|
+ flvPlayer.value.load();
|
|
|
|
|
+ try {
|
|
|
|
|
+ console.log('开始播放flv播放');
|
|
|
|
|
+ flvPlayer.value.play();
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ console.error('flv播放失败');
|
|
|
|
|
+ console.log(err);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.error('不支持flv');
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- console.error('不支持flv');
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }, 500);
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -120,6 +127,7 @@ export function useHlsPlay() {
|
|
|
function startHlsPlay(data: { hlsurl: string }) {
|
|
function startHlsPlay(data: { hlsurl: string }) {
|
|
|
destroyHls();
|
|
destroyHls();
|
|
|
const videoEl = document.createElement('video');
|
|
const videoEl = document.createElement('video');
|
|
|
|
|
+ videoEl.autoplay = true;
|
|
|
videoEl.muted = true;
|
|
videoEl.muted = true;
|
|
|
videoEl.playsInline = true;
|
|
videoEl.playsInline = true;
|
|
|
videoEl.setAttribute('webkit-playsinline', 'true');
|
|
videoEl.setAttribute('webkit-playsinline', 'true');
|