提交 e85f9572 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 45d782e2
...@@ -76,7 +76,7 @@ const { ...@@ -76,7 +76,7 @@ const {
}, },
onStop: (blob) => { onStop: (blob) => {
props.onStop && props.onStop(blob) props.onStop && props.onStop(blob)
handleUpdateRecord() handleUpdateRecord({ live_video_size: blob.size.toString() })
// 保存录像到本地 // 保存录像到本地
if (props.isLocalUpload) saveAs(blob, `${fileName.value}.mp4`) if (props.isLocalUpload) saveAs(blob, `${fileName.value}.mp4`)
}, },
...@@ -117,7 +117,7 @@ const handleUpload = () => { ...@@ -117,7 +117,7 @@ const handleUpload = () => {
dialog.open({ accept: 'video/mp4' }) dialog.open({ accept: 'video/mp4' })
dialog.onChange(async ([file]) => { dialog.onChange(async ([file]) => {
const res = await upload(file) const res = await upload(file)
handleUpdateRecord({ id: recordId.value, live_video_addres: res }) handleUpdateRecord({ id: recordId.value, live_video_addres: res, live_video_size: file.size.toString() })
ElMessage.success('上传成功') ElMessage.success('上传成功')
}) })
} }
......
...@@ -10,7 +10,12 @@ function scrollToBottom() { ...@@ -10,7 +10,12 @@ function scrollToBottom() {
if (!messageRef.value) return if (!messageRef.value) return
messageRef.value.scrollTo(0, messageRef.value.scrollHeight) messageRef.value.scrollTo(0, messageRef.value.scrollHeight)
} }
watch(props.messages, () => nextTick(() => scrollToBottom()))
watch(
() => props.messages,
() => nextTick(() => scrollToBottom()),
{ deep: true }
)
const userName = computed(() => { const userName = computed(() => {
const user = detail.value?.current_user || {} const user = detail.value?.current_user || {}
......
...@@ -16,8 +16,11 @@ const userName = computed(() => { ...@@ -16,8 +16,11 @@ const userName = computed(() => {
const video = ref(null) const video = ref(null)
const playing = ref(false) const playing = ref(false)
const duration = ref(0)
onMounted(() => { onMounted(() => {
video.value.onloadedmetadata = (e) => {
duration.value = e.target.duration
}
video.value.ontimeupdate = () => { video.value.ontimeupdate = () => {
currentTime.value = Math.floor(video.value?.currentTime) || 0 currentTime.value = Math.floor(video.value?.currentTime) || 0
} }
...@@ -35,6 +38,15 @@ onMounted(() => { ...@@ -35,6 +38,15 @@ onMounted(() => {
const togglePlay = () => { const togglePlay = () => {
playing.value ? video.value?.pause() : video.value?.play() playing.value ? video.value?.pause() : video.value?.play()
} }
const handleInput = () => {
video.value.pause()
}
const handleChange = (value) => {
video.value.currentTime = value
video.value.play()
}
const hover = ref(false)
</script> </script>
<template> <template>
...@@ -44,8 +56,13 @@ const togglePlay = () => { ...@@ -44,8 +56,13 @@ const togglePlay = () => {
</div> </div>
<div class="live-bd"> <div class="live-bd">
<video :src="record.live_video_addres" ref="video"></video> <video :src="record.live_video_addres" ref="video"></video>
<LiveCover :messages="messages" :stats="stats" :viewers="viewers"> <LiveCover
<div class="play-button" @click="togglePlay"> :messages="messages"
:stats="stats"
:viewers="viewers"
@mouseover="hover = true"
@mouseleave="hover = false">
<div class="live-play-button" @click="togglePlay" v-show="hover || !playing">
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
width="32" width="32"
...@@ -77,6 +94,15 @@ const togglePlay = () => { ...@@ -77,6 +94,15 @@ const togglePlay = () => {
</defs> </defs>
</svg> </svg>
</div> </div>
<div class="live-slider" v-show="hover">
<el-slider
v-model="currentTime"
:max="duration"
size="small"
:show-tooltip="false"
@change="handleChange"
@input="handleInput" />
</div>
</LiveCover> </LiveCover>
</div> </div>
</div> </div>
...@@ -113,8 +139,8 @@ const togglePlay = () => { ...@@ -113,8 +139,8 @@ const togglePlay = () => {
margin-top: 10px; margin-top: 10px;
text-align: center; text-align: center;
} }
}
.play-button { .live-play-button {
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
...@@ -127,6 +153,13 @@ const togglePlay = () => { ...@@ -127,6 +153,13 @@ const togglePlay = () => {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} z-index: 100000;
}
.live-slider {
position: absolute;
bottom: 5px;
left: 10px;
right: 10px;
z-index: 100000;
} }
</style> </style>
...@@ -152,9 +152,9 @@ export function useLiveChat(options: UseLiveChatOptions = {}) { ...@@ -152,9 +152,9 @@ export function useLiveChat(options: UseLiveChatOptions = {}) {
currentTime, currentTime,
() => { () => {
if (defaultMessages && defaultMessages.length > 0) { if (defaultMessages && defaultMessages.length > 0) {
// reset() reset()
defaultMessages.forEach((message) => { defaultMessages.forEach((message) => {
if (message.currentTime == currentTime.value) addMessage(message) if (message.currentTime <= currentTime.value) addMessage(message)
}) })
} }
}, },
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论