如何在React Native中缓存视频

时间:2018-06-05 20:00:41

标签: react-native caching video

我已经很长时间挣扎,无法找到解决这个问题的正确方法:如何处理RN中的视频缓存。我使用react-native-video来显示视频,但该软件包还没有缓存选项。请帮助找到解决方案。非常感谢

2 个答案:

答案 0 :(得分:2)

我终于在这里找到了解决方案。因此,ImageCacheManager的魅力在于,它现在可以用于缓存任何类型的文件,例如视频文件或pdf文件。因此,我使用了以下软件包https://github.com/kernelnetworks/react-native-cached-image.git,在其中进行了所有适当的更改以能够缓存任何类型的文件。

...
import { ImageCacheManager } from "react-native-cached-image";
import Video from "react-native-video";
...
componentDidMount() {
   ImageCacheManager({})
  .downloadAndCacheUrl(this.props.source.uri)
  .then(res => {
    this.setState({ cachedVideoURI: res, loaded: true });
   })
  .catch(err => {
   ...
  });

}

然后将缓存的uri用作视频(或任何其他类型的文件)的源。

<Video source={{uri: this.state.cachedVideoURI}}

就是这样! 希望这可以帮助某人节省很多时间

答案 1 :(得分:2)

David的回答很好,但是您需要进入node_modules/react-native-cached-image/utils/pathUtils.js并编辑defaultImageTypes数组以包含mp4或要保存的任何文件扩展名。如果您不这样做,那么视频文件将另存为JPG,并导致Video组件崩溃。

似乎没有一种方法可以在不直接修改核心cached-image模块的情况下覆盖已接受的文件类型。另外,在尝试加载视频之前,您还需要确保检查loaded状态属性,因为视频也会因此崩溃。完成后,它将起作用!