No project description provided
Project description
Техническое задание
Пошаговое задание
- Поток видео с RSTP через ffmpeg посекундно сохранять в директорию по кадрам
- Собрать 128 последовательных кадров и из них сделать видео, и удалить кадры из директории
- Видео отправить в CDN и получить ID
- Сохранить ID в базу с информацией о времени и об индексов кадров
Этпы реализации
- Абстрагировать интерфейс CDN
- Базовый класс при сохрании отрывков видео
- Отнаследоваться от базового класса и реализовать хранение в том же gridfs
- в публичном CDN Amazon
- локальный CDN поднять и сохранял эти файлы
- Метрики сохранения
- файл теста, в котором будет 30 минут считываться все потоки, сохраняться на CDN и после сохранения чтобы выводил максимальное и среднее значение задержек Задержка - это разница между двумя последовательными кадрами при чтении по каждому урлу выводить максимальное и среднее значение задержек
- Оптимизировать сервис, так чтобы метрики снизились
Продолжение
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, для улучшения производительности, эффективности хранения и расширения функциональности системы.
Основные требования:
-
Интеграция
ffmpegдля захвата и обработки видеопотоков:- Замена текущей логики захвата видеопотоков с использованием OpenCV на
ffmpeg. - Реализация функций предварительной обработки видеопотоков, включая изменение разрешения, сжатие, конвертацию в черно-белый формат и другие.
- Замена текущей логики захвата видеопотоков с использованием OpenCV на
-
Разработка новых классов для записи и чтения видео с использованием
ffmpeg:- Создание классов, аналогичных
EfficientGridFSWriterиEfficientGridFSReader, для работы с файлами черезffmpeg. - Обеспечение совместимости новых классов с существующей архитектурой системы.
- Создание классов, аналогичных
-
Оптимизация хранения видео и аудио данных:
- Исследование возможностей
ffmpegдля оптимизации форматов хранения данных с целью экономии дискового пространства при сохранении качества. - Адаптация схемы хранения данных в MongoDB с учетом новых форматов и требований к эффективности.
- Исследование возможностей
-
Разработка метрик и тестов для оценки производительности системы:
- Создание инструментов для измерения производительности захвата, обработки и хранения данных.
- Сбор и анализ метрик для определения оптимальных настроек
ffmpegи структуры хранения данных.
Детальные требования:
-
Абстракция интерфейса CDN для унификации работы с хранилищами:
- Разработка базового класса для абстракции процессов сохранения и чтения данных.
- Имплементация конкретных классов для работы с GridFS MongoDB, Amazon CDN и локальными хранилищами.
-
Реализация тестового сценария для измерения задержек:
- Создание скрипта для автоматизированного тестирования, измеряющего задержки при работе с различными CDN.
- Анализ полученных данных для выявления узких мест в процессе сохранения данных.
-
Оптимизация сервиса для снижения задержек:
- Использование результатов тестирования для оптимизации параметров кодирования
ffmpeg. - Адаптация логики записи и чтения данных для минимизации задержек.
- Использование результатов тестирования для оптимизации параметров кодирования
Технические детали:
- Язык программирования: Python 3.
- Основные библиотеки и инструменты:
ffmpeg,imageio-ffmpeg,PIL(Pillow),numpy,pymongo,gridfs. - Среда разработки: Возможность разработки и тестирования должна быть обеспечена как в локальной среде, так и на целевых серверах.
- Документация: Каждый новый класс и метод должен сопровождаться подробными комментариями и документацией. Также необходимо подготовить инструкции по развер
тыванию и настройке новых компонентов системы.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8da3f1176b9804a793287048cda411ef471e7d81366f77d64fdb580b270bc41d
|
|
| MD5 |
4a58b619fab52000d22fcfdb3aaa7471
|
|
| BLAKE2b-256 |
5310ea0d9b5f99f95b628bb10dfc729fd5fb0731ef563381f83f38fc91089661
|
Provenance
The following attestation bundles were made for piestreamer-0.1.0.tar.gz:
Publisher:
release.yml on PieDataLabs/piestreamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
piestreamer-0.1.0.tar.gz -
Subject digest:
8da3f1176b9804a793287048cda411ef471e7d81366f77d64fdb580b270bc41d - Sigstore transparency entry: 1052417548
- Sigstore integration time:
-
Permalink:
PieDataLabs/piestreamer@af7febb03054ee58d86330e44923b75661bc91d2 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/PieDataLabs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@af7febb03054ee58d86330e44923b75661bc91d2 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
323ef0ddb983175dff51e91a7e6679a4e71067ba51c65291130720237c4df4d3
|
|
| MD5 |
e78cf38614249015f21b369f91f372d5
|
|
| BLAKE2b-256 |
aa87d8f7ea7239b122e95f149dedbe4e6184753064ccaf7979d4f8a1277e3f87
|
Provenance
The following attestation bundles were made for piestreamer-0.1.0-py3-none-any.whl:
Publisher:
release.yml on PieDataLabs/piestreamer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
piestreamer-0.1.0-py3-none-any.whl -
Subject digest:
323ef0ddb983175dff51e91a7e6679a4e71067ba51c65291130720237c4df4d3 - Sigstore transparency entry: 1052417564
- Sigstore integration time:
-
Permalink:
PieDataLabs/piestreamer@af7febb03054ee58d86330e44923b75661bc91d2 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/PieDataLabs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@af7febb03054ee58d86330e44923b75661bc91d2 -
Trigger Event:
push
-
Statement type: