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

主要是备用查看

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


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

复制代码
加载流程 → 网络 → 解码 → 渲染 → 播放 → 结束
阶段 事件 触发时机 常见用途 Vue 监听示例
资源初始化 loadstart 开始请求视频文件 显示加载动画 @loadstart="onLoadStart"
元数据 durationchange 拿到时长(durationNaN → 数字) 更新总时长 @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 volumemuted 被改 更新音量图标 @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/


旧版本已停止维护

相关推荐
程序务虚论4 小时前
mac M1上安装windows虚拟机报错
windows·macos·parallels
知识分享小能手4 小时前
React学习教程,从入门到精通,React 使用属性(Props)创建组件语法知识点与案例详解(15)
前端·javascript·vue.js·学习·react.js·前端框架·vue
app出海创收老李4 小时前
海外独立创收日记(1)-我是如何从0到1在Google Play获得睡后被动收入的?
android·程序员
lang9998884 小时前
kodi在Android4.0.4安装播放歌曲显示歌词
android·kodi·歌词插件
yzx9910135 小时前
构建未来:深度学习、嵌入式与安卓开发的融合创新之路
android·人工智能·深度学习
前行的小黑炭5 小时前
Android :如何快速让布局适配手机和平板?
android·java·kotlin
今天头发还在吗7 小时前
【Go】:mac 环境下GoFrame安装开发工具 gf-cli——gf_darwin_arm64
macos·golang·go·gf-cli
Yang-Never9 小时前
Kotlin协程 -> Job.join() 完整流程图与核心源码分析
android·开发语言·kotlin·android studio
小妖66610 小时前
MAC在home下新建文件夹报错“mkdir: test: Operation not supported”
macos