Skip to main content

No project description provided

Project description

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

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

  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.
  • Среда разработки: Возможность разработки и тестирования должна быть обеспечена как в локальной среде, так и на целевых серверах.
  • Документация: Каждый новый класс и метод должен сопровождаться подробными комментариями и документацией. Также необходимо подготовить инструкции по развер

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

piestreamer-0.1.0.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

piestreamer-0.1.0-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file piestreamer-0.1.0.tar.gz.

File metadata

  • Download URL: piestreamer-0.1.0.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for piestreamer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8da3f1176b9804a793287048cda411ef471e7d81366f77d64fdb580b270bc41d
MD5 4a58b619fab52000d22fcfdb3aaa7471
BLAKE2b-256 5310ea0d9b5f99f95b628bb10dfc729fd5fb0731ef563381f83f38fc91089661

See more details on using hashes here.

Provenance

The following attestation bundles were made for piestreamer-0.1.0.tar.gz:

Publisher: release.yml on PieDataLabs/piestreamer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file piestreamer-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: piestreamer-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 38.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for piestreamer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 323ef0ddb983175dff51e91a7e6679a4e71067ba51c65291130720237c4df4d3
MD5 e78cf38614249015f21b369f91f372d5
BLAKE2b-256 aa87d8f7ea7239b122e95f149dedbe4e6184753064ccaf7979d4f8a1277e3f87

See more details on using hashes here.

Provenance

The following attestation bundles were made for piestreamer-0.1.0-py3-none-any.whl:

Publisher: release.yml on PieDataLabs/piestreamer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page