当前行为
我有一个包含视频和图像(每个小于 10 Mb)的社交网络应用程序列表。有一个带有用户提要的屏幕,组织在一个平面列表中,我现在只加载(!)两个视频和一个图像。该应用程序在视频组件的位置显示黑屏,仅在 Android 上。iOS不会出现黑屏问题!(我想是因为内存管理的方式和滚动列表在 iOS 中是如何完成的)
复制步骤
这是我的视频代码:
<Video
source={{ uri: this.state.uri }}
ref={(ref) => {
this.player = ref
}}
paused={this.state.paused}
resizeMode={this.state.resizeMode}
onLoad={this.handleLoad}
onEnd={this.handleEnd.bind(this)}
style={[this.state.style, { backgroundColor: '#3d3d3d' }]}
/>
另外,如果我添加 AndroidManifest:
在 Android Studio 中,应用程序消耗的内存大约为 170Mb,并且还在增长。
预期行为
我希望显示视频。
平台
环境:
操作系统:macOS High Sierra 10.13.6
节点:8.10.0
纱线:1.5.1
npm:5.6.0
守望者:4.9.0
Xcode:Xcode 9.4.1 构建版本 9F2000
安卓工作室:3.1 AI-173.4670197
软件包:(需要 => 已安装)
反应:16.2.0 => 16.2.0
反应原生:0.54.4 => 0.54.4
您在哪个播放器上遇到问题:我正在使用来自以下位置的视频标签:从“react-native-video”导入视频;
https://www.dropbox.com/s/o7q9kejiabs7y88/CrashVideo.mp4?dl=0
问题
1)这个问题的解决方案是什么?
2)这与内存问题有关吗?当我再加载 10 个视频时,应用程序由于名为“致命异常:java.lang.OutOfMemoryError”的错误(正如我在 Crashlytics 中看到的那样)而崩溃。使用高内存时,库 react-native-video 是否不加载?
3) 当我将图像/视频滚动到视图之外时,Android 上的 FlatList 是否会从内存中卸载它们?否则,如果我向下滚动,我是否会不断将图像/视频添加到应用程序内存并最终崩溃?
4) 是视频性能的另一种解决方案吗?我正在考虑 react-native-thumbnail 最初显示缩略图以不下载整个视频。我在安装库时遇到问题(https://github.com/phuochau/react-native-thumbnail/issues/35上的问题 #35 ),您知道获取视频缩略图的更好方法吗?(所以我不是在提要中显示视频,而是在不同屏幕上的缩略图触摸上显示它们)。
5) Exoplayer 能消除这个问题吗?
这是我认为到目前为止这个应用程序最大的挑战。请将您找到的解决方案提供给带有视频源的应用程序。(我已经在 Github 上发布了这个问题,但有时我只在 SO 上得到回复:https ://github.com/react-native-community/react-native-video/issues/1318 )
谢谢!