【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之video 的各种状态和生命周期调用说明

主要是备用查看

下面把 <video> 元素 所有原生状态 + 生命周期事件 按时间线梳理,并给出「什么时候触发、常见用途、Vue 里怎么用」三列速查,复制即可用。


📺 视频生命周期总览图(先收藏再细看)

复制代码
加载流程 → 网络 → 解码 → 渲染 → 播放 → 结束
阶段 事件 触发时机 常见用途 Vue 监听示例
资源初始化 loadstart 开始请求视频文件 显示加载动画 @loadstart="onLoadStart"
元数据 durationchange 拿到时长(duration 从 NaN → 数字) 更新总时长 @durationchange="updateDuration"
首帧可渲染 loadeddata 已解码到第一帧,可显示画面 隐藏封面遮罩 @loadeddata="hideCover"
可播放 canplay 缓冲足够,可以开始播放(可能还要缓冲) 显示播放按钮 @canplay="showPlayIcon"
流畅播放 canplaythrough 浏览器认为「整个视频都能流畅播完」 自动播放前确认 @canplaythrough="autoPlayIfWant"
播放中 timeupdate 播放位置变化(约 250 ms 一次) 更新进度条 @timeupdate="updateProgress"
暂停/播放 play / pause 调用 .play() 或 .pause() 后立即触发 UI 状态同步 @play="isPaused=false" @pause="isPaused=true"
结束 ended 播放到末尾 切下一条 / 重播 @ended="nextVideo"
** seeking ** seeking 正在跳转(currentTime 被设置) 显示跳转提示 @seeking="showSeeking"
跳转完成 seeked 跳转完成 隐藏提示 @seeked="hideSeeking"
音量变化 volumechange volume 或 muted 被改 更新音量图标 @volumechange="updateVolumeIcon"
全屏 fullscreenchange 进入/退出全屏 调整布局 @fullscreenchange="onFullscreenChange"
错误 error 网络/解码/格式错误 提示用户重试 @error="onError"
等待缓冲 waiting 缓冲不足,播放暂停 显示缓冲圈 @waiting="showBuffer" @canplay="hideBuffer"

✅ Vue 模板完整监听示例

html 复制代码
<video
  ref="video"
  :src="currentVideo"
  preload="auto"
  playsinline
  muted
  @loadstart="onLoadStart"
  @durationchange="updateDuration"
  @loadeddata="hideCover"
  @canplay="showPlayIcon"
  @canplaythrough="autoPlayIfWant"
  @timeupdate="updateProgress"
  @play="isPaused=false"
  @pause="isPaused=true"
  @ended="nextVideo"
  @waiting="showBuffer"
  @error="onError"
></video>

✅ JS 常用属性速查

属性 说明 只读?
video.duration 总时长(秒) ✅
video.currentTime 当前播放位置(可读写) ❌
video.paused 是否暂停 ✅
video.ended 是否播放完毕 ✅
video.buffered 已缓冲时间范围对象 ✅
video.readyState 就绪状态 0-4(见下表) ✅

✅ readyState 枚举

值 含义
0 HAVE_NOTHING - 没有数据
1 HAVE_METADATA - 拿到元数据
2 HAVE_CURRENT_DATA - 当前帧可用
3 HAVE_FUTURE_DATA - 可以播放下一帧
4 HAVE_ENOUGH_DATA - 可以流畅播放到底

✅ 一句话总结

把 loadeddata(首帧)、canplay(可播)、ended(播完)、timeupdate(进度)、error(出错)五个事件先监听,就能覆盖 90% 业务场景;其余按需加即可。

好用的开发工具

推荐理由

postman在国内使用已经越来越困难:

1、登录问题严重

2、Mock功能服务基本没法使用

3、版本更新功能已很匮乏

4、某些外力因素导致postman以后能否使用风险较大

5、postman会导致电脑卡顿,而且使用的功能越多越慢,尤其是win电脑,太让人郁闷了

出于以上考虑因此笔者自己开发了一款api调试开发工具SmartApi,满足基本日常开发调试api需求

SmartApi

win版本不大于1M;运行消耗性能极低

macos 版本不大于100M;运行消耗性能极低

非常适合开发设备或性能有限的开发环境

SmartApi只为开发服务

官网地址SmartApi

http://www.smartapi.site/


旧版本已停止维护

相关推荐
zhangfeng11338 小时前
com.apple.quarantine 并不是乱码,而是 macOS Gatekeeper 给下载文件自动打上的“隔离属性
macos·策略模式
Java后端的Ai之路8 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
甘晴void13 小时前
我给 Magpie 做了个 macOS 桌宠:106 段动画,请求一多就亮灯
macos·electron·开源·deepseek·桌面宠物·magpie
donecoding13 小时前
Apple 芯片 Mac 的终端为什么还在跑 Intel?从 tmux 查起
macos
拥小抱15 小时前
Compose 知识点
android
文章永久免费只为良心15 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南
AIsoft_868915 小时前
学术讲座录音如何整理?录音APP可行吗
android·iphone
Patrick在香港18 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
jktantan18 小时前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
DevLoom_18 小时前
macOS 27 升级后 Time Capsule 无法备份?AFP 协议废弃后的完整解决方案与备份迁移教程
macos·时间机器·macos27·macos 27备份·macos实用技巧