Инициализация компонентов
Компонент 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