...
Поддержка кодеков
- Видео H.264 + аудио AAC
- Видео Sorenson Spark + аудио Speex 16 kHz
...
Отметим, что настройка поворота для ffmpeg указывается в градусах, при этом на сервер передается соответствующее значение поля orientation.
Управление размером буфера при декодировании
Если RTMP поток публикуется программным кодировщиком с поддержкой аппаратного ускорения на GPU NVIDIA, и содержит B-фреймы, при проигрывании такого потока по RTMP или HLS в некоторых плеерах картинка подергивается. В связи с этим, в сборке 5.2.863 была добавлена настройка, которая задает максимальный размер буфера декодирования, передаваемый в SPS
Code Block |
---|
|
h264_sps_max_dec_frame_buffering=-1 |
По умолчанию, размер буфера не ограничен. Это убирает подергивания картинки, но может приводить к задержкам при излишней буферизации. В этом случае, можно ограничить буфер двумя кадрами (значение по умолчанию до сборки 5.2.863)
Code Block |
---|
|
h264_sps_max_dec_frame_buffering=2 |
или большим числом, чтобы убрать подергивания картинки и не допустить задержки.
Буферизация входящего RTMP потока
При публикации RTMP потока в большом разрешении, с высоким битрейтом при нестабильном канале поток может играть по WebRTC не плавно, с фризами или снижением FPS. Чтобы предотвратить такое поведение, необходимо буферизовать входящий поток
Code Block |
---|
|
rtmp_in_buffer_enabled=true |
Адаптивный буфер для входящего RTMP потока имеет следующие тонкие настройки:
Параметр | Описание | Значение по умолчанию |
---|
rtmp_in_buffer_start_size | Исходный объем буфера, мс | 300 |
rtmp_in_buffer_initial_size | Максимальный объем буфера, мс | 2000 |
rtmp_in_buffer_max_bufferings_allowed | Максимальное количество увеличений буфера | -1 (не ограничено) |
rtmp_in_buffer_polling_time | Периодичность проверки наличия данных в буфере, мс | 100 |
rtmp_in_buffer_overflow_allowed_deviation | Максимально допустимая разность между минимальном и максимальным объемами буфера, мс | 1000 |
rtmp_in_buffer_overflow_deviation_window | Размер окна, в течение которого отслеживается разность, мс | 30000 |
rtmp_in_buffer_overflow_rate | Максимально допустимая частота переполнений буфера | 0.15 |
rtmp_in_buffer_clear_threshold | При наполнении буфера до указанной величины, сбросить все данные, объем которых превышает максимальный, мс | 30000 |
Прекращение буферизации потока при ухудшении его характеристик
Если программному RTMP кодировщику не хватает производительности системы, на которой он запущен, или не хватает пропускной способности канала, метки времени в пакетах могут давать задержку относительно времени сервера. Буферизация такого потока будет давать периодические фризы при проигрывании. Поэтому в сборке 5.2.1311 добавлена настройка для отключения буферизации и пропуска полученного трафика напрямую в движок сервера
Code Block |
---|
|
rtmp_in_buffer_input_delay_threshold=0 |
По умолчанию, при включенной буферизации RTMP трафик будет всегда помещаться в буфер. Буферизация может быть отключена при достижении определенного значения задержки в миллисекундах
Code Block |
---|
|
rtmp_in_buffer_input_delay_threshold=3000 |
При этом буфер освобождается и переходит в статус PASSTHROUGH
. Даже если задержка затем снизится, буфер останется в таком статусе. и поток не будет буферизоваться до окончания публикации.
Определение параметров публикуемого потока по метаданным или медиапакетам
По умолчанию, возможные параметры публикуемого RTMP потока определяются файлом настройки SDP. В сборке 5.2.1862 добавлена настройка, которая включает автоматическое определение параметров публикуемого потока по метаданным или по информации в медиапакетах
Code Block |
---|
|
flash_detect_metadata_by_traffic=true |
Настройка включена по умолчанию. В этом случае WCS корректирует SDP в соотвествии с полученными от публикующего клиента метаданными или, если их нет в течение 1 секунды, по информации из полученных медиапакетов.
Известные проблемы
Excerpt Include |
---|
| С другого сервера по RTMP |
---|
| С другого сервера по RTMP |
---|
nopanel | true |
---|
|
...