|
@@ -38,7 +38,7 @@
|
|
|
})`,
|
|
})`,
|
|
|
}"
|
|
}"
|
|
|
></div>
|
|
></div>
|
|
|
- <video
|
|
|
|
|
|
|
+ <!-- <video
|
|
|
id="remoteVideo"
|
|
id="remoteVideo"
|
|
|
ref="remoteVideoRef"
|
|
ref="remoteVideoRef"
|
|
|
autoplay
|
|
autoplay
|
|
@@ -50,7 +50,8 @@
|
|
|
x5-video-orientation="portraint"
|
|
x5-video-orientation="portraint"
|
|
|
:muted="appStore.muted"
|
|
:muted="appStore.muted"
|
|
|
@click="showControls = !showControls"
|
|
@click="showControls = !showControls"
|
|
|
- ></video>
|
|
|
|
|
|
|
+ ></video> -->
|
|
|
|
|
+ <div ref="canvasRef"></div>
|
|
|
<div
|
|
<div
|
|
|
v-if="
|
|
v-if="
|
|
|
route.query.liveType === liveTypeEnum.srsHlsPull &&
|
|
route.query.liveType === liveTypeEnum.srsHlsPull &&
|
|
@@ -219,6 +220,7 @@
|
|
|
@click="sendDanmu"
|
|
@click="sendDanmu"
|
|
|
>
|
|
>
|
|
|
发送
|
|
发送
|
|
|
|
|
+ <span @click="aaa">222</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -260,10 +262,14 @@ const showSidebar = ref(true);
|
|
|
const topRef = ref<HTMLDivElement>();
|
|
const topRef = ref<HTMLDivElement>();
|
|
|
const bottomRef = ref<HTMLDivElement>();
|
|
const bottomRef = ref<HTMLDivElement>();
|
|
|
const danmuListRef = ref<HTMLDivElement>();
|
|
const danmuListRef = ref<HTMLDivElement>();
|
|
|
|
|
+const canvasRef = ref<HTMLDivElement>();
|
|
|
const containerRef = ref<HTMLDivElement>();
|
|
const containerRef = ref<HTMLDivElement>();
|
|
|
-const remoteVideoRef = ref<HTMLVideoElement>();
|
|
|
|
|
const localVideoRef = ref<HTMLVideoElement[]>([]);
|
|
const localVideoRef = ref<HTMLVideoElement[]>([]);
|
|
|
-
|
|
|
|
|
|
|
+const videoEl = document.createElement('video');
|
|
|
|
|
+videoEl.muted = true;
|
|
|
|
|
+videoEl.playsInline = true;
|
|
|
|
|
+videoEl.setAttribute('webkit-playsinline', 'true');
|
|
|
|
|
+const remoteVideoRef = ref(videoEl);
|
|
|
const {
|
|
const {
|
|
|
initPull,
|
|
initPull,
|
|
|
closeWs,
|
|
closeWs,
|
|
@@ -276,6 +282,7 @@ const {
|
|
|
startGetDisplayMedia,
|
|
startGetDisplayMedia,
|
|
|
addTrack,
|
|
addTrack,
|
|
|
addVideo,
|
|
addVideo,
|
|
|
|
|
+ flvPlayer,
|
|
|
videoLoading,
|
|
videoLoading,
|
|
|
balance,
|
|
balance,
|
|
|
roomName,
|
|
roomName,
|
|
@@ -295,6 +302,7 @@ const {
|
|
|
} = usePull({
|
|
} = usePull({
|
|
|
localVideoRef,
|
|
localVideoRef,
|
|
|
remoteVideoRef,
|
|
remoteVideoRef,
|
|
|
|
|
+ canvasRef,
|
|
|
isFlv: route.query.liveType === liveTypeEnum.srsFlvPull,
|
|
isFlv: route.query.liveType === liveTypeEnum.srsFlvPull,
|
|
|
isSRS: route.query.liveType === liveTypeEnum.srsWebrtcPull,
|
|
isSRS: route.query.liveType === liveTypeEnum.srsWebrtcPull,
|
|
|
});
|
|
});
|
|
@@ -302,6 +310,18 @@ const showPlayBtn = ref(true);
|
|
|
|
|
|
|
|
const { startHlsPlay } = useHlsPlay();
|
|
const { startHlsPlay } = useHlsPlay();
|
|
|
|
|
|
|
|
|
|
+watch(
|
|
|
|
|
+ () => videoLoading.value,
|
|
|
|
|
+ (newVal) => {
|
|
|
|
|
+ if (newVal) return;
|
|
|
|
|
+ // remoteVideoRef.value.style.width = flvPlayer.value?.mediaInfo.width! + 'px';
|
|
|
|
|
+ // remoteVideoRef.value.style.height =
|
|
|
|
|
+ // flvPlayer.value?.mediaInfo.height! + 'px';
|
|
|
|
|
+ // console.log(flvPlayer.value?.mediaInfo.width, 888);
|
|
|
|
|
+ // videoToCanvas(remoteVideoRef.value, canvasRef.value!);
|
|
|
|
|
+ }
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
async function startPull() {
|
|
async function startPull() {
|
|
|
showPlayBtn.value = false;
|
|
showPlayBtn.value = false;
|
|
|
await startHlsPlay({
|
|
await startHlsPlay({
|
|
@@ -470,11 +490,10 @@ onMounted(() => {
|
|
|
|
|
|
|
|
inset: 0;
|
|
inset: 0;
|
|
|
}
|
|
}
|
|
|
- :deep(video) {
|
|
|
|
|
|
|
+ :deep(canvas) {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
top: 0;
|
|
top: 0;
|
|
|
left: 50%;
|
|
left: 50%;
|
|
|
- width: 100%;
|
|
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
transform: translate(-50%);
|
|
transform: translate(-50%);
|
|
|
}
|
|
}
|