Skip to content

Инициализация компонентов

Компонент FlussonicWatcherView

Чтобы FlussonicWatcherView начал проигрывать видео, необходимо вызвать два метода:

  • один метод из семейства initialize()
  • setUrl(@NonNull String url).

Эти методы могут вызываться в любом порядке.

В initialize() необходимо передать параметры, возможные варианты в зависимости от способа использования FlussonicWatcherView:

  • Activity
  • Fragment
  • Activity и булевский признак, что SDK используется из React Native (этот метод используется в React Native модуле Flussonic Watcher SDK).

В Java коде нужно вызвать сеттер setUrl, в React Native при инициализации компонента в верстке задать свойство url.

Компонент FlussonicThumbnailView

Чтобы FlussonicThumbnailView начал загрузку кадра, необходимо вызвать метод

setUrl(@NonNull String url)

или

show(@NonNull Camera camera, @Nullable Date date).

В первом случае по переданному URL сформируются параметры загрузки MP4-кадра.

Во втором случае компонент сначала попытается получить параметры подключения стримера, затем уже сформирует параметры загрузки MP4-кадра по полученным параметрам стримера.

Формат входного URL

URL имеет вид:

<protocol>://<token>@<server>:<port>/<stream>?<query>

где:

  • <protocol>http или https
  • <token> — токен, получаемый при запросе login, часть <token>@ может отсутствовать
  • <server> — имя Watcher сервера, на который необходимо направить запрос cameras
  • <port> — порт, часть :<port> может отсутствовать
  • <stream> — имя камеры
  • <query> — параметры запроса. Часть ?<query> может отсутствовать. При парсинге в <query> ищется подстрока вида from=<number>, в этом случае <number> интерпретируется как startPosition (см. метод setStartPosition).

В Java коде для парсинга используется стандартный парсер URL и дополнительные проверки, поэтому принято на вход может быть довольно большое количество вариантов URL, которые будут давать одни и те же параметры в итоге.

Пример

На вход поступает URL

http://ZrYTXYC_m_msfRY4cZChbcvRj80@demo-watcher.flussonic.com/camera.32-84a1f604d5

Внутри SDK делается запрос:

http://demo-watcher.flussonic.com/vsaas/api/v2/cameras?search=camera.32-84a1f604d5

Из этого запроса получаются параметры подключения к транслирующему серверу (стримеру).

Далее в FlussonicWatcherView делаются запросы recording_status:

  • для получения границ записи такого вида:

https://demo-watcher.flussonic.com/camera.32-84a1f604d5/recording_status.json?token=WyJhODkxIiwzMl0.DjDejw.NiqeL_p4z02NGjFuXwpBi6gfcCw

  • и для получения диапазонов — такого вида:

https://demo-watcher.flussonic.com/camera.32-84a1f604d5/recording_status.json?request=motion_log,ranges&token=WyJhODkxIiwzMl0.DjDejw.NiqeL_p4z02NGjFuXwpBi6gfcCw&from=1531923717&to=1531923737