EnglishEnglish RussianРусский SpanishEspañol

HLS-Proxy is a server app for IPTV streaming in HLS format (Apple HTTP Live Streaming) and caching for IPTV-player without dropouts and buffering.

HLS-Proxy setup Video guide on YouTube

  • Unpack an archive with proxy to a folder.
  • Now you need to configure http port for listening.

    By default, HLS-Proxy uses HTTP port 80.
    You can change it by passing a command line parameter -port port_number.

    ./hls-proxy -port 8080

    To save it permanently add -save

    ./hls-proxy -port 8080 -save

    To get all supported CLI parameters:

    ./hls-proxy -help

  • If you are a Linux user:
    • Install using a script:


      An install script uses systemctl to run HLS-Proxy as a service at boot.
      If you under chroot: a script will not work. Add a next line to /etc/rc.local

      sudo -H -u <user> <hls-proxy path>/hls-proxy &

      <user>: user you logged in
      <hls-proxy path>: a directory where HLS-Proxy unpacked

      Important!!! Ubuntu 16 users may not use http port 80.

    • Or you can run HLS-Proxy manually.
      Do not forget to add executable permissions for a file hls-proxy:

      chmod 755 ./hls-proxy

  • After app start, you can open next links for tuning a proxy:

    • http://hls_proxy_ip/ - For IPTV-player it is a link to a m3u8 playlist. For a browser it is a html rich page with channels and EPG.
      You also can access a rich web UI by /channels
    • http://hls_proxy_ip/status - A proxy status page, opened streams and clients.
    • http://hls_proxy_ip/config - A config view and edit page. Changes will be stored to local.json file, which contains parameters different from default.json
    • http://hls_proxy_ip/epg (or /epg.xml.gz) - EPG link for your IPTV-players in xml.gz format
      Second one in brackets is configurable from config by variable epgUrlForClient
      Uncompressed EPG is available by the same links just without .gz
    • http://hls_proxy_ip/m3u8 (or /playlist.m3u8)- If the root link (/) is not opened in a player you can use this link as a playlist. Perfect Player for Windows doesn't work.
      Second one in brackets is configurable from config by variable playlistPath
    • http://hls_proxy_ip/rec (or /recordings.m3u8) - Recorded programs.

    Instead of hls_proxy_ip use any local computer address or hostname where hls-proxy runs

    If you get an error on start "Cant start server: listen EADDRINUSE: address already in use"

    then a http port you specified (or 80 by default) is used by another app. Change it by command line.

    Proxy will be available by link http://hls_proxy_ip:port/
    To keep it permanently - open http://hls_proxy_ip:port/config and click "Save"
    or you can specify a command line parameter -save

Playlist setup

The most important thing to setup is a playlist source.
If HLS-Proxy is running, open /config, find "URL" field in "Playlist" section and put there your playlist link. Press "Save" button to apply changes.
Wait a couple of seconds till a playlist is loading and that's it.
By opening a main page / you should see a channels list.

Config catch ups

Proxy stores its settings in JSON files.
The main config file - default.json. It is not recommended to edit it manually. Editing config using web config saves changes into additional local.json file.
Inside local.json stored values different from defaults.
Self-Update will replace hls-proxy executable and default.json


Detailed description of settings you can find at web page /config

EPG is not available at the start. It will take minutes to download and parse. Watch a status at web page /status

Admin password and user management (new).

By default HLS-Proxy is not protected by admin password. This feature is available from version 6.
In order to set an admin password and protect a content you need to open /config web page and put a password in first SERVER section.
Save config and reload it from the /status page.
Now you should see a login page. Enter "admin" as a username and a password to gain an access.

A logged in user has an access to the all pages as before.
To enable an access from devices you need to add users and make a pairing. Scroll down to the "clients" section and add a user with a password.
You can put to the client a full playlist url. You can copy it to clipboard and paste on device.
The second option is a link with a pass code. A code is 6 digits that you need to add to HLS-Proxy main URL in the web browser of your device.
It will open a window with a full playlist URL with an availability to copy it to the device clipboard.
From v8.4.5 a playlist can be downloaded by username/password. Just add ?username=[username]&password=[password] instead of user token into the link.

MPEG-TS output format for a client

Add output=ts as query parameter to the playlist or channel URL



VOD using HLS-Proxy

Convert video using ffmpeg:

