Текущее поведение
У меня есть список приложений для социальных сетей, в которых есть видео и изображения (до 10 Мб каждый).
Есть экран с фидом пользователя, организованный в виде FlatList, на котором я загружаю пока только (!) Два видео и одно изображение. Приложение показывает черный экран вместо компонента Видео, только на 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, составляет около 170 МБ и продолжает расти.
Ожидаемое поведение
Я ожидал показать видео.
Платформа
Окружающая среда:
ОС: macOS High Sierra 10.13.6
Узел: 8.10.0
Пряжа: 1,5,1
нпм: 5,6,0
Сторож: 4.9.0
Xcode: Xcode 9.4.1, сборка 9F2000
Android Studio: 3.1 AI-173.4670197
Пакеты: (хотел => установлен)
Реакция: 16.2.0 => 16.2.0
Реактор: 0,54,4 => 0,54,4
На каком игроке у вас возникла проблема:
Я использую тег Видео из: импортировать видео из'act-native-video ';
https://www.dropbox.com/s/o7q9kejiabs7y88/CrashVideo.mp4?dl=0
Вопросы
1) как это можно решить?
2) Это связано с проблемами памяти? Когда я загружаю еще 10 видео, приложение вылетает из-за ошибки (как я вижу в Crashlytics), называемой «Fatal Exception: java.lang.OutOfMemoryError».
Не загружается ли библиотека response-native-video при использовании большого объема памяти?
3) FlatList на Android выгружает из памяти изображения / видео при прокрутке их вне поля зрения? В противном случае, если я перестану выполнять прокрутку, буду ли я постоянно добавлять изображения / видео в память приложения, и это в конечном итоге приведет к сбою?
4) Другое решение для производительности для видео? Я думаю о реакции-native-thumbnail, чтобы сначала показать миниатюру, чтобы не загружать все видео. У меня проблемы с установкой библиотеки (проблема № 35 на https://github.com/phuochau/react-native-thumbnail/issues/35), знаете ли вы лучший способ получить миниатюру видео? (чтобы вместо показа видео в ленте я показывал их при касании миниатюры на другом экране).
5) Exoplayer устраняет эту проблему?
Это я считаю самой большой проблемой с этим приложением до сих пор. Сообщите, какие решения вы нашли в приложениях с каналами с видео.
(Я разместил вопрос на Github здесь, но иногда я получаю ответы только на SO: https://github.com/react-native-community/react-native-video/issues/1318)
Спасибо!