Сервис транскодирования видео — фоновый сервис с возможностью конвертировать видео с высоким битрейтом в видео с низким битрейтом и конвертировать видео в разные форматы кодирования;
Показатели эффективности:
Показатели пропускной способности и производительности | |
---|---|
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/порт получения отслеживаемого пакета услуги перекодирования;
Между главным узлом и главным узлом существует контрольное сообщение, между главным узлом и дочерними узлами существует контрольное сообщение, но между дочерними узлами нет контрольного сигнала, поэтому главный узел должен отвечать за распределение задач перекодирования; дочерние узлы пересылают запросы дочерним узлам и сохраняют информацию о состоянии каждого дочернего узла, такую как количество задач и пропускная способность, которая отвечает за балансировку нагрузки между главным узлом и подузлами, на которых можно развернуть; разные серверы распределенным образом. Конкретные периодические сообщения и сообщения о распределении задач отражены в детальном проекте.