uni-app video组件在IOS环境播放视频时先黑屏两三秒后才播放画面,同样网络环境下安卓点击即播

uni-app video组件在IOS环境播放视频时先黑屏两三秒后才播放画面,同样网络环境下安卓点击即播

操作步骤:

  • 使用video播放视频

预期结果:

  • 希望不要长时间黑屏,像安卓一样,加载完立马播放画面

实际结果:

  • 使用video播放视频,在IOS会有一个较长的黑屏时间,需要等待至少3秒,才会出现画面

bug描述:

video组件,在IOS环境,播放视频时,会先黑屏两三秒之后,画面才会播放出来
所有的苹果机型都有这个情况
在同样的网络环境下,安卓点击播放,立马就播放出来了
wifi网络速度非常快,不是网络问题, 加载中会有加载动画
加载动画消失后,还会黑屏2秒以上

https://cg-teach.oss-cn-shenzhen.aliyuncs.com/20200729/b31c0f384ed9bba42915d587ea3b11b9.mp4


| 信息类别       | 详细信息     |
|----------------|--------------|
| 产品分类       | uniapp/App   |
| PC开发环境操作系统 | Windows      |
| PC开发环境操作系统版本号 | win10        |
| HBuilderX类型  | 正式         |
| HBuilderX版本号 | 3.2.9        |
| 手机系统       | iOS          |
| 手机系统版本号  | iOS 14       |
| 手机厂商       | 苹果         |
| 手机机型       | iphone所有机型|
| 页面类型       | nvue         |
| 打包方式       | 云端         |
| 项目创建方式    | HBuilderX    |
| App下载地址或H5网址 | [https://apps.apple.com/cn/app/%E6%89%A7%E8%AF%BE/id1546182653](https://apps.apple.com/cn/app/%E6%89%A7%E8%AF%BE/id1546182653) |

更多关于uni-app video组件在IOS环境播放视频时先黑屏两三秒后才播放画面,同样网络环境下安卓点击即播的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

https://ask.dcloud.net.cn/article/39136 你可以参考参考这个篇文章 可能你自定义一些设置项

更多关于uni-app video组件在IOS环境播放视频时先黑屏两三秒后才播放画面,同样网络环境下安卓点击即播的实战教程也可以访问 https://www.itying.com/category-93-b0.html


试了设置,没有效果,还是一样会黑屏两三秒

回复 9***@qq.com: 提供一个可以稳定复现你问的示例demo 主要是视频地址 和 参数配置

回复 9***@qq.com: 你是怎么设置的

回复 天生DR: 这个问题2年过去了还是在

楼主后面是怎么解决的,

这是iOS系统对视频播放的预加载策略差异导致的常见问题。iOS的video播放器需要先缓冲足够的数据量才会开始渲染画面,而安卓通常采用边下边播的策略。

解决方案:

  1. 使用initial-time属性:设置一个很小的初始时间点(如0.01秒),可以触发iOS提前开始解码。

    <video :initial-time="0.01" />
    
  2. 预加载视频元数据:在视频显示前先加载元数据。

    // 提前创建video实例预加载
    const videoContext = uni.createVideoContext('myVideo')
    // 或者监听loadedmetadata事件
    
  3. 使用poster属性:设置视频封面图,黑屏期间显示封面提升体验。

    <video poster="/static/cover.jpg" />
    
  4. 优化视频格式:iOS对MP4的H.264编码支持最好,确保视频编码格式兼容。

  5. 分平台处理:条件编译针对iOS采用不同策略。

    // #ifdef APP-PLUS
    <video :initial-time="0.01" />
    // #endif
    
  6. 使用[@loadedmetadata](/user/loadedmetadata)事件:元数据加载完成后立即播放。

    <video [@loadedmetadata](/user/loadedmetadata)="onMetadataLoaded" />
回到顶部