ts_hls
Директива `ts_hls` позволяет генерировать HLS (HTTP Live Streaming) контент в реальном времени для потоков MPEG-TS в NGINX.
Описание
Директива 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, так как это приведёт к конфликтам.
Если вы используете динамические сегменты или размеры, учитывайте управление памятью, чтобы избежать чрезмерного потребления ресурсов.