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

使用ViroReact开发AR应用时ViroVideo播放视频致应用崩溃

排查ViroReact AR应用视频播放崩溃问题

从你提供的代码和描述来看,应用崩溃可能由以下几个原因导致,按优先级逐一排查:

1. JSX语法错误(最直接触发崩溃的原因)

你的ViroARScene组件未添加闭合标签,这会导致JSX解析失败,直接引发应用崩溃。修复方法是在ViroVideo组件后补充闭合标签:

return (
  <ViroARScene onTrackingUpdated={onInitialized}>
    <ViroVideo 
      width={1.7} height={0.95}
      position={[0, -5, -2.9]} scale={[2, 2, 2]} paused={false}
      source={require("./res/alphachica.mp4")} 
      loop={true} muted={false} volume={1.0}
    />
  </ViroARScene> {/* 补充该闭合标签 */}
);

2. 视频文件格式/编码不兼容

ViroReact对视频编码有严格要求,必须使用H.264 Baseline Profile编码的MP4文件。若你的视频不符合标准,会导致播放时崩溃。可使用FFmpeg重新编码:

ffmpeg -i alphachica.mp4 -c:v libx264 -profile:v baseline -level 3.0 -c:a aac alphachica_compatible.mp4

3. 视频文件路径错误

确认./res/alphachica.mp4确实存在于项目目录中,且文件名大小写与代码完全一致(iOS等区分大小写的系统会因大小写不匹配找不到文件),路径错误会触发资源加载失败导致崩溃。

4. 缺失必要的导入

检查代码顶部是否导入了所有依赖的组件和常量:

import React, { useState } from 'react';
import { ViroARScene, ViroVideo, ViroARSceneNavigator, ViroTrackingStateConstants } from '@viro-community/react-viro';
import styles from './styles'; // 若styles文件存在需导入

缺失任何一个导入都会引发运行时错误。

5. 版本兼容性问题

确保你的ViroReact版本与React Native版本兼容:

  • React Native 0.60+请使用@viro-community/react-viro(官方ViroMedia已停止维护,社区版本更稳定)
  • 检查package.json中依赖版本是否匹配,避免版本冲突

6. 权限配置问题

  • Android:若视频存储在外部存储,需在AndroidManifest.xml中添加READ_EXTERNAL_STORAGE权限;打包在应用内则无需额外权限。
  • iOS:确保Info.plist中添加了必要的媒体访问权限(如NSPhotoLibraryUsageDescription,若视频来自相册)。

内容的提问来源于stack exchange,提问作者Reza Hamidi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:25:24