我已经很长时间挣扎,无法找到解决这个问题的正确方法:如何处理RN中的视频缓存。我使用react-native-video来显示视频,但该软件包还没有缓存选项。请帮助找到解决方案。非常感谢
答案 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
状态属性,因为视频也会因此崩溃。完成后,它将起作用!