Транскодеры¶
Транскодеры перекодируют видео и звук потока: снижают битрейт для OTT или мультиплекса, меняют кодек и разрешение, готовят варианты для адаптивных наборов. Каждый транскодер работает как отдельный процесс узла; поддерживается схема «один ко многим» — с одного декодера можно получить несколько выходных потоков с разными настройками кодирования. Транскодирование доступно только SPTS-потокам; в исходном потоке должны быть и видео, и звук.
Архитектура транскодера: один декодер (общий) и N независимых ветвей «обработка + кодер»; звуковые дорожки обрабатываются отдельно от видео, субтитры и телетекст проходят насквозь.¶
Подключение¶
Транскодер соединяет два и более потока:
На потоке-источнике добавляется выход типа transcoder — это декодер. В его настройках выбирается бэкенд транскодирования (см. ниже).
На потоке-результате добавляется вход типа transcoder — это кодер. В его настройках выбирается работающий декодер-источник (поле Decoder).
Шаг 2 повторяется для каждого дополнительного варианта — все они используют общий декодер.
Дальше поток-результат работает как обычный SPTS-поток: его можно раздавать в OTT, записывать в DVR, подавать в мультиплексор.
Бэкенды и кодеки¶
Бэкенд выбирается на декодере (поле Transcoder backend; значения приведены как в интерфейсе):
- Video pass-through
Видео проходит без перекодирования; транскодируется только звук. Режим выполняет программный транскодер, поэтому пакет программного транскодирования должен быть установлен (Транскодеры).
- Software (CPU)
Программное транскодирование на процессоре.
- NVidia (GPU)
Аппаратное транскодирование на графических процессорах NVIDIA.
- Intel VPL (GPU)
Аппаратное транскодирование на графических процессорах Intel.
Для GPU-бэкендов устройство выбирается полем GPU device selector (дополнительная настройка). Это нужно на серверах с несколькими картами. Пакеты транскодеров устанавливаются отдельно (Транскодеры); установленные бэкенды, их версии и найденные устройства показаны на экране «О системе» (О системе).
Декодер принимает видео MPEG-2, H.264, HEVC и звук MPEG (Layer 1–3), AAC, AC-3. Кодер выдаёт видео H.264 и HEVC (кодер NVIDIA не поддерживает MPEG-2; MPEG-2 кодируют бэкенды Software и Intel VPL), звук — MPEG Layer II и AAC.
Особенности декодера:
чересстрочные (interlace) потоки поддерживаются на входе и выходе; для H.264 и HEVC формат interlace alternate (отдельные поля) преобразуется в interleaved;
для HEVC поддерживается профиль Main10 с BT.709 (SDR) и BT.2020 (HDR); кодер HEVC всегда использует профиль Main с BT.709;
переменная частота кадров (VFR) преобразуется в постоянную;
поддерживаются потоки без IDR-кадров.
Настройки декодера¶
Задаются на выходе типа transcoder потока-источника (названия приведены как в интерфейсе; все перечисленные ниже настройки дополнительные):
- Fix PAR (N/D), Fix frame rate (N/D)
Подсказки для исправления данных входного потока: они не преобразуют поток, а корректируют параметры, когда источник их не сообщает или сообщает неверно. Fix PAR — соотношение сторон пикселя дробью (например, 16/9 для Wide SD); Fix frame rate — частота кадров дробью, если она отсутствует в потоке (PAL — 25/1, NTSC — 30000/1001, кино — 24/1).
- Convert to BT.709
Конвертация цветовых форматов SD (BT.470-2 PAL, SMPTE 170M NTSC) в BT.709.
- Watchdog timeout
Таймаут сторожевого перезапуска процесса транскодера.
Процесс транскодера всегда ведёт подробный журнал; отдельная настройка трассировки не требуется (Контроль работы). Журнал хранится только в памяти узла; как сохранить его для разбора, описано в Журналы транскодера.
Настройки кодера¶
Задаются на входе типа transcoder потока-результата:
- Encoder
Видеокодек: MPEG-2, H.264 (по умолчанию) или HEVC.
- Video profile (H.264)
Профиль кодирования H.264: Main или High.
- Video rate control
Режим управления битрейтом видео: постоянная скорость — CBR (constant); переменная со средним битрейтом — VBR (average bitrate); переменная с потолком — VBR (maximum bitrate). По умолчанию постоянная скорость.
В обоих переменных режимах кодер перестаёт добивать собственный элементарный поток, поэтому экономия полосы получается только там, где поток-приёмник не выравнивает битрейт обратно: заполнение задаётся полем «Режим битрейта» на вкладке «MPEG-TS» этого потока (Управление битрейтом). Не путать эти два поля: «Режим битрейта» относится к транспортному потоку целиком, Video rate control — только к видеокодеру.
Режим появился в 2.0.2.334. На узле прежней сборки поля нет, а транскодер прежней сборки его не читает и всегда кодирует с постоянной скоростью.
- Video bitrate (kbps)
Битрейт видео — одно число на все три режима; что оно означает, задаёт Video rate control, и подпись поля меняется вместе с режимом. При постоянной скорости число — и цель, и потолок буфера. При среднем битрейте число — средняя скорость, а пики доходят до полутора её величин. При потолке число — верхняя граница, которую видео не переходит, а средняя скорость составляет две трети от неё. Второй предел кодер во всех случаях выводит сам из фиксированного отношения пика к среднему 1,5, поэтому максимум отдельным полем не задаётся. Суммарный битрейт потока будет больше за счёт звуковых дорожек.
- Resize
Изменение размера картинки: пропорциональное уменьшение в 2 или 4 раза; приведение к SD — варианты SD, SD PAL и SD NTSC, все с широкоэкранным соотношением 16:9; масштабирование SD в HD; задание ширины или высоты (вторая сторона пересчитывается пропорционально). Произвольный размер не поддерживается: он исказил бы пропорции.
- Deinterlace
Преобразование чересстрочного видео в прогрессивное (включено по умолчанию; при масштабировании SD в HD применяется автоматически).
Настройки качества и структуры потока (дополнительные настройки):
- GOP interval
Интервал ключевых кадров в кадрах. По умолчанию 25, то есть секунда для 25p. Такой интервал рекомендуется, если проигрыватели подключаются к потоку в произвольный момент.
- B-frames, Lookahead
Повышают качество кодирования; рекомендуемые значения — 3 и 20–50 кадров соответственно.
- Speed preset
Предустановка скорости кодирования от 1 до 7; чем меньше значение, тем выше качество и больше нагрузка. По умолчанию 4.
- Frame rate resample
Прореживание частоты кадров в 2 или 4 раза.
- Encoder PMT PID, PAT/PMT interval (90kHz)
PID таблицы PMT и интервал повторения таблиц PAT/PMT в выходном потоке; их задают, если поток нужно вписать в план сети.
Сохранение любой настройки кодера перезапускает процесс транскодера. Об этом предупреждает надпись над списком полей. Перезапуск переоткрывает каждый вход, который получает данные от этого экземпляра транскодера, в том числе входы других потоков: в каждом транскодированном выходе будет короткий разрыв, а поток с резервными входами может на это время уйти на резерв (Резервирование источников и раздача).
Несовместимое сочетание параметров задать можно; ошибки видны в журнале транскодера (Контроль работы).
Логотип в кадре¶
С версии 2.0.2.413 на картинку выходного потока можно наложить логотип из PNG-файла. Логотип рисуют бэкенд NVidia (GPU) и, с версии 2.0.2.415, программный бэкенд (CPU); у бэкенда Intel логотипа нет, в демоверсии этой возможности тоже нет. Программному бэкенду нужен программный транскодер (пакет tcsw) версии 1.2.0.126 или новее. Версию транскодера узел определяет при запуске службы, поэтому после обновления tcsw перезапустите службу и только затем задавайте логотип. Настройка задаётся на входе типа transcoder потока-результата, блоком «Логотип» после поля Deinterlace, отдельно для каждого кодера: у каждого варианта может быть свой логотип со своим положением или не быть его вовсе. Варианты без логотипа не меняются.
Логотип рисуется в своём размере, не масштабируется и не обрезается: он должен целиком поместиться в кадр выхода. Для варианта с меньшим разрешением готовят логотип меньшего размера.
- Файлы логотипов
Кнопка «Загрузить PNG…» загружает файл на узел и сразу выбирает его в поле «Файл логотипа»; ранее загруженные файлы выбираются из списка этого же поля, вместе с размером. Принимается любой PNG до 4096×4096 пикселей и 16 МБ; прозрачность учитывается. Повторная загрузка того же файла новой записи не создаёт. Окно «Файлы логотипов…» показывает все файлы узла с размером и потоками, которые их используют; кнопка «Удалить» есть только у неиспользуемых файлов.
- Положение
«X от левого края (px)» и «Y от верхнего края (px)» задают левый верхний угол логотипа в кадре выхода, то есть после изменения размера. Оба числа должны быть чётными.
- Непрозрачность
«Непрозрачность (%)» — от 0 до 100, по умолчанию 100. Значение умножается на собственную прозрачность PNG.
- Размытие фона
«Размытие фона (px)» размывает картинку под логотипом; число задаёт радиус от 0 до 50, 0 — выключено (по умолчанию). «Область размытия» выбирает, что размывать: «Весь прямоугольник логотипа» (по умолчанию) или «Только под формой логотипа», то есть под его непрозрачными пикселями.
Кадр, в который должен поместиться логотип, получается после настройки Resize:
без изменения размера — кадр источника;
SD и SD PAL — 720×576, SD NTSC — 720×480;
SD->HD — 1920×1080, если высота источника не больше 720; у источника выше 720 строк размер не меняется;
/2 и /4, а также заданная ширина или высота — размер, пересчитанный из кадра источника. У бэкенда NVidia ширина при этом округляется вверх до кратной 32, высота — до кратной 4; у программного бэкенда обе стороны округляются до чётных. Так, высота 720 у источника 1920×1080 даёт кадр 1280×720 у обоих бэкендов, а ширина 1000 — кадр 1024×564 у NVidia и 1000×562 у программного.
Поэтому при одинаковых настройках размера кадр у двух бэкендов может отличаться на несколько пикселей. Окно и проверка при сохранении считают кадр выбранного бэкенда.
Под полями окно сразу сообщает, помещается ли логотип в кадр, а если нет — по какой стороне и на сколько он выходит за край. Кнопка «Превью» показывает кадр и логотип прямоугольниками в масштабе, без картинки, с числами: размер кадра и откуда он взят, размер логотипа, позиция и отступы до правого и нижнего краёв. Если размер кадра зависит от источника, а источник сейчас не работает, окно пишет, что размер станет известен после запуска транскодера. Тогда проверку делает сам транскодер при старте: если логотип не помещается, транскодер не запускается и сообщает об ошибке с теми же числами (Контроль работы).
Узел не даёт сохранить логотип, если:
декодер работает в режиме Video pass-through: видео не декодируется, и рисовать не на чем;
бэкенд декодера — Intel; в этом случае блок «Логотип» вместо полей показывает подсказку;
бэкенд программный, а установленный программный транскодер старше 1.2.0.126;
координаты нечётные или логотип не помещается в кадр известного размера.
Бэкенд декодера с логотипом можно переключать между NVidia и программным. Если после переключения логотип не помещается в новый кадр, транскодер не запускается и сообщает размер кадра. Переключить такой декодер на Intel или в режим Video pass-through нельзя, пока к нему подключён кодер с логотипом.
Особенности:
Файлы логотипов хранятся только на своём узле. В резервную копию настроек они не входят и соседям Meshwork не передаются: для потока, перенесённого на другой узел, логотип загружают и там, иначе транскодер не запустится.
Любое изменение логотипа, включая выбор другого файла, перезапускает транскодер, как и изменение других настроек кодера.
Если логотип задан хотя бы на одном кодере, транскодер NVidia помечает цвет всех своих выходов как BT.709 и приводит к нему SD-источники BT.470-2 и SMPTE 170M, как настройка Convert to BT.709 декодера. Видимые цвета при этом не меняются; SD-источник без пометки цветового пространства считается уже BT.709 и не пересчитывается. Программный транскодер выдаёт все выходы в BT.709 всегда, с логотипом или без, поэтому логотип на его цвет не влияет.
Для чересстрочного выхода тонкие горизонтальные линии логотипа делают не меньше двух пикселей: линия в один пиксель мерцает с частотой полей.
Обработка звука¶
По умолчанию все звуковые дорожки проходят со входа на выход без перекодирования. Лишние дорожки убираются PID-фильтрами на входе потока (Фильтрация MPEG-TS).
Перекодирование звука настраивается правилами отдельно для каждого исходного кодека (дополнительные настройки): дорожку можно пропустить без изменений, перекодировать (MPEG — в AAC; AAC — в MPEG Layer II; AC-3 — в MPEG Layer II или AAC) либо убрать (значение Skip). Дополнительно задаются битрейт звука (Audio bitrate, по умолчанию 128 кбит/с) и громкость понижающего микширования 5.1 (5.1 downmix volume). Если после применения правил в выходном потоке не останется ни одной звуковой дорожки, кодер сообщит об ошибке в журнале.
PCR и битрейт выходного потока¶
Мультиплексор транскодера формирует новые, согласованные метки PCR. По умолчанию выходной поток передаётся как VBR: суммарный битрейт меняется вместе с фактическим битрейтом видео и звука, и точность PCR по TR 101 290 на приёмной стороне не гарантируется. Если транскодированный поток предназначен для DVB-вещания, включите режим CBR на потоке-приёмнике: заполнение выровняет битрейт и пересчитает PCR (Управление битрейтом). Переменный режим кодирования усиливает неравномерность: битрейт видео меняется вместе с содержанием, и без заполнения на приёмнике транспортный поток тем более неровен.
Контроль работы¶
Экран «Транскодеры» (Транскодеры) показывает все экземпляры. Каждая строка описывает отдельный экземпляр (декодер и подключённые к нему кодеры): состояние, тип бэкенда, время работы, загрузку CPU и память. Окно «Экземпляр транскодера» (Экземпляр транскодера) раскрывает источник, список кодеров с параметрами выходного видео, ресурсы процесса и журналы текущего и предыдущего запусков. С этого окна начинают диагностику. Журнал завершившегося запуска стирается уже вторым перезапуском процесса, поэтому при сбое его копируют сразу (Журналы транскодера).
Загрузка GPU-устройств отображается на экране «Системный монитор» (Системный монитор). Превышение порогов CPU, памяти и загрузки GPU, а также недоступность настроенного бэкенда вызывают оповещения (Каталог кодов алертов).