当前位置: 首页 > article >正文

vue 流式加载mp4文件

const props = defineProps<{
assetURL: string
}>()

const rangeVideo = () => {
const totalSize = 112702286
const chunkSize = 1000000
const numChunks = Math.ceil(totalSize / chunkSize)
let index = 0
const mimeCodec = ‘video/mp4; codecs=“avc1.42E01E, mp4a.40.2”’

if (‘MediaSource’ in window && MediaSource.isTypeSupported(mimeCodec)) {
let mediaSource = new MediaSource()
video.value.src = URL.createObjectURL(mediaSource)
mediaSource.addEventListener(‘sourceopen’, sourceOpen)
} else {
console.error('Unsupported MIME type or codec: ', mimeCodec)
}

function sourceOpen(e) {
let mediaSource = e.target
let sourceBuffer = mediaSource.addSourceBuffer(mimeCodec)
const send = async () => {
if (index >= numChunks) {
sourceBuffer.addEventListener(‘updateend’, function (_) {
mediaSource.endOfStream()
})
} else {
const start = index * chunkSize
const end = Math.min(start + chunkSize - 1, totalSize - 1)
fetch(‘/video-api/’ + props.assetURL, {
headers: {
Range: bytes=${start}-${end},
responseType: ‘arraybuffer’
}
}).then(async (response) => {
const res = await response.arrayBuffer()
index++
sourceBuffer.appendBuffer(res)
send()
// video.value.play()
})
}
}
send()
}
}

const getRef = () => {
return video
}

defineExpose({ getRef })

onMounted(() => {
rangeVideo()
})


http://www.kler.cn/a/323093.html

相关文章:

  • Excel使用-弹窗“此工作簿包含到一个或多个可能不安全的外部源的链接”的发生与处理
  • Python练习27
  • 【MySQL】SQL语言
  • 「Mac玩转仓颉内测版5」入门篇5 - Cangjie控制结构(上)
  • 系统架构师考试18天极限备考复盘(2024年11月)
  • Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV买卖股票的最佳时机III
  • 视频汇聚/视频存储/安防视频监控EasyCVR平台RTMP推流显示离线是什么原因?
  • 秋招即将来临,AIGC 产品经理 快速入门方法论
  • 【计算机网络强化】计网强化笔记
  • http代理池子大小要如何判断?
  • 信息安全工程师(25)网络安全体系框架主要组成和建设内容
  • vite 底层解析
  • Pencils Protocol上线 Vaults 产品,为 $DAPP 深入赋能
  • 网站服务架构:LAMP vs LNMP
  • 基于Hive和Hadoop的哔哩哔哩网站分析系统
  • 【TES817】l基于XCZU19EG FPGA的高性能实时信号处理平台
  • DataWhale x南瓜书学习笔记 task04笔记
  • 重定向服务器
  • 力扣 中等 92.反转链表 II
  • Jmeter 配置元件-计数器时间变量
  • 深入探讨Java Agent动态监控与字节码操作的力量
  • llamafactory0.9.0微调qwen2vl
  • 面试经验分享
  • docker pull 不通?必须解决, 立刻马上,忍不了一点,没废话,直接用
  • LeetCode题练习与总结:搜索二维矩阵 Ⅱ--240
  • 使用ESPnet的 setup_anaconda.sh安装脚本一步到位,配置conda虚拟环境