Кодирование видео¶
media.transcode.video
Функция media.transcode.video кодирует выбранную видеодорожку в нужный выходной кодек и позволяет задать битрейт, разрешение и структуру GOP.
Формирование нескольких выходных качеств и все тонкости их совместной обработки описаны в мультибитрейтном транскодировании.
Выходные кодеки¶
Функция media.transcode.video включает кодирование в следующие выходные видеокодеки:
| Видеокодек | Значение codec |
|---|---|
| H.264 / AVC | {set: h264} |
| H.265 / HEVC | {set: hevc} |
| AV1 | {set: av1} |
| MPEG-2 Video | {set: mp2v} |
Настройка¶
В transcoder.output задайте исходную видеодорожку source, целевой кодек codec и битрейт bitrate:
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
transcoder:
output:
- source: !best_quality video
codec: !set h264
bitrate: 2800000
Выбор исходной дорожки¶
Для одного видеовыхода используйте source: {best_quality: video}: оно выбирает видеодорожку с максимальным объявленным битрейтом. Если входной ID заранее известен, задайте source: {exact: v1}. При работе с резервным источником этот ID должен обозначать нужную дорожку на каждом входе.
Все варианты выбора, поведение при переключении на резерв и примеры приведены в подробном описании выбора дорожек.
Если совпадений нет, live-правило не создаёт выход. Режимы if_missing: blank и substitute в live-тракте не исполняются; их нельзя использовать как подстановку отсутствующего сигнала.
Кодеки и параметры¶
codec— целевой видеокодек из списка выше.codec: sameсохраняет исходные кадры без перекодирования.bitrate— целевой битрейт в бит/с.gop_size— длина GOP в кадрах.gop_structure— структура последовательности кадров, напримерipилиibbbp.
HEVC¶
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
transcoder:
output:
- source: !best_quality video
codec: !set hevc
bitrate: 2800000
AV1¶
При программном кодировании сервер проверяет доступные кодеры в следующем порядке:
- SVT-AV1;
- libaom;
- rav1e.
Если они отсутствуют, сервер пробует доступный кодер AV1 по умолчанию. Пресет скорости преобразуется в настройки выбранного кодера. На NVIDIA используется AV1 NVENC; видеокарта должна поддерживать кодирование AV1.
Для сегментной доставки сервер задаёт фиксированный интервал ключевых кадров и отключает определение смены сцен у программных кодеров AV1. Открытый GOP ими не предоставляется: сервер использует закрытый GOP и пишет предупреждение, если запрошен открытый.
Программный AV1 работает в VBR при GOP со случайным доступом. Если запрошен CBR, сервер продолжает кодирование в VBR и записывает предупреждение. Это ограничение кодера.
Изменение размера¶
resize |
Что делает |
|---|---|
!scale |
точное масштабирование в заданные размеры |
!fit |
вписать с сохранением пропорций (с полями, цвет фона настраивается) |
!crop |
обрезать до заданных размеров |
Проверка¶
Проверьте кодек и параметры выходной видеодорожки в статистике стрима. Затем откройте http://server/streaming/v/tv1/index.m3u8 в плеере и проверьте воспроизведение.
Что дальше¶
Форма пикселя и её связь с изменением размера описаны в разделе SAR и анаморфное видео.