ts_hls

Директива `ts_hls` позволяет генерировать HLS (HTTP Live Streaming) контент в реальном времени для потоков MPEG-TS в NGINX.

Синтаксисts_hls path=PATH [segment=MIN[:MAX]] [segments=NUMBER] [max_size=SIZE] [noclean];
По умолчаниюnone
Контекстlocation
Аргументы1+

Описание

Директива ts_hls используется внутри блока location NGINX для настройки live HTTP Live Streaming (HLS) для контента MPEG-TS. При указании этой директивы требуется параметр PATH, задающий каталог, в котором будут сохраняться плейлист HLS и файлы сегментов. Если указанный каталог не существует, он будет создан NGINX. Для каждого активного потока MPEG-TS внутри указанного PATH создаётся соответствующая поддиректория, причём имя потока формируется из последней компоненты URI.

Сегменты HLS генерируются на основе нескольких настраиваемых параметров. Параметр segment задаёт минимальную и максимальную длительность каждого сегмента; по умолчанию минимальная длительность — 5 секунд. Это означает, что сегменты будут начинаться с ключевых кадров видео, и если следующий ключевой кадр не появится в пределах максимальной длительности, сегмент будет усечён. Дополнительно параметр segments позволяет управлять максимальным количеством сегментов, которые могут храниться в плейлисте HLS, удаляя старые сегменты по мере добавления новых и тем самым эффективно контролируя использование памяти.

Существуют опции для ограничения размера сегментов с помощью параметра max_size и управления очисткой файлов с помощью noclean, который предотвращает автоматическое удаление старых файлов. Важно отметить, что путь, указанный в нескольких директивах ts_hls, не может быть повторно использован для разных потоков, что обеспечивает уникальное управление файлами каждого потока.

Пример конфига

location /live {
    ts;
    ts_hls path=/var/hls segment=10s segments=5;
}

Убедитесь, что указанный PATH доступен для записи процессом NGINX.

Избегайте повторного использования одного и того же пути в нескольких директивах ts_hls или ts_dash, так как это приведёт к конфликтам.

Если вы используете динамические сегменты или размеры, учитывайте управление памятью, чтобы избежать чрезмерного потребления ресурсов.

← Ко всем директивам