Невозможно воспроизвести видео с SD-карты с использованием собственного видео - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь воспроизвести видео через SD-CARD, используя реагирующее видео.Я использую пакет rn-fetch-blob для взаимодействия с SD-картой.Но я не могу воспроизвести ни одного видео.Я вручную дал разрешения на хранение приложения, и AndroidManifest.xml уже содержит разрешения на чтение и запись для пользователей.

    <Video
        url={{
          uri:
            "file://" +
            RNFetchBlob.fs.dirs.SDCardDir +
            "/Video/videofile1.mp4"
        }}
        style={{ flex: 1 }}
      />

Я пытался использовать «источник» вместо «URL», многие предлагали добавить «файл: // "к началу, но я пока не добился успеха.

Используется SD-CARD - карта SanDisk Ultra microSDHC UHS-I.

1 Ответ

0 голосов
/ 05 апреля 2019

В моем ограниченном (по общему признанию) опыте с rn-fetch-blob это не обещание?

Таким образом, вместо того, чтобы иметь обещание прямо в URL вашего компонента Video, вы воспользуетесь реактивным состоянием! И есть ....

(примечание: я использую ванильное состояние реакции, замените тем, что вы используете, редуксом и т. Д.)

state = {
  url: false
}

.......then later in your render/return:
{
 url 
    ? <Video url={this.state.url} />
    : <SomeLoaderComponentYouDefine />
}

Затем создайте отдельную функцию с вашей логикой rn-fetch-blob, которая может быть вызвана в componentDidMount () (не видя больше кода, сложно определить лучший маршрут). Таким образом, загрузка будет обработана правильно. SomeLoaderComponentYouDefine может быть индикатором нативной активности

Также было бы полезно узнать, на какой ОС она не работает, на обеих, только на одной и т. Д. Есть несколько открытых вопросов, касающихся конкретно разрешений в Android. По моему ограниченному личному опыту

для iOS:

DocumentDir

для Android:

SDCardApplicationDir

вообще работает.

...