1

当前行为

我有一个包含视频和图像(每个小于 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 )

谢谢!

4

0 回答 0