如何在 React Native 中缓存视频

Dav*_*vid 3 video caching react-native

我已经挣扎了很长时间,找不到这个问题的正确解决方案:如何处理 RN 中的视频缓存。我正在使用react-native-video来显示视频,但该包还没有缓存选项。请帮忙寻找解决方案。多谢

Nat*_*bin 6

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

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


Dav*_*vid 5

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

...
import { ImageCacheManager } from "react-native-cached-image";
import Video from "react-native-video";
...
    // inside class based component
    componentDidMount() {
       ImageCacheManager({})
        .downloadAndCacheUrl(this.props.source.uri)
        .then(res => {
          this.setState({ cachedVideoURI: res, loaded: true });
        })
        .catch(err => {
         ...
        });
    }
Run Code Online (Sandbox Code Playgroud)

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

<Video source={{uri: this.state.cachedVideoURI}}
Run Code Online (Sandbox Code Playgroud)

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