无法使用react-native-video从SD-CARD播放视频

时间:2019-04-04 15:36:57

标签: android react-native react-native-android

我正在尝试使用react-native-video通过SD-CARD播放视频。我正在使用rn-fetch-blob软件包来连接SD-CARD。但是我无法播放任何视频。我已为该应用程序手动授予了存储权限,并且AndroidManifest.xml已经包含读写用户权限。

    <Video
        url={{
          uri:
            "file://" +
            RNFetchBlob.fs.dirs.SDCardDir +
            "/Video/videofile1.mp4"
        }}
        style={{ flex: 1 }}
      />

我尝试使用“源”代替“ URL”,很多人建议将“ file://”附加到开头,但是我没有成功。

使用的SD-CARD是SanDisk Ultra microSDHC UHS-I卡。

1 个答案:

答案 0 :(得分:0)

以我有限(当然)的rn-fetch-blob经验,这不是一个诺言吗?

因此,与其直接在视频组件的网址中获得承诺,不如利用反应状态!并拥有...

(注意:我使用的是香草反应状态,请替换为您使用的任何东西,然后使用redux等)

state = {
  url: false
}

.......then later in your render/return:
{
 url 
    ? <Video url={this.state.url} />
    : <SomeLoaderComponentYouDefine />
}

然后使用rn-fetch-blob逻辑具有单独的功能,可能在componentDidMount()上触发(没有看到更多代码,很难确定最佳路径)。这样,将可以正确处理加载。 'SomeLoaderComponentYouDefine'可以为react native activity indicator

另外,了解它不能在哪个操作系统上运行,两个都只有一个等也是很有用的。特别是在android中,有一些与权限相关的未解决问题。以我有限的个人经验

对于iOS:

DocumentDir

对于android:

SDCardApplicationDir

通常有效。