You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo-av的Video组件安卓运行正常但iOS端无法渲染问题求助

用户使用的expo-av Video组件代码如下:

<Video
  style={{ height: height / 3, width }}
  source={{
    uri: "http://192.168.3.151:8000/videos/5YcCctaAhUpPBmUj9WmjwoVWlm2SiE8dCMjJatOw.mp4",
  }}
  useNativeControls
  resizeMode="contain"
  isLooping
  shouldPlay
/>

解决方法

  • 配置iOS ATS安全策略例外
    iOS默认禁止所有未加密的HTTP请求,你当前使用的视频URI为HTTP协议的局域网地址,会被系统直接拦截无法加载。
    在Expo项目的app.json/app.config.js中添加如下配置:

    {
      "expo": {
        "ios": {
          "infoPlist": {
            "NSAppTransportSecurity": {
              // 开发环境可临时开启允许任意HTTP请求,生产环境建议替换为HTTPS或单独配置域名例外
              "NSAllowsArbitraryLoads": true
            }
          }
        }
      }
    }
    

    配置完成后需要重新编译开发客户端,或重新执行expo prebuild生效。
    生产环境建议关闭任意HTTP请求权限,单独为你的服务IP配置例外:

    "NSAppTransportSecurity": {
      "NSExceptionDomains": {
        "192.168.3.151": {
          "NSExceptionAllowsInsecureHTTPLoads": true,
          "NSIncludesSubdomains": true
        }
      }
    }
    
  • 检查视频编码格式
    iOS原生播放器对视频编码的兼容性要求比安卓严格,仅支持H.264编码的MP4文件、音频轨为AAC编码,如果你的视频使用了其他编码格式,就会出现安卓可播iOS无法渲染的问题。你可以将视频转码为H.264+AAC编码的MP4格式后再测试。

  • 补充必要权限声明
    部分版本的expo-av在iOS端加载带音频的视频时,需要声明麦克风权限才能正常加载,你可以在上述ios.infoPlist配置中追加权限声明:

    "NSMicrophoneUsageDescription": "需要访问麦克风以播放视频音频"
    
  • 排查资源访问问题
    你可以先将视频URI替换为公开的HTTPS协议H.264编码测试视频,排除是本地局域网资源访问限制的问题。

内容的提问来源于stack exchange,提问作者Dana Allam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:54:03