Опыт создания видеорегистратора для потоков RTSP/RTP?

Я должен хранить непрерывные видеопотоки со многих IP-камер. Видео кодируется в формате H.264, а аудио - в формате AAC или MP3. Записанные видео будут воспроизводиться в основном на мобильных устройствах, а также в браузерах.

  • Какова будет лучшая стратегия для создания масштабируемой службы записи?

  • Какой лучший формат хранения? mp4?

  • Должен ли я конвертировать видео прямо в MP4? или лучше хранить RAW RTP?

  • Каков наилучший способ обеспечить лучшую надежность и меньшую потерю кадров и избежать потери синхронизации между аудио и видео?

  • Я также хочу услышать подобные опыты

Спасибо!

1 ответ

  • Какова будет лучшая стратегия для создания масштабируемой службы записи?

В глобальном масштабе одно физическое устройство (то есть ПК) работает под управлением главного контроллера, порождая один выделенный рекордер с помощью камеры. Что касается производительности, в случае монофонического устройства это кажется мне довольно распространенным.

  • Какой лучший формат хранения? mp4?

Разрешение, сжатие, качество - сложный вопрос, который может быть частично сведен к простой математике:

Емкость записи = номер или жесткий диск * Полоса записи HDD - номер камеры * Кодированная видео полоса пропускания.

Еще один способ получить это ограничение на хранение:

Предел хранения = номер или жесткий диск * Емкость жесткого диска - номер камеры * полоса кодированного видео * время.

Вам также следует проверить соединение между вашим устройством и камерами: ethernet limit = 100Mbps - количество камер * rawvideo bandwith.

Что касается mp4, вам нужно сравнить его визуальное качество с другим форматом на равных частотах, но это кажется хорошим выбором.

  • Должен ли я конвертировать видео прямо в MP4? или лучше хранить RAW RTP?

Я думаю, что в большинстве случаев нет необходимости хранить RAW-данные. Но этот момент может зависеть от части CPU/GPU вашего оборудования.

Какое первое ограничение вы достигнете: размер жесткого диска и скорость записи или ограничение скорости кодирования?

Если вы не можете кодировать достаточно быстро, нет другого выбора, кроме написания RAW. Если вы не можете написать Raw, нет другого выбора, кроме кодирования. Иногда вы ничего не сможете сделать: уменьшите разрешение, обновите оборудование, используйте меньше камер:)

Обратите внимание, что камеры могут давать другой формат, более или менее готовый к использованию. Существует мир между сырыми YUV и MJPEG!

Последний пункт: если ваше приложение использует несколько физических устройств, "меньшее" из них может специализироваться на сборе данных, а большее может собирать, преобразовывать и хранить данные.

  • Каков наилучший способ обеспечить лучшую надежность и меньшую потерю кадров и избежать потери синхронизации между аудио и видео?

Купи хорошие камеры. Не используйте слишком длинные провода, если они есть. Позаботься о них обоих. Не используйте больше камер, чем может управлять ваша система.

  • Я также хочу услышать подобные опыты

В настоящее время я работаю над встроенным устройством под управлением Linux и управляю до 4 USB-камерами. Так как мне понадобился интерактивный оверлейный интерфейс в моем видео, я переключился с ffmpeg на свой собственный скрипт на python. Этот продукт скоро появится на рынке, все прототипы уже проданы. Чтобы увеличить производительность (FPS слишком низок, чтобы быть идеальным, в основном из-за отображения и наложения), я сейчас работаю над C-версией программы.

У нас есть некоторые отличия в нашем проекте: мне не нужно сохранять потоки, только картинки. Поскольку я отображал одну камеру за раз на экране, также не было необходимости использовать подпроцесс для каждой камеры, так как вам потребуется. Так что я не смогу быть более точным в этих вопросах. Из опыта: вы не хотите делать какие-либо конкретные разработки для вашего проекта, касающиеся преобразования и захвата видео. Ваш вопрос помечен ffmpeg, придерживайтесь его, пока он может делать то, что вам нужно.

Ваш вопрос был отвергнут за широкую аудиторию, но при разработке новой услуги многие вопросы правомерно задавать, поскольку они менее документированы, чем чистый код.

Другие вопросы по тегам