Skip to main content

Техническое задание

Пошаговое задание

  1. Поток видео с RSTP через ffmpeg посекундно сохранять в директорию по кадрам
  2. Собрать 128 последовательных кадров и из них сделать видео, и удалить кадры из директории
  3. Видео отправить в CDN и получить ID
  4. Сохранить ID в базу с информацией о времени и об индексов кадров

Этпы реализации

  1. Абстрагировать интерфейс CDN
  • Базовый класс при сохрании отрывков видео
  • Отнаследоваться от базового класса и реализовать хранение в том же gridfs
  • в публичном CDN Amazon
  • локальный CDN поднять и сохранял эти файлы
  1. Метрики сохранения
  • файл теста, в котором будет 30 минут считываться все потоки, сохраняться на CDN и после сохранения чтобы выводил максимальное и среднее значение задержек Задержка - это разница между двумя последовательными кадрами при чтении по каждому урлу выводить максимальное и среднее значение задержек
  1. Оптимизировать сервис, так чтобы метрики снизились

Продолжение

ffmpeg может читать из потока и сразу созранять как видео

Текущая команда:

ffmpeg -rtsp_transport tcp -i 'rtsp://faceid:Hv4w2!X7r@37.204.180.11:554/cam/realmonitor?channel=6&subtype=0' -filter:v fps=2 -an -use_wallclock_as_timestamps 1 -f segment -reset_timestamps 1 -segment_time 128 -segment_format mkv -strftime 1 test_output/%Y%m%dT%H%M%S.mkv

Нужно ознакомиться с документацией, дополнить команду так, чтобы колиество фреймов было фиксировано - 128 https://ffmpeg.org/ffmpeg-all.html#segment_002c-stream_005fsegment_002c-ssegment

Решение 1

ffmpeg -rtsp_transport tcp -i 'rtsp://faceid:Hv4w2!X7r@37.204.180.11:554/cam/realmonitor?channel=6&subtype=0' -c:v libx264 -x264-params keyint=1:min-keyint=1 -filter:v fps=2 -an -use_wallclock_as_timestamps 1 -f segment -reset_timestamps 1 -segment_time 64 -segment_time_delta 0.5 -segment_format mkv -strftime 1 test_output/2/%Y%m%dT%H%M%S.mkv

Решение 2 - с архивацией

ffmpeg -rtsp_transport tcp -i 'rtsp://faceid:Hv4w2!X7r@37.204.180.11:554/cam/realmonitor?channel=6&subtype=0' -c:v libx264 -preset veryfast -crf 40 -filter:v fps=1 -x264-params keyint=1:min-keyint=1 -an -use_wallclock_as_timestamps 1 -f segment -reset_timestamps 1 -segment_time 128 -segment_format mp4 -strftime 1 'test_output/6/%Y%m%dT%H%M%S.mp4'

Решение 3 (лучшее) - с архивацией и ускорением

ffmpeg \
-rtsp_transport tcp \
-i 'rtsp://faceid:Hv4w2!X7r@37.204.180.11:554/cam/realmonitor?channel=6&subtype=0' \
-c:v libx264 -preset medium -crf 34 \
-filter:v "fps=16, setpts=PTS/16" \
-x264-params keyint=1:min-keyint=1 -an \
-use_wallclock_as_timestamps 1 \
-f segment -reset_timestamps 1 -segment_time 8 \
-segment_format mp4 -strftime 1 \
'test_output/11/%Y%m%dT%H%M%S.mp4'

Доп. информация

Иструкция: https://gist.github.com/TomHumphries/f565e0ce479e4acae4a6ecb1d244dbbc


Структурв БД:

- dt: datetime
- grid_id: ObjectId
- index: int
- room_id: ObjectId
- meta: dict

storage: [grid_id, file]

10:00 - 12:00 room_id

query - grid_id, index которые в этот промежток

Техническое задание для оптимизации записи и хранения медиа файлов