ffmpeg -i input.mkv -start_number 0 -hls_time 10 -hls_list_size 0 -hls_flags single_file -c copy -hls_segment_type mpegts -hls_allow_cache 0 index.m3u8

index.m3u8 and index.ts put in the folder along the path


Enter the playlist address in the player:


New video on the way


VOD - will be the name of the group in the playlist

VIDEO - will be the name of the stream

Folders inside recordings can have any name

Works since 8.0.0

HTTP proxy setup

Configure external HTTP proxy to bypass firewalls using environment variables

The following environment variables are respected by HLS Proxy

  • HTTP_PROXY / http_proxy
  • HTTPS_PROXY / https_proxy
  • NO_PROXY / no_proxy

When HTTP_PROXY / http_proxy are set, they will be used to proxy non-SSL requests that do not have an explicit proxy configuration option present. Similarly, HTTPS_PROXY / https_proxy will be respected for SSL requests that do not have an explicit proxy configuration option. It is valid to define a proxy in one of the environment variables, but then override it for a specific request, using the proxy configuration option. Furthermore, the proxy configuration option can be explicitly set to false / null to opt out of proxying altogether for that request.

HLS Proxy is also aware of the NO_PROXY/no_proxy environment variables. These variables provide a granular way to opt out of proxying, on a per-host basis. It should contain a comma separated list of hosts to opt out of proxying. It is also possible to opt of proxying when a particular destination port is used. Finally, the variable may be set to * to opt out of the implicit proxy configuration of the other environment variables.

Here's some examples of valid no_proxy values:

  • google.com - don't proxy HTTP/HTTPS requests to Google.
  • google.com:443 - don't proxy HTTPS requests to Google, but do proxy HTTP requests to Google.
  • google.com:443, yahoo.com:80 - don't proxy HTTPS requests to Google, and don't proxy HTTP requests to Yahoo!
  • * - ignore https_proxy/http_proxy environment variables altogether.

HLS-Proxy - это серверное приложение для загрузки IPTV-потоков в формате HLS (Apple HTTP Live Streaming) и кеширования для вашего IPTV-плеера со значительным уменьшением вероятности обрыва и буферизации.

Установка и настройка HLS-Proxy Видео на YouTube

  • Распаковываем архив с прокси в отдельную папку.
  • Теперь нужно настроить http порт.

    По умолчанию, HLS-Proxy использует HTTP порт 80.
    Можно изменить порт указывая его как параметр командной строки -port port_number.

    ./hls-proxy -port 8080

    Чтобы сохранить это в настройках добавьте параметр -save

    ./hls-proxy -port 8080 -save

    Чтобы получить информацию о всех параметрах командной строки:

    ./hls-proxy -help

  • Если вы - пользователь Linux:
    • Используйте установочный скрипт:


      Скрипт использует утилиту systemctl (systemd) чтобы запускать прокси как сервис при загрузке.
      Если вы под chroot: скрипт работать не будет. Вместо него добавьте строку запуска в /etc/rc.local

      sudo -H -u <user> <hls-proxy path>/hls-proxy &

      <user>: Имя пользователя под которым вы залогинились
      <hls-proxy path>: папка, где находится прокси

      Очень важно!!! Пользователи Ubuntu 16 не могут использовать порт 80.

    • Или запускайте HLS-Proxy вручную.
      Не забудьте в этом случае дать права на запуск:

      chmod 755 ./hls-proxy

  • После запуска доступны следующие ссылки для настройки и использования:

    • http://hls_proxy_ip/ - Для IPTV-плеера это ссылка на плейлист. Для браузера - это главная страница прокси с каналами, телегидом.
      Также эта html страница доступна по адресу /channels
    • http://hls_proxy_ip/status - Страница состояния прокси.
    • http://hls_proxy_ip/config - Страница настройки прокси. Изменения сохраняются в файл local.json.
    • http://hls_proxy_ip/epg (или /epg.xml.gz) - Ссылка на телегид для IPTV-плееров в формате xml.gz
      Вторая ссылка настраиваемая из конфига параметром epgUrlForClient
      Несжатый телегид доступен по тем же ссылкам без указания.gz
    • http://hls_proxy_ip/m3u8 (или /playlist.m3u8)- Если главная страница (/) в плеере не открывается, можно использовать эту ссылку в качестве плейлиста. Perfect Player для Windows не поддерживается.
      Вторая ссылка в скобках настраивается из конфига параметром playlistPath
    • http://hls_proxy_ip/rec (или /recordings.m3u8) - Ссылка на плейлист записанных программ.

    Вместо hls_proxy_ip используйте любой локальный адрес компьютера или имя хоста где запущен прокси.

    Если прокси выдает ошибку при старте "Cant start server: listen EADDRINUSE: address already in use"

    означает, что http порт, который указан в конфигурации (или 80 по умолчанию) используется другим приложением. Измените порт из командной строки.

    Прокси должен быть доступен по ссылке http://hls_proxy_ip:port/
    Чтобы сохранить порт в конфигурации откройте http://hls_proxy_ip:port/config и нажмите "Сохранить"
    или укажите параметр -save в командно

