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

如何使用react-native-video读取Android Asset文件夹中的视频?

解决react-native-video读取Android Asset文件夹视频的问题

正确的Asset路径写法

你之前尝试的路径格式有误,Android Asset的标准写法应该是:

source={{ uri: 'asset:///test.mp4' }}

注意是三个斜杠,这是react-native-video对Android Asset资源的官方规范路径。

验证前提条件

  • 确认视频文件test.mp4确实放在Android项目的src/main/assets目录下,文件名区分大小写,不要包含空格或特殊字符。
  • 建议使用react-native-video的稳定新版本,旧版本可能存在Asset路径解析的兼容性bug。

备选方案:复制Asset到缓存目录播放

如果直接使用Asset路径仍无法播放,可能是部分Android设备或旧版本库不支持直接读取Asset资源,可通过将Asset文件复制到应用缓存目录再播放:

  1. 安装文件操作库:
npm install react-native-fs --save
  1. 实现复制与播放逻辑:
import Video from 'react-native-video';
import RNFS from 'react-native-fs';
import { useEffect, useState } from 'react';

function AssetVideoPlayer() {
  const [videoUri, setVideoUri] = useState(null);

  useEffect(() => {
    const prepareVideo = async () => {
      const assetFileName = 'test.mp4';
      const cacheFilePath = `${RNFS.CachesDirectoryPath}/${assetFileName}`;

      // 缓存存在则直接使用,否则从Asset复制
      if (!(await RNFS.exists(cacheFilePath))) {
        await RNFS.copyFileAssets(assetFileName, cacheFilePath);
      }

      setVideoUri(`file://${cacheFilePath}`);
    };

    prepareVideo();
  }, []);

  if (!videoUri) return <div>加载中...</div>;

  return (
    <Video
      source={{ uri: videoUri }}
      style={{ width: '100%', height: 200 }}
      controls={true}
    />
  );
}

export default AssetVideoPlayer;

额外检查项

  • 确保react-native-video已正确集成:RN0.60+版本会自动链接,旧版本需手动执行链接命令。
  • 检查Android项目build.gradle配置,确保sourceSets.main.assets.srcDirs包含src/main/assets目录(默认已配置,若自定义路径需调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:06:23