Общее описание задачи

Целью проекта является оптимизация процессов захвата, записи и хранения видео и аудио данных, используя возможности ffmpeg, для улучшения производительности, эффективности хранения и расширения функциональности системы.

Основные требования:

  1. Интеграция ffmpeg для захвата и обработки видеопотоков:

    • Замена текущей логики захвата видеопотоков с использованием OpenCV на ffmpeg.
    • Реализация функций предварительной обработки видеопотоков, включая изменение разрешения, сжатие, конвертацию в черно-белый формат и другие.
  2. Разработка новых классов для записи и чтения видео с использованием ffmpeg:

    • Создание классов, аналогичных EfficientGridFSWriter и EfficientGridFSReader, для работы с файлами через ffmpeg.
    • Обеспечение совместимости новых классов с существующей архитектурой системы.
  3. Оптимизация хранения видео и аудио данных:

    • Исследование возможностей ffmpeg для оптимизации форматов хранения данных с целью экономии дискового пространства при сохранении качества.
    • Адаптация схемы хранения данных в MongoDB с учетом новых форматов и требований к эффективности.
  4. Разработка метрик и тестов для оценки производительности системы:

    • Создание инструментов для измерения производительности захвата, обработки и хранения данных.
    • Сбор и анализ метрик для определения оптимальных настроек ffmpeg и структуры хранения данных.

Детальные требования:

  1. Абстракция интерфейса CDN для унификации работы с хранилищами:

    • Разработка базового класса для абстракции процессов сохранения и чтения данных.
    • Имплементация конкретных классов для работы с GridFS MongoDB, Amazon CDN и локальными хранилищами.
  2. Реализация тестового сценария для измерения задержек:

    • Создание скрипта для автоматизированного тестирования, измеряющего задержки при работе с различными CDN.
    • Анализ полученных данных для выявления узких мест в процессе сохранения данных.
  3. Оптимизация сервиса для снижения задержек:

    • Использование результатов тестирования для оптимизации параметров кодирования ffmpeg.
    • Адаптация логики записи и чтения данных для минимизации задержек.

Технические детали:

  • Язык программирования: Python 3.
  • Основные библиотеки и инструменты: ffmpeg, imageio-ffmpeg, PIL (Pillow), numpy, pymongo, gridfs.
  • Среда разработки: Возможность разработки и тестирования должна быть обеспечена как в локальной среде, так и на целевых серверах.
  • Документация: Каждый новый класс и метод должен сопровождаться подробными комментариями и документацией. Также необходимо подготовить инструкции по развер

тыванию и настройке новых компонентов системы.

Metadata

Release files for piestreamer 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for piestreamer 0.1.0
File Size Uploaded Provenance Actions
piestreamer-0.1.0.tar.gz 25.0 kB With provenance Details for piestreamer-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for piestreamer 0.1.0
File Interpreter ABI Platform Actions
piestreamer-0.1.0-py3-none-any.whl Python 3 none any Details for piestreamer-0.1.0-py3-none-any.whl

Total release size: 63.4 kB

Release files / piestreamer-0.1.0.tar.gz

Download URL piestreamer-0.1.0.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
8da3f1176b9804a793287048cda411ef471e7d81366f77d64fdb580b270bc41d
BLAKE2b-256 checksum
How to use checksums
5310ea0d9b5f99f95b628bb10dfc729fd5fb0731ef563381f83f38fc91089661
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 6, 2026.

Transparency log

Release files / piestreamer-0.1.0-py3-none-any.whl

Download URL piestreamer-0.1.0-py3-none-any.whl
Size 38.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
323ef0ddb983175dff51e91a7e6679a4e71067ba51c65291130720237c4df4d3
BLAKE2b-256 checksum
How to use checksums
aa87d8f7ea7239b122e95f149dedbe4e6184753064ccaf7979d4f8a1277e3f87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 6, 2026.

Transparency log

Security for piestreamer 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for piestreamer-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page