Настройка плейлиста

Самый важный пункт настройки прокси - указание источника плейлиста (или нескольких) или где брать каналы.
Если прокси уже запущен, открываем веб-страницу /config и в поле "URL" пункта "Источники плейлистов" заносим ссылку на плейлист. Нажимаем кнопку "Сохранить".
Ждём несколько секунд пока загрузится плейлист и... всё.
Открывая главную страницу / вы должны видеть сгруппированый список каналов.

Особенности конфигурирования.

Прокси хранит настройки в файлах типа json.
Главный файл конфигурации - default.json. Его лучше руками не трогать, пусть живет. Конфигуратор прокси сохраняет изменения конфигурации в дополнительном файле local.json.
Именно он отражает реальное отличие настроек по-умолчанию от ваших индивидуальных. В файле local.json хранятся значения, отличные от значений по-умолчанию.


Детальное описание каждой из настроек смотрите на странице /config

Обратите внимание, что ТВ-программа недоступна несколько минут при самом первом запуске сервера, так как сначала она загружается из интернета.

Пароль администратора и управление пользователями.

По умолчанию, HLS-Proxy не защищен паролем. Это нововведение доступно с версии 6.
Для того, чтобы установить пароль и защитить данные нужно открыть страницу настройки /config и внести пароль в секции SERVER.
Сохраните настройки и перезагрузите их со страницы состояния
После этого вы должны увидеть страницу авторизации. Введите "admin" как имя пользователя и пароль, чтобы войти в систему.

Авторизованный пользователь имеет доступ ко всем страницам как и раньше
Чтобы обеспечить доступ с других устройств нужно добавить пользователей и провести процедуру привязки. Прокрутите вниз к секции "Клиенты" и добавьте нового пользователя с паролем.
Два возможных варианта на выбор: либо скопировать ссылку на плейлист и занести ее на устройстве.
Либо ввести ссылку с вводом кода. Шестизначный код вводится в браузер на привязываемом устройстве.
Это позволит открыть окно с полной ссылкой на плейлист и возможностью ее копирования в буфер обмена.
С версии 8.4.5 плейлист доступен по имени пользователя и паролю. Просто добавьте ?username=[username]&password=[password] вместо токена в ссылку на плейлист.

MPEG-TS формат потока для клиента

Добавьте output=ts в качестве параметра в ссылку на плейлист или на поток

Пример: http://localhost/?output=ts

VOD на HLS-Proxy

Преобразовать видео используя ffmpeg:

ffmpeg -i input.mkv -start_number 0 -hls_time 10 -hls_list_size 0 -hls_flags single_file -c copy -hls_segment_type mpegts -hls_allow_cache 0 index.m3u8

index.m3u8 и index.ts положить в папку по пути


В плеере ввести адрес плейлиста:


Новое видео класть по пути


VOD - будет названием группы в плейлисте

VIDEO - будет названием потока

Папки внутри recordings могут иметь любое название

Работает с версии 8.0.0

Настройка HTTP proxy для обхождения файрвола

Следующие переменные окружения используются HLS Proxy для указания HTTP proxy

  • HTTP_PROXY / http_proxy
  • HTTPS_PROXY / https_proxy
  • NO_PROXY / no_proxy

Когда HTTP_PROXY / http_proxy указан, он будет использован для запросов non-SSL. Для SSL-запросов будет использоваться HTTPS_PROXY /https_proxy

HLS Proxy также использует NO_PROXY/no_proxy для адресов, для которых прокси не должен использоваться. Список хостов разделяется запятыми. Можно указывать и номер порта. И, переменная может быть установлена в *. В этом случае прокси не используется.

Несколько примеров использования значений переменной no_proxy:

  • google.com - не использовать прокси для HTTP/HTTPS запросов к Google.
  • google.com:443 - не использовать прокси для HTTPS запросов к Google, но использовать для HTTP запросов к Google.
  • google.com:443, yahoo.com:80 - исключить HTTPS запросы к Google, и HTTP запросы к Yahoo!
  • * - игнорировать переменные https_proxy/http_proxy.

HLS-Proxy es una aplicación servidor para transmisión de IPTV en formato HLS (Apple HTTP Live Streaming) y almacenamiento en caché para reproductores de IPTV sin interrupciones ni almacenamiento en búfer.

Configuración HLS-Proxy Video guía en YouTube

  • Descomprime el archivo HLS-proxy en una carpeta.
  • Ahora necesita configurar el puerto http para escuchar.

    Por defecto, HLS-Proxy usa el puerto HTTP 80.
    Puede cambiarlo pasando un parámetro de línea de comando -port número_puerto.

    ./hls-proxy -port 8080

    Para guardarlo permanentemente agregue -save

    ./hls-proxy -port 8080 -save

    Para obtener información sobre todas las opciones de línea de comando:

    ./hls-proxy -help

  • Si eres un usuario de Linux:
    • Instalar usando un script:


      Una secuencia de comandos de instalación utiliza systemctl (systemd) para ejecutar HLS-Proxy como un servicio en el arranque.
      Si está bajo chroot: un script no funcionará. Agregar una línea siguiente a /etc/rc.local

      sudo -H -u <user> <hls-proxy path>/hls-proxy &

      <user>: usuario con el que inició sesión
      <hls-proxy path>: una carpeta donde desempaquetado el Proxy HLS

      ¡¡¡Importante!!! Los usuarios de Ubuntu 16 no pueden usar el puerto 80 http.

    • O puede ejecutar HLS-Proxy manualmente.
      No olvide agregar permisos ejecutables para un archivo hls-proxy:

      chmod 755 ./hls-proxy

  • Después del inicio de la aplicación, puede abrir los siguientes enlaces para ajustar un proxy:

    • http://hls_proxy_ip/ - Para IPTV-player es un enlace a una lista de reproducción m3u8. Para un navegador, es una página rica en html con canales y EPG.
      También puede acceder a una interfaz de usuario web rica mediante /channels
    • http://hls_proxy_ip/status - Una página de estado de proxy, transmisiones abiertas y clientes.
    • http://hls_proxy_ip/config - Una vista de configuración y página de edición. Los cambios se almacenarán en el archivo local.json, que contiene parámetros diferentes de default.json
    • http://hls_proxy_ip/epg (o /epg.xml.gz) - Enlace EPG para sus reproductores de IPTV en formato xml.gz
      El segundo entre paréntesis es configurable desde la configuración por variable epgUrlForClient
      La EPG sin comprimir está disponible por el mismo enlace solo sin .gz
    • http://hls_proxy_ip/m3u8 (o /playlist.m3u8)- Si el enlace raíz (/) no se abre en un reproductor, puede usar este enlace como lista de reproducción. Perfect Player para Windows no funciona.
      El segundo entre paréntesis es configurable desde la configuración por variable playlistPath
    • http://hls_proxy_ip/rec (o /recordings.m3u8) - Programas grabados.

    En lugar de hls_proxy_ip, use cualquier dirección de computadora local o nombre de host donde se ejecute hls-proxy

    Si obtiene un error al iniciar "Cant start server: listen EADDRINUSE: address already in use"

    entonces otra aplicación usa el puerto http que especificó (u 80 por defecto). Cámbielo por línea de comando.

    Proxy estará disponible por enlace http://hls_proxy_ip:port/
    Para mantenerlo permanentemente - abierto http://hls_proxy_ip:port/config y haga clic "Salvar"
    o puede especificar un parámetro de línea de comando -save

Configuración de la lista de reproducción

Lo más importante para configurar es una fuente de lista de reproducción.
Si HLS-Proxy se está ejecutando , abra / config, busque el campo "URL" en la sección "Lista de reproducción" y ponga allí su enlace de lista de reproducción. Presiona el botón "Guardar" para aplicar los cambios.
Espera un par de segundos hasta que la lista de reproducción se cargue y eso es todo.
Al abrir la página principal / debería ver una lista de canales.

Configuracion de capturas

