Инструкции по архитектуре службы транскодирования видео
Инструкции по архитектуре службы транскодирования видео

Определение требований

Сервис транскодирования видео — фоновый сервис с возможностью конвертировать видео с высоким битрейтом в видео с низким битрейтом и конвертировать видео в разные форматы кодирования;

Определение спецификации

Показатели эффективности:

Показатели пропускной способности и производительности

4-ядерная сетевая карта 8G 1000M Видеокарта GeForce GT 1030 или выше ЦП до 80 % Использование сети до 70 %

Маршрут 100 720P HD 2Mbps -> 640*480P 800кбит/с50 каналов 1080P HD 4Mbps  -> 640*480P Требование к задержке 800 кбит/с: задержка воспроизведения видео службы транскодирования должна быть менее 3 с.

Поддерживаемые протоколы и типы кодирования:

тип протокола

TCP/UDP

Поддержка потоковой передачи

RTP/PS/RTMP

Тип видео

H264/VP8/VP9/H265

тип аудио

AAC/OPUS/iLBC

Архитектурный дизайн

Блок-схема модуля сервиса транскодирования видео выглядит следующим образом:

Рисунок 1. Общая блок-схема

FFmpeg — это среда разработки мультимедиа, которая может выполнять функции декодирования, преобразования и потоковой передачи аудио и видео в различных форматах. Она включает в себя libavcodec, библиотеку декодера аудио и видео в нескольких проектах, libavformat, библиотеку преобразования форматов аудио и видео, и libavfilter. Инструмент фильтра, используемый для создания водяных знаков, наложения и других специальных эффектов. В то же время FFmpeg может выполнять кодирование и декодирование видео, используя ускорение графического процессора Nvidia. Согласно сравнению производительности аппаратного и программного кодирования на веб-сайте Nvidia, производительность основана на количестве кодируемых кадров в секунду в качестве эталонного показателя. , а качество основано на PSNR в качестве эталонного показателя. Вы можете видеть. С точки зрения производительности кодировщик Nvidia в 2–5 раз выше, чем x264. С точки зрения качества кодировщик Nvidia лучше, чем x264, для сценариев с быстрой потоковой передачей.

ZLMediaKit — это высокопроизводительная платформа служб потокового мультимедиа операторского уровня, основанная на C++11. Она поддерживает несколько протоколов потокового мультимедиа (RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV), поддерживает взаимное преобразование между протоколами. и он инкапсулирует модель асинхронного сетевого программирования ввода-вывода и представляет собой платформу службы потокового мультимедиа, которая очень подходит для серверов перекодирования.

Модель резьбы

Поток приема запроса на перекодирование (прослушивание фиксированного порта 3500)

Получение потока медиа-пакетов

поток перекодирования

отправка потока

ветка журнала

Проектирование диаграммы классов

Определение формата входного запроса потока приема запроса на перекодирование:

Введите запрос

{“dest_ip”:11.12.112.10,“dest_port”:9000,“socket_protocol”:”udp”,“transport_protocol”:”rtp”,“source_width”:1080,“source_height”:1920,“source_samplerate”:2000,“source_media_type”:”rtp”,“source_video_codec”:”h264”,“source_audio_codec”:”aac”,“dest_video_codec”:”h264”,“dest_audio_codec”:”aac”,“dest_width”:640,“dest_height”:480,“dest_samplerate”:800 }

выход

{“recv_packet_ip”:”11.12.112.10”, “recv_packet_port”:”9099”}

выход:ЦельIP、порт,сетевой протокол, Разрешение исходного кода, скорость исходного кода, целевое разрешение, целевой битрейт, Тип носителя (RTP/PS/RTMP/RTSP), формат видео, формат аудио, целевой формат видео, Целевой аудиоформат

Возврат: IP/порт получения отслеживаемого пакета услуги перекодирования;

диаграмма бизнес-процесса

  1. Вызывающий абонент сначала отправляет сообщение на порт 3500 перекодирования видео Служить фоном.,Настройка информации, связанной с перекодированием,Запрос на начало транскодирования;
  2. видео перекодировать Служить после получения запроса от звонящего приехать,Определите, есть ли у вас возможности Служить, необходимые для перекодирования.,и хранить информацию о конфигурации,Возвращает прослушиваемый IP-адрес и порт для приема перекодированных пакетов;
  3. Вызывающий абонент прослушивает принимающий порт целевого видео,И затем после получения целевого видеопотока «Приехать»,Направление нуждающемуся клиенту,Вы также можете напрямую указать IP-адрес и порт клиента в качестве параметров для перекодирования. Служить на первом этапе.,Вызывающему абоненту не требуется получать перекодированный поток;
  4. IP получателя и порт отправки видеопотока приезжать транскодировать Служить;
  5. Отправьте перекодированные видеоданные на принимающий IP-адрес и порт;
  6. На этом этапе на порт 3500 отправляется сообщение о завершении перекодирования.

Поддержка балансировки нагрузки

Между главным узлом и главным узлом существует контрольное сообщение, между главным узлом и дочерними узлами существует контрольное сообщение, но между дочерними узлами нет контрольного сигнала, поэтому главный узел должен отвечать за распределение задач перекодирования; дочерние узлы пересылают запросы дочерним узлам и сохраняют информацию о состоянии каждого дочернего узла, такую ​​как количество задач и пропускная способность, которая отвечает за балансировку нагрузки между главным узлом и подузлами, на которых можно развернуть; разные серверы распределенным образом. Конкретные периодические сообщения и сообщения о распределении задач отражены в детальном проекте.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose