Skip to content

Скриншоты

Sapsan умеет периодически снимать JPEG-кадры с потока: показывать актуальное превью в интерфейсах и сохранять кадры в архив вместе с видео.

Настройка

У потока может быть несколько генераторов скриншотов. Каждый берет кадры из одного из двух источников:

  • http_preview — забирать готовый JPEG по HTTP (например, snapshot-URL камеры);
  • video_preview — рендерить кадр из видеодорожки самого потока.
streams:
  cam1:
    inputs:
    - rtsp:
        url: rtsp://admin:password@10.0.0.5/stream0
    thumbnails:
    - http_preview:
        url: http://10.0.0.5/snapshot.jpg
        timeout: 5      # таймаут запроса, сек (по умолчанию 5)
      interval: 10       # период съемки, сек (по умолчанию 10)
      dvr: true          # сохранять кадры в архив (по умолчанию false)
    - video_preview:
        track: v1        # видеодорожка-источник
        width: 320       # по умолчанию 320, минимум 32
        height: 180
      interval: 30

Правила валидации: interval и timeout должны быть больше 0; размеры кадра — не меньше 32; timeout допустим только у http_preview, а width/height — только у video_preview.

Защита от мусора: ответ, который не является 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) — плееры с поддержкой миниатюр на таймлайне подхватывают ее автоматически.

Что дальше