Proxy almacena su configuración en archivos JSON.
El archivo de configuración principal es - default.json. No se recomienda editarlo manualmente. La edición del archivo de configuración utilizando un explorador web guarda los cambios en un archivo adicional de local.json .
Dentro de local.json se almacenan valores diferentes a los predeterminados.


Descripción detallada de los ajustes que puede encontrar en la página web / config.

EPG no está disponible al inicio. Tardará unos minutos en descargar y analizar.

Contraseña de administrador y gestión de usuarios (nuevo).

Por defecto, HLS-Proxy no está protegido por contraseña de administrador. Esta característica está disponible desde la versión 6.
Para establecer una contraseña de administrador y proteger un contenido, debe abrir / configurar la página web y poner una contraseña en la primera sección del SERVER.
Guarde la configuración y vuelva a cargarla desde la página /status.
Ahora debería ver una página de inicio de sesión. Ingrese "admin" como nombre de usuario y contraseña para obtener acceso.

Un usuario conectado tiene acceso a todas las páginas como antes.
Para habilitar el acceso desde dispositivos, debe agregar usuarios y realizar un emparejamiento. Desplácese hacia abajo a la sección "Clients" y agregue un usuario con una contraseña.
Puede poner al cliente una url de lista de reproducción completa. Puede copiarlo al portapapeles y pegarlo en el dispositivo.
La segunda opción es un enlace con un código de acceso. Un código es de 6 dígitos que debe agregar a la URL principal del Proxy HLS en el navegador web de su dispositivo.
Se abrirá una ventana con una URL de lista de reproducción completa con disponibilidad para copiarla en el portapapeles del dispositivo.
A partir de v8.4.5, se puede descargar una lista de reproducción por nombre de usuario/contraseña. Simplemente agregue ?username=[username]&password=[password] en lugar del token de usuario en el enlace.

Formato de salida MPEG-TS para un cliente

Agregue output=ts como parámetro de consulta a la lista de reproducción o URL del canal

Ejemplo: http://localhost/?output=ts

VOD en HLS-Proxy

Convierta video usando ffmpeg:

ffmpeg -i input.mkv -start_number 0 -hls_time 10 -hls_list_size 0 -hls_flags single_file -c copy -hls_segment_type mpegts -hls_allow_cache 0 index.m3u8

index.m3u8 e index.ts colocados en la carpeta a lo largo de la ruta


Ingresa la dirección de la lista de reproducción en el reproductor:


Nuevo video en camino


VOD: será el nombre del grupo en la lista de reproducción

VIDEO: será el nombre de la transmisión

Las carpetas dentro de las grabaciones pueden tener cualquier nombre

Funciona desde 8.0.0

Configuración de proxy HTTP

Configure el proxy HTTP externo para evitar los cortafuegos que utilizan variables de entorno

The following environment variables are respected by HLS Proxy

  • HTTP_PROXY / http_proxy
  • HTTPS_PROXY / https_proxy
  • NO_PROXY / no_proxy

Cuando HTTP_PROXY / http_proxy están configurados, se utilizarán para proxy solicitudes no SSL que no tienen un explicito proxy Opción de configuración actual. Similar, HTTPS_PROXY / https_proxyserá respetado para las solicitudes SSL que no tienen un explícitoproxy Opción de configuración. Es válido definir un proxy en una de las variables de entorno, pero luego anularlo para una solicitud específica, utilizando el proxy Opción de configuración. Además, elproxy la opción de configuración se puede establecer explícitamente en falso / nulo para optar por excluirse por completo de esa solicitud.

HLS Proxy También es consciente de la NO_PROXY/no_proxyvariables de entorno. Estas variables proporcionan una forma granular de rechazar el envío de proxy, por host. Debe contener una coma lista separada de hosts para optar por no enviar fuera del proxy. También es posible optar por proxy cuando un determinado puerto de destino es utilizado. Finalmente, la variable se puede configurar para * para optar por el proxy implícito configuración de las demás variables de entorno.

Aquí hay algunos ejemplos de validez no_proxy valores:

  • google.com - no enviar solicitudes HTTP / HTTPS a Google.
  • google.com:443 - no enviar solicitudes HTTPS a Google, pero hacer solicitudes HTTP de proxy para Google.
  • google.com:443, yahoo.com:80 - no haga proxy solicitudes HTTPS a Google, y no haga proxy HTTP a solicitudes hacia Yahoo!
  • * - ignorar https_proxy/http_proxy variables de entorno en conjunto.