Как я могу кэшировать видео в React Native - PullRequest
0 голосов
/ 05 июня 2018

Я уже давно борюсь и не могу найти правильного решения этого вопроса: как обращаться с видео-кешем в RN.Я использую ответную нативную видео для показа видео, но этот пакет еще не имеет кеша.Пожалуйста, помогите найти решение.Большое спасибо

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Ответ Дэвида хорош, но вам нужно будет зайти в node_modules/react-native-cached-image/utils/pathUtils.js и отредактировать массив defaultImageTypes, включив в него mp4 или любое расширение файла, которое вы хотите сохранить.Если вы этого не сделаете, то видеофайлы будут сохранены в формате JPG, что приведет к сбою компонента Video.

Похоже, что нет способа переопределить принятые типы файлов без прямой модификацииосновной cached-image модуль.Также вы должны убедиться, что проверили свойство состояния loaded, прежде чем пытаться загрузить видео, потому что это также приведет к сбою.После того, как вы это сделаете, все заработает!

0 голосов
/ 06 июля 2018

Я наконец нашел решение здесь.Таким образом, магия в 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}}

ЭтоЭто !!!Надеюсь, это поможет кому-то сэкономить кучу раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...