Difference between revisions of "Streaming"

From Ace Stream Wiki
Jump to: navigation, search
(Новая страница: «== Установка == === Установка TS Engine на Debian === Для установки TS Engine необходимо добавить репозит…»)
 
 
(46 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Установка ==
+
==Запуск трансляции==
  
=== Установка TS Engine на Debian ===
+
===Основные термины===
 +
*'''Источник''' - программа, которая принимает на вход HTTP-поток трансляции и обеспечивает просмотр трансляции с помощью ПО Ace Stream
 +
*'''Узел поддержки''' - программа, позволяющая масштабировать трансляцию за счет использования дополнительного серверного оборудования и интернет-каналов
 +
*'''Клиент''' - ПО Ace Stream, которое используется для просмотра трансляции
 +
*'''Timeshift''' - временной интервал, в рамках которого в клиенты могут осуществлять перемотку трансляции
  
Для установки TS Engine необходимо добавить репозиторий Torrent Stream в файл <tt>/etc/apt/sources.list:
+
===Переход с версий 2.0.х на версию 2.1 и выше===
deb http://torrentstream.net/repo ubuntu main</tt>
+
С 10 сентября 2013 года доступна обновленная версия движка 2.1.6 под Ubuntu, Debian и CentOS.
  
Если при установке пакета выводится сообщение про неизвестный ключ, можно его добавить в систему:
+
Перед полномасштабным использованием новой версии мы рекомендуем по возможности протестировать ее на одной или нескольких трансляциях.
  
<tt>wget -O - http://torrentstream.net/repo/torrentstream.public.key | apt-key add -</tt>
+
При возникновении каких-либо проблем просьба писать на форум http://forum.torrentstream.org либо на почту support@acestream.net.
  
После этого нужно установить пакет torrentstream-engine:
+
Старые версии временно доступны по прямым ссылкам:
  
<tt>apt-get update</tt>
+
'''Ubuntu''':
 +
* http://dl.acestream.org/ubuntu/acestream-engine_2.0.8-1oneiric6_amd64.deb
 +
* http://dl.acestream.org/ubuntu/acestream-engine_2.0.8-1oneiric6_i386.deb
 +
* http://dl.acestream.org/ubuntu/acestream-engine_2.0.8-1precise6_amd64.deb
 +
* http://dl.acestream.org/ubuntu/acestream-engine_2.0.8-1precise6_i386.deb
 +
* http://dl.acestream.org/ubuntu/acestream-engine_2.0.8-1quantal6_amd64.deb
 +
* http://dl.acestream.org/ubuntu/acestream-engine_2.0.8-1quantal6_i386.deb
 +
* http://dl.acestream.org/ubuntu/acestream-engine_2.0.8-1raring6_amd64.deb
 +
* http://dl.acestream.org/ubuntu/acestream-engine_2.0.8-1raring6_i386.deb
  
<tt>apt-get install torrentstream-engine</tt>
+
'''Debian''':
 +
* http://dl.acestream.org/debian/acestream-engine_2.0.8-1sid5_amd64.deb
 +
* http://dl.acestream.org/debian/acestream-engine_2.0.8-1sid5_i386.deb
 +
* http://dl.acestream.org/debian/acestream-engine_2.0.8-1squeeze5_amd64.deb
 +
* http://dl.acestream.org/debian/acestream-engine_2.0.8-1squeeze5_i386.deb
  
 +
'''CentOS 6''':
 +
* http://dl.acestream.org/centos/6/acestream-engine-2.0.8_7-centos6-x86_64.tar.gz
  
=== Установка пакет TorrentStream Full на Ubuntu из deb-пакета ===
+
<span style="color: #900;">ВНИМАНИЕ!</span> В ближайшее время поддержка старых версий будет прекращена.
  
* скачать пакет по ссылке
+
<span style="color: #009;">ВАЖНО!</span> Все трансляции, созданные с помощью новой версии Ace Stream (2.1 и выше) не поддерживаются клиентским ПО старых версий (2.0.х и ниже). При попытке просмотреть новую трансляцию с помощью старого движка будет выдаваться ошибка "Cannot load transport file"
  
http://torrentstream.org/downloads/linux/test/torrentstream_1.0.6-0ubuntu8_amd64.deb
+
====Изменения в параметрах запуска====
 +
В новой версии изменились некоторые параметры запуска источников и узлов поддержки из командной строки, поэтому запуск со старой командной строкой работать не будет.
  
либо
+
Основные изменения:
 +
* используется один исполняемый файл <tt>acestreamengine</tt>; различные режимы запуска (источник, узел поддержки) задаются опциями:
 +
** вместо <tt>acestreamengine-stream</tt> следует запускать <tt>acestreamengine --stream-source</tt>
 +
** вместо <tt>acestreamengine-node</tt> следует запускать <tt>acestreamengine --stream-node</tt>
 +
** вместо <tt>acestreamengine-client-console</tt> следует запускать <tt>acestreamengine --client-console</tt>
 +
** вместо <tt>acestreamengine-client-gtk</tt> следует запускать <tt>acestreamengine --client-gtk</tt>
 +
* изменена система логирования. В старых версия движок всю отладочную информацию выводил в STDERR и для записи логов в файл требовалось перенаправлять вывод. В новой версии можно в опциях задать, куда писать логи - в STDOUT, в STDERR, в файл либо в syslog. Для файлов поддерживается ротация логов по размеру. Описание всех опций смотрите в разделе [[#Команда acestreamengine|Команда acestreamengine]]
  
http://torrentstream.org/downloads/linux/test/torrentstream_1.0.6-0ubuntu8_i386.deb
+
===Команда acestreamengine===
 +
Начиная с версии 2.1 Ace Stream Engine для Linux представляет собой один исполняемый файл <tt>acestreamengine</tt>, который работает в различных режимах в зависимости от заданных параметров.
  
зависимости от нужной архитектуры)
+
Режим работы задается одним из следующих параметров:
 +
* <tt>--client-console</tt> - запустить движок в режиме клиента из консоли (без графического интерфейса)
 +
* <tt>--client-wx</tt> - запустить движок в режиме клиента с графическим интерфейсом WX
 +
* <tt>--client-gtk</tt> - запустить движок в режиме клиента с графическим интерфейсом GTK
 +
* <tt>--stream-source</tt> - запустить источник трансляции
 +
* <tt>--stream-node</tt> - запустить узел поддержки
 +
* <tt>--create-transport</tt> - создать транспортный файл из существующего контента (VOD)
 +
* <tt>--create-transport-multi</tt> - создать мультипотоковый транспортный файл
 +
* <tt>--version</tt> - показать версию движка
  
* установить пакет через менеджер пакетов (например, двойным кликом на скачанный файл пакета)
+
Каждый режим работы имеет свои обязательные и необязательные параметры, описанные в соответствующих разделах.
  
 +
Также всех режимов работы есть общие параметры, которые управляют выводом отладочной информации.
 +
* <tt>--log-stdout</tt> - выводить информацию в STDOUT
 +
* <tt>--log-stderr</tt> - выводить информацию в STDERR
 +
* <tt>--log-file PATH</tt> - выводить информацию в указанный файл
 +
* <tt>--log-max-size SIZE</tt> - максимальный размер файла (в байтах)
 +
* <tt>--log-backup-count COUNT</tt> - сколько резервных логов хранить (резервный лог файл создается при достижении лимита, указанного паметром --log-max-size)
 +
* <tt>--log-file-buffer SIZE</tt> - включить буферизацию вывода в файл (с использованием буфера указанного размера в байтах)
 +
* <tt>--log-syslog HOST</tt> - выводить информацию в syslog-сервер по указанному адресу
 +
* <tt>--log-syslog-port PORT</tt> - порт syslog-сервера
 +
* <tt>--log-syslog-facility FACILITY</tt> - используемый facility
 +
* <tt>--log-syslog-buffer SIZE</tt> - включить буферизацию вывода в syslog (с использованием буфера указанного размера в байтах)
  
=== Установка пакет TorrentStream Full на Ubuntu из репозитория ===
+
===Общая схема работы===
 +
Организация трансляции начинается с запуска источника (команда <tt>acestreamengine-stream</tt>).
 +
Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с оригиналом трансляции и после запуска создает файл с расширением acelive. Данный файл является уникальным идентификатором трансляции и используется клиентами для подключения и просмотра.
  
Добавить репозиторий Torrent Stream в файл /etc/apt/sources.list:
+
===Синтаксис команды acestreamengine --stream-source===
 +
Команда <tt>acestreamengine --stream-source</tt> запускает источник трансляции.
  
<tt>deb http://torrentstream.net/repo ubuntu main</tt>
+
''обязательные параметры''
 +
*<tt>--name NAME (*)</tt> - название трансляции (это название используется при создании файла acelive и других служебных файлов)
 +
*<tt>--source SOURCE</tt> - источник (ссылка на http-поток)
 +
*<tt>--bitrate BITRATE (*)</tt> - средний битрейт потока в байтах в секунду
  
Если при установке пакета выводится сообщение про неизвестный ключ, можно его добавить в систему:
+
''необязательные параметры''
 +
*<tt>--title TITLE (*)</tt> - "читабельное" название трансляции (это название выводится у клиентов). Если не задано, берется из --name
 +
*<tt>--destdir DESTDIR</tt> - устаревший параметр, лучше использовать --cache-dir и --publish-dir
 +
*<tt>--cache-dir CACHE_DIR</tt> - папка для создания служебных файлов (кеш трансляции и другие)
 +
*<tt>--publish-dir PUBLISH_DIR</tt> - папка, в которой будет создан acelive-файл
 +
*<tt>--piecesize PIECESIZE (*)</tt> - размер куска в байтах, в степени 2 (если не задан, выставляется автоматически в зависимости от битрейта)
 +
*<tt>--duration DURATION (*)</tt> - размер кеша трансляции в формат ЧЧ:ММ:СС (по умолчанию один час: 01:00:00)
 +
*<tt>--host HOST (*)</tt> - вручную задать адрес локального трекера
 +
*<tt>--port PORT (*)</tt> - порт, на котором работает движок. По умолчанию 7764.
 +
*<tt>--skip-internal-tracker (*)</tt> - отключить локальный трекер
 +
*<tt>--add-authorized-peers (*)</tt> - добавить список авторизованных пиров в acelive файл
 +
*<tt>--private-source (*)</tt> - сделать источник приватным
 +
*<tt>--support-node SUPPORT_NODE (*)</tt> - добавить узел поддержки (в формате ip:port). Этот параметр может встречаться несколько раз, если нужно добавить несколько узлов поддержки.
 +
*<tt>--tracker TRACKER (*)</tt> - добавить трекер (announce url). Этот параметр может встречаться несколько раз.
 +
*<tt>--maxclients MAXCLIENTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с источника. По умолчанию 7.
 +
*<tt>--log-debug DEBUG</tt> - установить уровень отладки (по умолчанию 0 - минимальный)
 +
*<tt>--source-read-timeout SECONDS</tt> - таймаут на чтение данных из оригинального источника (в секундах). По умолчанию 30.
 +
*<tt>--source-reconnect-interval SECONDS</tt> - интервал в секундах, через который движок попробует повторно подсоединиться к оригинальному источнику при обрыве связи. По умолчанию 5.
 +
*<tt>--pid-file-dir PATH</tt> - папка, в которой будет создан pid-файл движка. По умолчанию /tmp.
 +
*<tt>--provider-key (*)</tt> - ключ провайдера (используется для партнерской программы)
 +
*<tt>--sid (*)</tt> - идентификатор трансляции для статистики (используется для партнерской программы)
 +
*<tt>--permanent (*)</tt> - отметить трансляцию, которая идет 24/7 (круглосуточная трансляция)
 +
*<tt>--date-start YYYY-MM-DD HH:mm:ss (*)</tt> - указать дату и время начала трансляции (для трансляций с ограниченным временем вещания)
 +
*<tt>--date-end YYYY-MM-DD HH:mm:ss (*)</tt> - указать дату и время окончания трансляции (для трансляций с ограниченным временем вещания)
 +
*<tt>--premium (*)</tt> - запросить статус "премиум" для трансляции
 +
*<tt>--upload-limit</tt> - ограничить скорость отдачи (в байтах/с, по умолчанию 0 - не ограничивать)
 +
*<tt>--max-connections</tt> - максимальное общее кол-во соединений (по умолчанию 1000)
 +
*<tt>--max-peers</tt> - максимальное кол-во подключений к пирам (по умолчанию 50)
 +
*<tt>--service-remote-access</tt> - разрешить удаленный просмотр статистики
 +
*<tt>--service-access-token</tt> - ключ доступа для удаленной статистики
 +
*<tt>--stats-report-interval</tt> - интервал в секундах между обновлениями внутренней статистики (по умолчанию 60)
 +
*<tt>--stats-report-peers</tt> - обновлять данные по пирам во внутренней статистике
  
<tt>sudo wget -O - http://torrentstream.net/repo/torrentstream.public.key | apt-key add -</tt>
+
''дополнительно''
 +
*<tt>-h, --help</tt> - показать описание команд
  
После этого нужно установить пакет torrentstream-engine:
+
''примечание''
  
<tt>sudo apt-get update</tt>
+
Изменение параметров, отмеченных звездочками, приводит к изменению Content ID трансляции
  
<tt>sudo apt-get install torrentstream-full</tt>
+
===Синтаксис команды acestreamengine --stream-node===
 +
Команда <tt>acestreamengine --stream-node</tt> запускает узел поддержки
  
 +
''обязательные параметры''
 +
*<tt>--url URL></tt> - ссылка на acelive файл трансляции
  
== Запуск трансляции ==
+
''необязательные параметры''
 +
*<tt>--port PORT</tt> - порт (по умолчанию 8621)
 +
*<tt>--state-dir STATE_DIR</tt> - папка для временных файлов (удаляется после остановки узла поддержки)
 +
*<tt>--source-node SOURCE_NODE</tt> - адрес источника трансляции (ip:port)
 +
*<tt>--support-node SUPPORT_NODE</tt> - добавить адрес другого узла поддержки (ip:port). Этот параметр может встречаться несколько раз.
 +
*<tt>--allow-source-download</tt> - разрешить получение данных от источника
 +
*<tt>--allow-support-download</tt> - разрешить получение данных от других узлов поддержки
 +
*<tt>--allow-peers-download</tt> - разрешить получение данных от обычных пиров
 +
*<tt>--max-connections MAX_CONNECTIONS</tt> - максимальное общее кол-во соединений (по умолчанию 1000)
 +
*<tt>--max-peers MAX_PEERS</tt> - максимальное кол-во подключений к пирам (по умолчанию 50)
 +
*<tt>--max-upload-slots MAX_UPLOAD_SLOTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с узла поддержки (по умолчанию 7)
 +
*<tt>--max-download-speed MAX_DOWNLOAD_SPEED</tt> - максимальная скорость загрузки (байт/с). По умолчанию 0 (без ограничений).
 +
*<tt>--max-upload-speed MAX_UPLOAD_SPEED</tt> - максимальная скорость отдачи (байт/с). По умолчанию 0 (без ограничений).
 +
*<tt>--stats-report-interval STATS_REPORT_INTERVAL</tt> - интервал в секундах между обновлениями внутренней статистики (по умолчанию 60)
 +
*<tt>--stats-report-peers</tt> - обновлять данные по пирам во внутренней статистике
 +
*<tt>--service-remote-access</tt> - разрешить удаленный просмотр статистики
 +
*<tt>--service-access-token</tt> - ключ доступа для удаленной статистики
 +
*<tt>--log-debug DEBUG</tt> - установить уровень отладки
  
Для запуска трансляции используется команда tsengine-stream, которая принимает такие параметры:
+
''дополнительно''
 +
*<tt>-h, --help</tt> - показать описание команд
  
 +
===Встроенный трекер===
 +
Встроенный трекер - это трекер встроенный в источник трансляции. Если он не отключен опцией <tt>--skip-internal-tracker</tt>, то его адрес будет автоматически добавлен в acelive-файл.
  
<tt>'''--name'''</tt>
+
При организации трансляций с большим количеством пользователей мы рекомендуем отключать встроенный трекер и заменять его внешним трекером с хорошей производительностью (например, [http://xbtt.sourceforge.net/tracker/ XBT Tracker])
  
Название трансляции
+
===Авторизованные узлы===
 +
Для того, чтобы клиент подключился к трансляции и начал просмотр, ему необходимо либо установить соединение минимум с двумя другими узлами, либо установить соединение с авторизованным узлом. Авторизованный узел - это узел, который был отмечен создателем трансляции как такой, которому можно "доверять". Как правило, это источник трансляции и/или узлы поддержки.
  
 +
Последние версии ПО ACE Stream поддерживают использование списка авторизованных узлов в acelive-файле. Для этого при создании трансляции задается опция <tt>--add-authorized-peers</tt>, после чего формируется список авторизованных узлов и добавляется в acelive-файл. В список авторизованных узлов попадает источник трансляции (если это не приватный источник) и все указанные узлы поддержки. Клиенты, которые получили данный acelive-файл, используют список для определения того, является ли какой-либо узел авторизованным.
  
<tt>'''--source'''</tt>
+
Если в acelive-файл не был добавлен список авторизованных узлов, либо у клиента установлена старая версия ACE Stream, которая не распознает данный список, то авторизованным узлом считается узел, IP адрес которого совпадает с адресом первого трекера в списке трекеров. Если встроенный трекер на источнике не отключен, то он будет первым в списке и клиенты будут считать источник авторизованным узлом. В случае, если встроенный трекер отключен, для поддержки старых клиентов мы рекомендуем ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию).
  
Источник - URL потока, который будет транслироваться. В данный момент поддерживаются HTTP потоки с инкапсуляцией MPEG-TS
+
===Timeshift===
 +
Функция "Timeshift" дает пользователям возможность осуществить перемотку трансляции на некоторое время назад, а также поставить трансляцию на паузу и вернуться к просмотру в удобное для них время.
  
 +
Время, на которое может осуществляться перемотка назад, задается при создании трансляции опцией <tt>--duration</tt>. Время указывается в формате ЧЧ:ММ:СС.
  
<tt>'''--destdir'''</tt>
+
Например, при указании опции <tt>--duration 00:30:00</tt> будет задан интервал 30 минут.
  
Директория, в которую будет сохранен .tslive файл для данной трансляции и некоторые служебные файлы.
+
===Примеры===
 +
Для примеров предположим наличие локальной сети с тремя серверами:
 +
*192.168.1.1 - сервер для источника
 +
*192.168.1.2 - сервер для узла поддержки
 +
*192.168.1.3 - сервер для узла поддержки
 +
*192.168.1.100 - сервер, который отдает оригинальный поток трансляции (HTTP MPEG-TS) по адресу <nowiki>http://192.168.1.100/stream</nowiki> (средний битрейт потока - 300 000 байт/с)
  
 +
На сервере 192.168.1.1 предполагается наличие веб-сервера с корневой папкой <tt>/home/www</tt>, а также двух папок:
 +
*<tt>/home/www/streams</tt> - для хранения acelive-файлов, которые будут доступны для скачивания по ссылке вида <tt><nowiki>http://192.168.1.1/streams/test.acelive</nowiki></tt>
 +
*<tt>/tmp/streams</tt> - для хранения кэша и служебных файлов трансляций
  
<tt>'''--bitrate'''</tt>
+
====Источник с встроенным трекером====
 +
Это наиболее простой способ запуск трансляции, не требующий запуска узлов поддержки и установки дополнительных трекеров. Данный способ подходит для трансляций с небольшим количество пользователей.
  
Битрейт потока в килобайтах в секунду. Для корректной работы потока следует указывать средний битрейт потока, который используется в качестве источника.
+
На сервере 192.168.1.1 запускаем источник:
 +
<tt>acestreamengine --stream-source \
 +
--name "test" \
 +
--title "Тестовая трансляция" \
 +
--source "<nowiki>http://192.168.1.100/stream</nowiki>" \
 +
--bitrate 300000 \
 +
--publish-dir "/home/www/streams" \
 +
--cache-dir "/tmp/streams" \
 +
--add-authorized-peers \
 +
--log-stdout</tt>
  
 +
Опция <tt>--add-authorized-peers</tt> добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1).
  
<tt>'''--piecesize'''</tt>
+
После запуска трансляции в папке /home/www/streams будет создан файл test.acelive, в папке <tt>/tmp/streams</tt> будут созданы такие файлы:
 +
*<tt>test</tt> - кэш трансляции. Размер этого файла примерно равен длительность_потока_в_секундах (опция <tt>--duration</tt>, по умолчанию 1 час) * битрейт байт
 +
*<tt>test.restart</tt> - здесь хранится информация для корректного перезапуска трансляции
 +
*<tt>test.sauth</tt> - ключ для цифровой подписи трансляции
  
Размер в байтах куска для работы bittorrent-протокола. По умолчанию данный параметр принимает значение auto, при котором размер куска определяется автоматически.
+
Для просмотра трансляции клиенты могут скачать файл трансляции по ссылке <tt><nowiki>http://192.168.1.1/streams/test.acelive</nowiki></tt> и запустить его в плеере ACE Stream, либо использовать другие способы ([[Способы просмотра трансляции]]).
  
 +
====Источник с внешним трекером====
 +
Если трансляция предполагает большое количество пользователей, то желательно использовать внешний трекер и отключить встроенный (для снижения нагрузки на источник).
  
<tt>'''--duration'''</tt>
+
В качестве внешнего трекера мы советуем использовать [http://xbtt.sourceforge.net/tracker/ XBT Tracker]
  
Длительность потока в формате ЧЧ:ММ:СС. Этот параметр задает объем кэша для потока. Значение по умолчанию - 01:00:00 (т.е. система будет держать в кэше приблизельно один час трансляции).
+
В данном примере предполагаем, что XBT Tracker установлен и запущен на сервере 192.168.1.1.
 +
Запуск трансляции теперь будет выглядеть таким образом:
 +
<tt>acestreamengine --stream-source \
 +
--name "test" \
 +
--title "Тестовая трансляция" \
 +
--source "<nowiki>http://192.168.1.100/stream</nowiki>" \
 +
--bitrate 300000 \
 +
--publish-dir "/home/www/streams" \
 +
--cache-dir "/tmp/streams" \
 +
--add-authorized-peers \
 +
--skip-internal-tracker \
 +
--tracker "udp://192.168.1.1:2710/announce" \
 +
--log-stdout</tt>
  
 +
Опция <tt>--skip-internal-tracker</tt> отключает встроенный трекер, опция <tt>--tracker</tt> подключает внешний трекер.
  
<tt>'''--host'''</tt>
+
====Источник с двумя узлами поддержки====
 +
В случае, если на источнике не хватает пропускной способности исходящего канала для нормальной работы трансляции, можно использовать узлы поддержки. Чаще всего узел поддержки представляет собой узел, который принимает данные от источника и отдает клиентам (хотя узел поддержки также может принимать данные от других узлов поддержки и даже от клиентов, в зависимости от его настроек). Узел поддержки имеет смысл ставить на отдельном сервере с хорошей шириной исходящего канала.
  
IP-адрес либо название хоста, на котором запускается трансляция. Для работы трансляции данный адрес должен быть доступен пользователям, которые будут смотреть трансляцию.
+
Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции <tt>--support-node</tt>:
 +
<tt>acestreamengine --stream-source \
 +
--name "test" \
 +
--title "Тестовая трансляция" \
 +
--source "<nowiki>http://192.168.1.100/stream</nowiki>" \
 +
--bitrate 300000 \
 +
--port 7764 \
 +
--publish-dir "/home/www/streams" \
 +
--cache-dir "/tmp/streams" \
 +
--add-authorized-peers \
 +
--skip-internal-tracker \
 +
--tracker "udp://192.168.1.1:2710/announce" \
 +
--support-node "192.168.1.2:8621" \
 +
--support-node "192.168.1.3:8621" \
 +
--log-stdout</tt>
  
 +
Запускаем узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 (команды для запуска одинаковые):
 +
<tt>acestreamengine --stream-node \
 +
--url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 +
--state-dir "/tmp" \
 +
--source-node "192.168.1.1:7764" \
 +
--allow-source-download \
 +
--log-stdout</tt>
  
<tt>'''--port'''</tt>
+
Опция <tt>--source-node</tt> задает адрес источника.
  
Порт, на который будут приниматься входящие соединения. По умолчанию 7764.
+
Опция <tt>--allow-source-download</tt> разрешает узлу поддержки скачивать данные с источника (скачивание с других узлов поддержки и клиентов в данном случае запрещено).
  
 +
Если необходимо разрешить узлам поддержки скачивать данные с других узлов поддержки, то следует задать список других узлов опцией <tt>--support-node</tt> и разрешить скачивание опцией <tt>--allow-support-download</tt>.
  
<tt>'''--trackers'''</tt>
+
На сервере 192.168.1.2 это будет выглядеть так:
 +
<tt>acestreamengine --stream-node \
 +
--url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 +
--state-dir "/tmp" \
 +
--source-node "192.168.1.1:7764" \
 +
--allow-source-download \
 +
--support-node "192.168.1.3:8621" \
 +
--allow-support-download \
 +
--log-stdout</tt>
  
Список дополнительных трекеров, которые будут использоваться для обмена пирами. Адреса трекеров указываются через запятую. По умолчанию дополнительные трекеры не используются.
+
На сервере 192.168.1.3:
 +
<tt>acestreamengine --stream-node \
 +
--url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 +
--state-dir "/tmp" \
 +
--source-node "192.168.1.1:7764" \
 +
--allow-source-download \
 +
--support-node "192.168.1.2:8621" \
 +
--allow-support-download \
 +
--log-stdout</tt>
  
 +
====Приватный источник с двумя узлами поддержки====
 +
Иногда может возникнуть необходимость запретить клиентам напрямую обращаться к источнику трансляции. Например, источник может быть физически расположен на сервере в защищенной зоне без доступа из внешнего мира. В этом случае трансляцию можно организовать по следующей схеме:
 +
*источник делается приватным (получать от него данные смогут только узлы поддержки, указанные явным образом)
 +
*узлы поддержки получают данные от источника и отдают клиентам
 +
*клиенты получают данные от узлов поддержки
  
<tt>'''--provider-key'''</tt>
+
Для того, чтобы сделать источник приватным, следует указать опцию <tt>--private-source</tt>:
 +
<tt>acestreamengine --stream-source \
 +
--name "test" \
 +
--title "Тестовая трансляция" \
 +
--source "<nowiki>http://192.168.1.100/stream</nowiki>" \
 +
--bitrate 300000 \
 +
--port 7764 \
 +
--publish-dir "/home/www/streams" \
 +
--cache-dir "/tmp/streams" \
 +
--add-authorized-peers \
 +
--skip-internal-tracker \
 +
--tracker "udp://192.168.1.2:2710/announce" \
 +
--support-node "192.168.1.2:8621" \
 +
--support-node "192.168.1.3:8621" \
 +
--private-source \
 +
--log-stdout</tt>
  
Ключ лицензии для коммерческих трансляций. По умолчанию не используется.
+
Следует обратить внимание на то, что в данной конфигурации адрес трекера изменен на <tt>udp://192.168.1.2:2710/announce</tt>. Это сделано для поддержки старых версий клиентов, которые не обрабатывают список авторизованных пиров (подробнее здесь [[#Авторизованные узлы|Авторизованные узлы]]).
  
 
+
Узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 запускаем как обычно:
<tt>'''--maxclients'''</tt>
+
<tt>acestreamengine --stream-node \
 
+
--url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
Максимальное количество клиентов, которые будут получать данные непосредственно от источника трансляции. По умолчанию 7.
+
  --state-dir "/tmp" \
 
+
  --source-node "192.168.1.1:7764" \
 
+
  --allow-source-download \
'''Пример:'''
+
  --log-stdout</tt>
<tt>tsengine-stream --name test --source http://84.22.159.204:8006 --bitrate 350000 --host mysite.com --destdir /tmp/streams</tt>
 
 
 
После запуска трансляции в директории /tmp/streams будут созданы такие файлы:
 
 
 
<tt>'''test'''</tt> - кэш трансляции. Размер этого файла примерно равен длительность_потока_в_секундах * битрейт байт
 
 
 
<tt>'''test.tslive'''</tt> - с помощью этого файла пользователи могут подключаться к трансляции
 
 
 
<tt>'''test.restart'''</tt> - здесь хранится информация для корректного перезапуска трансляции
 
 
 
<tt>'''test.sauth'''</tt> - ключ для цифровой подписи трансляции
 
 
 
 
 
Также после запуска можно зайти на страницу трекера, встроенного в TS Engine:
 
 
 
<tt>http://mysite.com:7764/</tt>
 
 
 
 
 
На данной странице отображается некоторая информация по трансляции, а также здесь можно скачать файл трансляции .tslive по такой ссылке:
 
 
 
<tt>http://mysite.com:7764/file?name=test</tt>
 
 
 
 
 
== Просмотр трансляции пользователями. ==
 
 
 
Если два основных способа просмтра трансляции
 
 
 
# пользователь скачивает файл .tslive и запускает его в TS Player
 
# организатор трансляции создает веб-страницу для просмотра трансляции, пользователи заходят на данную страницу и смотрят трансляцию через браузер.
 
 
 
В качестве шаблона для такой страницы можно использовать http://torrentstream.org/stream/test.php. Необходимо только изменить ссылку на файл .tslive в этой строке:
 
 
 
<tt>this.loadTorrent("http://torrentstream.net/streams/test2.mpegts.tslive");</tt>
 
 
 
 
 
== Мониторинг трансляции ==
 
 
 
Программа tsengine-stream выводит всю отладочную информацию в STDERR. Успешный страрт трансляции выглядит примерно таким образом:
 
 
 
  <tt>host:~# tsengine-stream --name test --source http://84.22.159.204:8006 --bitrate 350000 --host mysite.com --destdir /tmp/streams
 
tracker url: http://mysite.com:7764/announce/
 
bitrate: 350000
 
piece size: 262144
 
dest dir: /tmp/streams
 
  ------------------------
 
createlivestream: open stream: url http://84.22.159.204:8006 reader builtin
 
2012-07-16 12:56:36 stream: started input thread
 
2012-07-16 12:56:37 stream: created piece 0 speed 131.12 KiB/s
 
2012-07-16 12:56:38 stream: created piece 1 speed 183.15 KiB/s
 
2012-07-16 12:56:39 stream: created piece 2 speed 198.34 KiB/s
 
  2012-07-16 12:56:40 stream: created piece 3 speed 196.96 KiB/s
 
2012-07-16 12:56:41 stream: created piece 4 speed 199.23 KiB/s
 
  2012-07-16 12:56:43 stream: created piece 5 speed 203.08 KiB/s
 
2012-07-16 12:56:44 stream: created piece 6 speed 206.37 KiB/s</tt>
 
 
 
Основная выводимая информация: номера создаваемых кусков и скорость загрузки данных от источника трансляции.
 
 
 
Остановка трансляции осуществляется нажатием Ctrl-C
 

Latest revision as of 19:32, 9 June 2020

Запуск трансляции

Основные термины

  • Источник - программа, которая принимает на вход HTTP-поток трансляции и обеспечивает просмотр трансляции с помощью ПО Ace Stream
  • Узел поддержки - программа, позволяющая масштабировать трансляцию за счет использования дополнительного серверного оборудования и интернет-каналов
  • Клиент - ПО Ace Stream, которое используется для просмотра трансляции
  • Timeshift - временной интервал, в рамках которого в клиенты могут осуществлять перемотку трансляции

Переход с версий 2.0.х на версию 2.1 и выше

С 10 сентября 2013 года доступна обновленная версия движка 2.1.6 под Ubuntu, Debian и CentOS.

Перед полномасштабным использованием новой версии мы рекомендуем по возможности протестировать ее на одной или нескольких трансляциях.

При возникновении каких-либо проблем просьба писать на форум http://forum.torrentstream.org либо на почту support@acestream.net.

Старые версии временно доступны по прямым ссылкам:

Ubuntu:

Debian:

CentOS 6:

ВНИМАНИЕ! В ближайшее время поддержка старых версий будет прекращена.

ВАЖНО! Все трансляции, созданные с помощью новой версии Ace Stream (2.1 и выше) не поддерживаются клиентским ПО старых версий (2.0.х и ниже). При попытке просмотреть новую трансляцию с помощью старого движка будет выдаваться ошибка "Cannot load transport file"

Изменения в параметрах запуска

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

Основные изменения:

  • используется один исполняемый файл acestreamengine; различные режимы запуска (источник, узел поддержки) задаются опциями:
    • вместо acestreamengine-stream следует запускать acestreamengine --stream-source
    • вместо acestreamengine-node следует запускать acestreamengine --stream-node
    • вместо acestreamengine-client-console следует запускать acestreamengine --client-console
    • вместо acestreamengine-client-gtk следует запускать acestreamengine --client-gtk
  • изменена система логирования. В старых версия движок всю отладочную информацию выводил в STDERR и для записи логов в файл требовалось перенаправлять вывод. В новой версии можно в опциях задать, куда писать логи - в STDOUT, в STDERR, в файл либо в syslog. Для файлов поддерживается ротация логов по размеру. Описание всех опций смотрите в разделе Команда acestreamengine

Команда acestreamengine

Начиная с версии 2.1 Ace Stream Engine для Linux представляет собой один исполняемый файл acestreamengine, который работает в различных режимах в зависимости от заданных параметров.

Режим работы задается одним из следующих параметров:

  • --client-console - запустить движок в режиме клиента из консоли (без графического интерфейса)
  • --client-wx - запустить движок в режиме клиента с графическим интерфейсом WX
  • --client-gtk - запустить движок в режиме клиента с графическим интерфейсом GTK
  • --stream-source - запустить источник трансляции
  • --stream-node - запустить узел поддержки
  • --create-transport - создать транспортный файл из существующего контента (VOD)
  • --create-transport-multi - создать мультипотоковый транспортный файл
  • --version - показать версию движка

Каждый режим работы имеет свои обязательные и необязательные параметры, описанные в соответствующих разделах.

Также всех режимов работы есть общие параметры, которые управляют выводом отладочной информации.

  • --log-stdout - выводить информацию в STDOUT
  • --log-stderr - выводить информацию в STDERR
  • --log-file PATH - выводить информацию в указанный файл
  • --log-max-size SIZE - максимальный размер файла (в байтах)
  • --log-backup-count COUNT - сколько резервных логов хранить (резервный лог файл создается при достижении лимита, указанного паметром --log-max-size)
  • --log-file-buffer SIZE - включить буферизацию вывода в файл (с использованием буфера указанного размера в байтах)
  • --log-syslog HOST - выводить информацию в syslog-сервер по указанному адресу
  • --log-syslog-port PORT - порт syslog-сервера
  • --log-syslog-facility FACILITY - используемый facility
  • --log-syslog-buffer SIZE - включить буферизацию вывода в syslog (с использованием буфера указанного размера в байтах)

Общая схема работы

Организация трансляции начинается с запуска источника (команда acestreamengine-stream). Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с оригиналом трансляции и после запуска создает файл с расширением acelive. Данный файл является уникальным идентификатором трансляции и используется клиентами для подключения и просмотра.

Синтаксис команды acestreamengine --stream-source

Команда acestreamengine --stream-source запускает источник трансляции.

обязательные параметры

  • --name NAME (*) - название трансляции (это название используется при создании файла acelive и других служебных файлов)
  • --source SOURCE - источник (ссылка на http-поток)
  • --bitrate BITRATE (*) - средний битрейт потока в байтах в секунду

необязательные параметры

  • --title TITLE (*) - "читабельное" название трансляции (это название выводится у клиентов). Если не задано, берется из --name
  • --destdir DESTDIR - устаревший параметр, лучше использовать --cache-dir и --publish-dir
  • --cache-dir CACHE_DIR - папка для создания служебных файлов (кеш трансляции и другие)
  • --publish-dir PUBLISH_DIR - папка, в которой будет создан acelive-файл
  • --piecesize PIECESIZE (*) - размер куска в байтах, в степени 2 (если не задан, выставляется автоматически в зависимости от битрейта)
  • --duration DURATION (*) - размер кеша трансляции в формат ЧЧ:ММ:СС (по умолчанию один час: 01:00:00)
  • --host HOST (*) - вручную задать адрес локального трекера
  • --port PORT (*) - порт, на котором работает движок. По умолчанию 7764.
  • --skip-internal-tracker (*) - отключить локальный трекер
  • --add-authorized-peers (*) - добавить список авторизованных пиров в acelive файл
  • --private-source (*) - сделать источник приватным
  • --support-node SUPPORT_NODE (*) - добавить узел поддержки (в формате ip:port). Этот параметр может встречаться несколько раз, если нужно добавить несколько узлов поддержки.
  • --tracker TRACKER (*) - добавить трекер (announce url). Этот параметр может встречаться несколько раз.
  • --maxclients MAXCLIENTS - максимальное количество пиров, на которые одновременно отдаются данные с источника. По умолчанию 7.
  • --log-debug DEBUG - установить уровень отладки (по умолчанию 0 - минимальный)
  • --source-read-timeout SECONDS - таймаут на чтение данных из оригинального источника (в секундах). По умолчанию 30.
  • --source-reconnect-interval SECONDS - интервал в секундах, через который движок попробует повторно подсоединиться к оригинальному источнику при обрыве связи. По умолчанию 5.
  • --pid-file-dir PATH - папка, в которой будет создан pid-файл движка. По умолчанию /tmp.
  • --provider-key (*) - ключ провайдера (используется для партнерской программы)
  • --sid (*) - идентификатор трансляции для статистики (используется для партнерской программы)
  • --permanent (*) - отметить трансляцию, которая идет 24/7 (круглосуточная трансляция)
  • --date-start YYYY-MM-DD HH:mm:ss (*) - указать дату и время начала трансляции (для трансляций с ограниченным временем вещания)
  • --date-end YYYY-MM-DD HH:mm:ss (*) - указать дату и время окончания трансляции (для трансляций с ограниченным временем вещания)
  • --premium (*) - запросить статус "премиум" для трансляции
  • --upload-limit - ограничить скорость отдачи (в байтах/с, по умолчанию 0 - не ограничивать)
  • --max-connections - максимальное общее кол-во соединений (по умолчанию 1000)
  • --max-peers - максимальное кол-во подключений к пирам (по умолчанию 50)
  • --service-remote-access - разрешить удаленный просмотр статистики
  • --service-access-token - ключ доступа для удаленной статистики
  • --stats-report-interval - интервал в секундах между обновлениями внутренней статистики (по умолчанию 60)
  • --stats-report-peers - обновлять данные по пирам во внутренней статистике

дополнительно

  • -h, --help - показать описание команд

примечание

Изменение параметров, отмеченных звездочками, приводит к изменению Content ID трансляции

Синтаксис команды acestreamengine --stream-node

Команда acestreamengine --stream-node запускает узел поддержки

обязательные параметры

  • --url URL> - ссылка на acelive файл трансляции

необязательные параметры

  • --port PORT - порт (по умолчанию 8621)
  • --state-dir STATE_DIR - папка для временных файлов (удаляется после остановки узла поддержки)
  • --source-node SOURCE_NODE - адрес источника трансляции (ip:port)
  • --support-node SUPPORT_NODE - добавить адрес другого узла поддержки (ip:port). Этот параметр может встречаться несколько раз.
  • --allow-source-download - разрешить получение данных от источника
  • --allow-support-download - разрешить получение данных от других узлов поддержки
  • --allow-peers-download - разрешить получение данных от обычных пиров
  • --max-connections MAX_CONNECTIONS - максимальное общее кол-во соединений (по умолчанию 1000)
  • --max-peers MAX_PEERS - максимальное кол-во подключений к пирам (по умолчанию 50)
  • --max-upload-slots MAX_UPLOAD_SLOTS - максимальное количество пиров, на которые одновременно отдаются данные с узла поддержки (по умолчанию 7)
  • --max-download-speed MAX_DOWNLOAD_SPEED - максимальная скорость загрузки (байт/с). По умолчанию 0 (без ограничений).
  • --max-upload-speed MAX_UPLOAD_SPEED - максимальная скорость отдачи (байт/с). По умолчанию 0 (без ограничений).
  • --stats-report-interval STATS_REPORT_INTERVAL - интервал в секундах между обновлениями внутренней статистики (по умолчанию 60)
  • --stats-report-peers - обновлять данные по пирам во внутренней статистике
  • --service-remote-access - разрешить удаленный просмотр статистики
  • --service-access-token - ключ доступа для удаленной статистики
  • --log-debug DEBUG - установить уровень отладки

дополнительно

  • -h, --help - показать описание команд

Встроенный трекер

Встроенный трекер - это трекер встроенный в источник трансляции. Если он не отключен опцией --skip-internal-tracker, то его адрес будет автоматически добавлен в acelive-файл.

При организации трансляций с большим количеством пользователей мы рекомендуем отключать встроенный трекер и заменять его внешним трекером с хорошей производительностью (например, XBT Tracker)

Авторизованные узлы

Для того, чтобы клиент подключился к трансляции и начал просмотр, ему необходимо либо установить соединение минимум с двумя другими узлами, либо установить соединение с авторизованным узлом. Авторизованный узел - это узел, который был отмечен создателем трансляции как такой, которому можно "доверять". Как правило, это источник трансляции и/или узлы поддержки.

Последние версии ПО ACE Stream поддерживают использование списка авторизованных узлов в acelive-файле. Для этого при создании трансляции задается опция --add-authorized-peers, после чего формируется список авторизованных узлов и добавляется в acelive-файл. В список авторизованных узлов попадает источник трансляции (если это не приватный источник) и все указанные узлы поддержки. Клиенты, которые получили данный acelive-файл, используют список для определения того, является ли какой-либо узел авторизованным.

Если в acelive-файл не был добавлен список авторизованных узлов, либо у клиента установлена старая версия ACE Stream, которая не распознает данный список, то авторизованным узлом считается узел, IP адрес которого совпадает с адресом первого трекера в списке трекеров. Если встроенный трекер на источнике не отключен, то он будет первым в списке и клиенты будут считать источник авторизованным узлом. В случае, если встроенный трекер отключен, для поддержки старых клиентов мы рекомендуем ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию).

Timeshift

Функция "Timeshift" дает пользователям возможность осуществить перемотку трансляции на некоторое время назад, а также поставить трансляцию на паузу и вернуться к просмотру в удобное для них время.

Время, на которое может осуществляться перемотка назад, задается при создании трансляции опцией --duration. Время указывается в формате ЧЧ:ММ:СС.

Например, при указании опции --duration 00:30:00 будет задан интервал 30 минут.

Примеры

Для примеров предположим наличие локальной сети с тремя серверами:

  • 192.168.1.1 - сервер для источника
  • 192.168.1.2 - сервер для узла поддержки
  • 192.168.1.3 - сервер для узла поддержки
  • 192.168.1.100 - сервер, который отдает оригинальный поток трансляции (HTTP MPEG-TS) по адресу http://192.168.1.100/stream (средний битрейт потока - 300 000 байт/с)

На сервере 192.168.1.1 предполагается наличие веб-сервера с корневой папкой /home/www, а также двух папок:

  • /home/www/streams - для хранения acelive-файлов, которые будут доступны для скачивания по ссылке вида http://192.168.1.1/streams/test.acelive
  • /tmp/streams - для хранения кэша и служебных файлов трансляций

Источник с встроенным трекером

Это наиболее простой способ запуск трансляции, не требующий запуска узлов поддержки и установки дополнительных трекеров. Данный способ подходит для трансляций с небольшим количество пользователей.

На сервере 192.168.1.1 запускаем источник:

acestreamengine --stream-source \
--name "test" \
--title "Тестовая трансляция" \
--source "http://192.168.1.100/stream" \
--bitrate 300000 \
--publish-dir "/home/www/streams" \
--cache-dir "/tmp/streams" \
--add-authorized-peers \
--log-stdout

Опция --add-authorized-peers добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1).

После запуска трансляции в папке /home/www/streams будет создан файл test.acelive, в папке /tmp/streams будут созданы такие файлы:

  • test - кэш трансляции. Размер этого файла примерно равен длительность_потока_в_секундах (опция --duration, по умолчанию 1 час) * битрейт байт
  • test.restart - здесь хранится информация для корректного перезапуска трансляции
  • test.sauth - ключ для цифровой подписи трансляции

Для просмотра трансляции клиенты могут скачать файл трансляции по ссылке http://192.168.1.1/streams/test.acelive и запустить его в плеере ACE Stream, либо использовать другие способы (Способы просмотра трансляции).

Источник с внешним трекером

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

В качестве внешнего трекера мы советуем использовать XBT Tracker

В данном примере предполагаем, что XBT Tracker установлен и запущен на сервере 192.168.1.1. Запуск трансляции теперь будет выглядеть таким образом:

acestreamengine --stream-source \
--name "test" \
--title "Тестовая трансляция" \
--source "http://192.168.1.100/stream" \
--bitrate 300000 \
--publish-dir "/home/www/streams" \
--cache-dir "/tmp/streams" \
--add-authorized-peers \
--skip-internal-tracker \
--tracker "udp://192.168.1.1:2710/announce" \
--log-stdout

Опция --skip-internal-tracker отключает встроенный трекер, опция --tracker подключает внешний трекер.

Источник с двумя узлами поддержки

В случае, если на источнике не хватает пропускной способности исходящего канала для нормальной работы трансляции, можно использовать узлы поддержки. Чаще всего узел поддержки представляет собой узел, который принимает данные от источника и отдает клиентам (хотя узел поддержки также может принимать данные от других узлов поддержки и даже от клиентов, в зависимости от его настроек). Узел поддержки имеет смысл ставить на отдельном сервере с хорошей шириной исходящего канала.

Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции --support-node:

acestreamengine --stream-source \
--name "test" \
--title "Тестовая трансляция" \
--source "http://192.168.1.100/stream" \
--bitrate 300000 \
--port 7764 \
--publish-dir "/home/www/streams" \
--cache-dir "/tmp/streams" \
--add-authorized-peers \
--skip-internal-tracker \
--tracker "udp://192.168.1.1:2710/announce" \
--support-node "192.168.1.2:8621" \
--support-node "192.168.1.3:8621" \
--log-stdout

Запускаем узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 (команды для запуска одинаковые):

acestreamengine --stream-node \
--url "http://192.168.1.1/streams/test.acelive" \
--state-dir "/tmp" \
--source-node "192.168.1.1:7764" \
--allow-source-download \
--log-stdout

Опция --source-node задает адрес источника.

Опция --allow-source-download разрешает узлу поддержки скачивать данные с источника (скачивание с других узлов поддержки и клиентов в данном случае запрещено).

Если необходимо разрешить узлам поддержки скачивать данные с других узлов поддержки, то следует задать список других узлов опцией --support-node и разрешить скачивание опцией --allow-support-download.

На сервере 192.168.1.2 это будет выглядеть так:

acestreamengine --stream-node \
--url "http://192.168.1.1/streams/test.acelive" \
--state-dir "/tmp" \
--source-node "192.168.1.1:7764" \
--allow-source-download \
--support-node "192.168.1.3:8621" \
--allow-support-download \
--log-stdout

На сервере 192.168.1.3:

acestreamengine --stream-node \
--url "http://192.168.1.1/streams/test.acelive" \
--state-dir "/tmp" \
--source-node "192.168.1.1:7764" \
--allow-source-download \
--support-node "192.168.1.2:8621" \
--allow-support-download \
--log-stdout

Приватный источник с двумя узлами поддержки

Иногда может возникнуть необходимость запретить клиентам напрямую обращаться к источнику трансляции. Например, источник может быть физически расположен на сервере в защищенной зоне без доступа из внешнего мира. В этом случае трансляцию можно организовать по следующей схеме:

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

Для того, чтобы сделать источник приватным, следует указать опцию --private-source:

acestreamengine --stream-source \
--name "test" \
--title "Тестовая трансляция" \
--source "http://192.168.1.100/stream" \
--bitrate 300000 \
--port 7764 \
--publish-dir "/home/www/streams" \
--cache-dir "/tmp/streams" \
--add-authorized-peers \
--skip-internal-tracker \
--tracker "udp://192.168.1.2:2710/announce" \
--support-node "192.168.1.2:8621" \
--support-node "192.168.1.3:8621" \
--private-source \
--log-stdout

Следует обратить внимание на то, что в данной конфигурации адрес трекера изменен на udp://192.168.1.2:2710/announce. Это сделано для поддержки старых версий клиентов, которые не обрабатывают список авторизованных пиров (подробнее здесь Авторизованные узлы).

Узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 запускаем как обычно:

acestreamengine --stream-node \
--url "http://192.168.1.1/streams/test.acelive" \
--state-dir "/tmp" \
--source-node "192.168.1.1:7764" \
--allow-source-download \
--log-stdout