Скриншоты¶
Sapsan умеет периодически снимать JPEG-кадры с потока: показывать актуальное превью в интерфейсах и сохранять кадры в архив вместе с видео.
Настройка¶
У потока может быть несколько генераторов скриншотов. Каждый берет кадры из одного из двух источников:
http— забирать готовый JPEG по HTTP (например, snapshot-URL камеры);keyframe— рендерить кадр из видеодорожки самого потока на ключевых кадрах.
streams:
- name: cam1
inputs:
- rtsp:
url: rtsp://admin:password@10.0.0.5/stream0
thumbnails:
- http:
url: http://10.0.0.5/snapshot.jpg
fetch_interval: 10 # период съемки, сек (по умолчанию 10)
timeout: 5 # таймаут запроса, сек (по умолчанию 5)
dvr: true # сохранять кадры в архив (по умолчанию false)
- keyframe:
track: v1 # видеодорожка-источник
width: 320 # по умолчанию 320, если размер не задан; минимум 32
height: 180
every: 3gop # снимать каждый 3-й GOP (по умолчанию — каждый GOP)
Правила валидации: fetch_interval, timeout и every должны быть больше 0; размеры кадра — не меньше 32; timeout допустим только у http, а width/height/every — только у keyframe.
Защита от мусора: ответ, который не является JPEG или превышает лимит размера, отбрасывается — превью не обновляется.
Получение скриншотов¶
| Что | URL |
|---|---|
| Текущий кадр потока | http://server/streaming/live-preview-jpeg/<stream> |
| Кадр конкретной дорожки | http://server/streaming/track-preview-jpeg/<stream>/<track> |
| Кадр из архива | http://server/streaming/dvr-preview-jpeg/<stream>/<track>/image/<ref> |
Скриншоты в архиве¶
При dvr: true кадры пишутся в архив как отдельная JPEG-дорожка с реальными размерами кадра. В DASH-манифесте архива она отдается как стандартный thumbnail tile AdaptationSet (http://dashif.org/guidelines/thumbnail_tile) — плееры с поддержкой миниатюр на таймлайне подхватывают ее автоматически.