Dav*_*vid 3 video caching react-native
我已经挣扎了很长时间,找不到这个问题的正确解决方案:如何处理 RN 中的视频缓存。我正在使用react-native-video来显示视频,但该包还没有缓存选项。请帮忙寻找解决方案。多谢
大卫的答案很好,但您需要进入node_modules/react-native-cached-image/utils/pathUtils.js并编辑defaultImageTypes数组以包含mp4或您想要保存的任何文件扩展名。如果不这样做,视频文件将保存为 JPG 并导致组件Video崩溃。
似乎没有办法在不直接修改核心cached-image模块的情况下覆盖接受的文件类型。此外,您还需要确保loaded在尝试加载视频之前检查状态属性,因为它也会因此崩溃。这样做之后,它就会起作用!
我终于在这里找到了解决方案。神奇之处就在于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)
就是这样 !!!希望这能帮助某人节省很多时间