Difference between revisions of "Streaming"

From Ace Stream Wiki
Jump to: navigation, search
(Установка)
(Синтаксис команды acestreamengine --stream-source)
(29 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
Репозиторий следует выбирать в зависимости от операционной системы.
 
Репозиторий следует выбирать в зависимости от операционной системы.
  
''Debian 6+:''
+
''Debian 6:''
 
  <tt><nowiki>deb http://repo.acestream.org/debian/ squeeze main</nowiki></tt>
 
  <tt><nowiki>deb http://repo.acestream.org/debian/ squeeze main</nowiki></tt>
 
  либо
 
  либо
Line 16: Line 16:
 
Примечание: пакеты в репозитории sid собраны с зависимостями, которые соответствуют официальным sid-репозиториям Debian.
 
Примечание: пакеты в репозитории sid собраны с зависимостями, которые соответствуют официальным sid-репозиториям Debian.
 
Если вы не знаете, какой репозиторий выбрать, используйте squeeze.
 
Если вы не знаете, какой репозиторий выбрать, используйте squeeze.
 +
 +
''Debian 7:''
 +
<tt><nowiki>deb http://repo.acestream.org/debian/ wheezy main</nowiki></tt>
  
 
''Ubuntu 11.10:''
 
''Ubuntu 11.10:''
Line 25: Line 28:
 
''Ubuntu 12.10:''
 
''Ubuntu 12.10:''
 
  <tt><nowiki>deb http://repo.acestream.org/ubuntu/ quantal main</nowiki></tt>
 
  <tt><nowiki>deb http://repo.acestream.org/ubuntu/ quantal main</nowiki></tt>
 +
 +
''Ubuntu 13.04:''
 +
<tt><nowiki>deb http://repo.acestream.org/ubuntu/ raring main</nowiki></tt>
  
 
'''Шаг 2'''
 
'''Шаг 2'''
Line 57: Line 63:
 
Для Debian доступен только движок (acestream-engine).
 
Для Debian доступен только движок (acestream-engine).
  
 +
<!--
 
=== Установка пакет ACE Stream на Ubuntu из deb-пакета ===
 
=== Установка пакет ACE Stream на Ubuntu из deb-пакета ===
 
Можно установить ACE Stream на Ubuntu без использования репозитория. Для этого необходимо скачать установочный пакет по одной из ссылок ниже и установить пакет через менеджер пакетов (например, двойным кликом на скачанный файл пакета).
 
Можно установить ACE Stream на Ubuntu без использования репозитория. Для этого необходимо скачать установочный пакет по одной из ссылок ниже и установить пакет через менеджер пакетов (например, двойным кликом на скачанный файл пакета).
Line 69: Line 76:
  
 
Данный установочный пакет является аналогом пакета <tt>acestream-full</tt> из репозитория и включает в себя движок, плеер и плагин для браузеров.
 
Данный установочный пакет является аналогом пакета <tt>acestream-full</tt> из репозитория и включает в себя движок, плеер и плагин для браузеров.
 +
-->
  
=== Установка ACE Stream на CentOS ===
+
=== Установка Ace Stream на CentOS ===
 
Для установки на CentOS необходимо:
 
Для установки на CentOS необходимо:
 
* наличие установленного python 2.6
 
* наличие установленного python 2.6
Line 78: Line 86:
  
 
На данный момент доступны такие пакеты:
 
На данный момент доступны такие пакеты:
*'''CentOS 5 64bit''': http://dl.acestream.org/centos/5/acestream-engine-2.0.8_7-centos5-x86_64.tar.gz
+
*'''CentOS 5 64bit''': http://dl.acestream.org/centos/5/acestream-engine-2.1.6_4-centos5-x86_64.tar.gz
*'''CentOS 6 64bit''': http://dl.acestream.org/centos/6/acestream-engine-2.0.8_7-centos6-x86_64.tar.gz
+
*'''CentOS 6 64bit''': http://dl.acestream.org/centos/6/acestream-engine-2.1.6_4-centos6-x86_64.tar.gz
 +
 
 +
Данный пакет тестировался на версиях 5.8 и 6.3 соответственно.
 +
 
 +
=== Android ===
 +
Пакет для установки Ace Stream for Android:
 +
http://dl.acestream.org/android/acestream-2.1.5.apk
  
Данные пакеты тестировались на версиях 5.8 и 6.3 соответственно
+
==== Информация для разработчиков  ====
 +
Ace Stream for Android выполнен в виде сервиса, к которому могут подключаться сторонние приложения.
 +
AIDL-файлы для подключения к Ace Stream:
 +
* http://dl.acestream.org/android/IAceStreamEngine.aidl
 +
* http://dl.acestream.org/android/IAceStreamEngineCallback.aidl
 +
 
 +
После того, как стороннее приложение подключается к сервису Ace Stream, происходит следующее:
 +
* если Ace Stream не запущен, то он запускается
 +
* приложение получает порт для работы с Ace Stream Engine API через callback onStartEnd()
 +
* приложение начинает работу с движком по API
  
 
==Запуск трансляции==
 
==Запуск трансляции==
  
 
===Основные термины===
 
===Основные термины===
*'''Источник''' - программа, которая принимает на вход HTTP-поток трансляции и обеспечивает просмотр трансляции с помощью ПО ACE Stream
+
*'''Источник''' - программа, которая принимает на вход HTTP-поток трансляции и обеспечивает просмотр трансляции с помощью ПО Ace Stream
 
*'''Узел поддержки''' - программа, позволяющая масштабировать трансляцию за счет использования дополнительного серверного оборудования и интернет-каналов
 
*'''Узел поддержки''' - программа, позволяющая масштабировать трансляцию за счет использования дополнительного серверного оборудования и интернет-каналов
*'''Клиент''' - ПО ACE Stream, которое используется для просмотра трансляции
+
*'''Клиент''' - ПО Ace Stream, которое используется для просмотра трансляции
 
*'''Timeshift''' - временной интервал, в рамках которого в клиенты могут осуществлять перемотку трансляции
 
*'''Timeshift''' - временной интервал, в рамках которого в клиенты могут осуществлять перемотку трансляции
 +
 +
===Переход с версий 2.0.х на версию 2.1 и выше===
 +
С 10 сентября 2013 года доступна обновленная версия движка 2.1.6 под Ubuntu, Debian и CentOS.
 +
 +
Перед полномасштабным использованием новой версии мы рекомендуем по возможности протестировать ее на одной или нескольких трансляциях.
 +
 +
При возникновении каких-либо проблем просьба писать на форум http://forum.torrentstream.org либо на почту support@acestream.net.
 +
 +
Старые версии временно доступны по прямым ссылкам:
 +
 +
'''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
 +
 +
'''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
 +
 +
<span style="color: #900;">ВНИМАНИЕ!</span> В ближайшее время поддержка старых версий будет прекращена.
 +
 +
<span style="color: #009;">ВАЖНО!</span> Все трансляции, созданные с помощью новой версии Ace Stream (2.1 и выше) не поддерживаются клиентским ПО старых версий (2.0.х и ниже). При попытке просмотреть новую трансляцию с помощью старого движка будет выдаваться ошибка "Cannot load transport file"
 +
 +
====Изменения в параметрах запуска====
 +
В новой версии изменились некоторые параметры запуска источников и узлов поддержки из командной строки, поэтому запуск со старой командной строкой работать не будет.
 +
 +
Основные изменения:
 +
* используется один исполняемый файл <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]]
 +
 +
===Команда 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 (с использованием буфера указанного размера в байтах)
  
 
===Общая схема работы===
 
===Общая схема работы===
Line 95: Line 188:
 
Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с оригиналом трансляции и после запуска создает файл с расширением acelive. Данный файл является уникальным идентификатором трансляции и используется клиентами для подключения и просмотра.
 
Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с оригиналом трансляции и после запуска создает файл с расширением acelive. Данный файл является уникальным идентификатором трансляции и используется клиентами для подключения и просмотра.
  
===Синтаксис команды acestreamengine-stream===
+
===Синтаксис команды acestreamengine --stream-source===
Команда <tt>acestreamengine-stream</tt> запускает источник трансляции.
+
Команда <tt>acestreamengine --stream-source</tt> запускает источник трансляции.
  
 
''обязательные параметры''
 
''обязательные параметры''
*<tt>--name NAME</tt> - название трансляции (это название используется при создании файла acelive и других служебных файлов)
+
*<tt>--name NAME (*)</tt> - название трансляции (это название используется при создании файла acelive и других служебных файлов)
 
*<tt>--source SOURCE</tt> - источник (ссылка на http-поток)
 
*<tt>--source SOURCE</tt> - источник (ссылка на http-поток)
*<tt>--bitrate BITRATE</tt> - средний битрейт потока в байтах в секунду
+
*<tt>--bitrate BITRATE (*)</tt> - средний битрейт потока в байтах в секунду
  
 
''необязательные параметры''
 
''необязательные параметры''
*<tt>--title TITLE</tt> - "читабельное" название транляции (это название выводится у клиентов). Если не задано, берется из --name
+
*<tt>--title TITLE (*)</tt> - "читабельное" название трансляции (это название выводится у клиентов). Если не задано, берется из --name
 
*<tt>--destdir DESTDIR</tt> - устаревший параметр, лучше использовать --cache-dir и --publish-dir
 
*<tt>--destdir DESTDIR</tt> - устаревший параметр, лучше использовать --cache-dir и --publish-dir
 
*<tt>--cache-dir CACHE_DIR</tt> - папка для создания служебных файлов (кеш трансляции и другие)
 
*<tt>--cache-dir CACHE_DIR</tt> - папка для создания служебных файлов (кеш трансляции и другие)
 
*<tt>--publish-dir PUBLISH_DIR</tt> - папка, в которой будет создан acelive-файл
 
*<tt>--publish-dir PUBLISH_DIR</tt> - папка, в которой будет создан acelive-файл
*<tt>--piecesize PIECESIZE</tt> - размер куска в байтах (если не задан, выставляется автоматически в зависимости от битрейта)
+
*<tt>--piecesize PIECESIZE (*)</tt> - размер куска в байтах (если не задан, выставляется автоматически в зависимости от битрейта)
*<tt>--duration DURATION</tt> - размер кеша трансляции в формат ЧЧ:ММ:СС (по умолчанию один час: 01:00:00)
+
*<tt>--duration DURATION (*)</tt> - размер кеша трансляции в формат ЧЧ:ММ:СС (по умолчанию один час: 01:00:00)
*<tt>--host HOST</tt> - вручную задать адрес локального трекера
+
*<tt>--host HOST (*)</tt> - вручную задать адрес локального трекера
*<tt>--port PORT</tt> - порт, на котором работает движок
+
*<tt>--port PORT (*)</tt> - порт, на котором работает движок. По умолчанию 7764.
*<tt>--skip-internal-tracker</tt> - отключить локальный трекер
+
*<tt>--skip-internal-tracker (*)</tt> - отключить локальный трекер
*<tt>--add-authorized-peers</tt> - добавить список авторизованных пиров в acelive файл
+
*<tt>--add-authorized-peers (*)</tt> - добавить список авторизованных пиров в acelive файл
*<tt>--private-source</tt> - сделать источник приватным
+
*<tt>--private-source (*)</tt> - сделать источник приватным
*<tt>--support-node SUPPORT_NODE</tt> - добавить узел поддержки (в формате ip:port). Этот параметр может встречаться несколько раз, если нужно добавить несколько узлов поддержки.
+
*<tt>--support-node SUPPORT_NODE (*)</tt> - добавить узел поддержки (в формате ip:port). Этот параметр может встречаться несколько раз, если нужно добавить несколько узлов поддержки.
*<tt>--tracker TRACKER</tt> - добавить трекер (announce url). Этот параметр может встречаться несколько раз.
+
*<tt>--tracker TRACKER (*)</tt> - добавить трекер (announce url). Этот параметр может встречаться несколько раз.
*<tt>--trackers TRACKERS</tt> - старый формат добавления трекеров (список announce url через запятую)
+
*<tt>--maxclients MAXCLIENTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с источника. По умолчанию 7.
*<tt>--provider-key PROVIDER_KEY</tt> - ключ провайдера (только для коммерческих трансляций)
+
*<tt>--log-debug DEBUG</tt> - установить уровень отладки (по умолчанию 0 - минимальный)
*<tt>--maxclients MAXCLIENTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с источника
+
*<tt>--source-read-timeout SECONDS</tt> - таймаут на чтение данных из оригинального источника (в секундах). По умолчанию 30.
*<tt>--show-pieces</tt> - выводить в лог номера кусков по мере их создания
+
*<tt>--source-reconnect-interval SECONDS</tt> - интервал в секундах, через который движок попробует повторно подсоединиться к оригинальному источнику при обрыве связи. По умолчанию 5.
*<tt>--show-peers</tt> - периодически выводить в лог список подключенных пиров
+
*<tt>--pid-file-dir PATH</tt> - папка, в которой будет создан pid-файл движка. По умолчанию /tmp.
*<tt>--debug DEBUG</tt> - установить уровень отладки
+
*<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>-h, --help</tt> - показать описание команд
 
*<tt>-h, --help</tt> - показать описание команд
  
===Синтаксис команды acestreamengine-node===
+
''примечание''
Команда <tt>acestreamengine-node</tt> запускает узел поддержки
+
 
 +
Изменение параметров, отмеченных звездочками, приводит к изменению Content ID трансляции
 +
 
 +
===Синтаксис команды acestreamengine --stream-node===
 +
Команда <tt>acestreamengine --stream-node</tt> запускает узел поддержки
  
 
''обязательные параметры''
 
''обязательные параметры''
Line 141: Line 250:
 
*<tt>--allow-support-download</tt> - разрешить получение данных от других узлов поддержки
 
*<tt>--allow-support-download</tt> - разрешить получение данных от других узлов поддержки
 
*<tt>--allow-peers-download</tt> - разрешить получение данных от обычных пиров
 
*<tt>--allow-peers-download</tt> - разрешить получение данных от обычных пиров
*<tt>--max-incoming-connects MAX_INCOMING_CONNECTS</tt> - максимальное кол-во входящих соединений (от других пиров) (по умолчанию 1000)
+
*<tt>--max-connections MAX_CONNECTIONS</tt> - максимальное общее кол-во соединений (по умолчанию 1000)
*<tt>--max-outgoing-connects MAX_OUTGOING_CONNECTS</tt> - максимальное кол-во исходящих соединений (к другим пирам) (по умолчанию 50)
+
*<tt>--max-peers MAX_PEERS</tt> - максимальное кол-во подключений к пирам (по умолчанию 50)
 
*<tt>--max-upload-slots MAX_UPLOAD_SLOTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с узла поддержки (по умолчанию 7)
 
*<tt>--max-upload-slots MAX_UPLOAD_SLOTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с узла поддержки (по умолчанию 7)
 
*<tt>--max-download-speed MAX_DOWNLOAD_SPEED</tt> - максимальная скорость загрузки (байт/с). По умолчанию 0 (без ограничений).
 
*<tt>--max-download-speed MAX_DOWNLOAD_SPEED</tt> - максимальная скорость загрузки (байт/с). По умолчанию 0 (без ограничений).
 
*<tt>--max-upload-speed MAX_UPLOAD_SPEED</tt> - максимальная скорость отдачи (байт/с). По умолчанию 0 (без ограничений).
 
*<tt>--max-upload-speed MAX_UPLOAD_SPEED</tt> - максимальная скорость отдачи (байт/с). По умолчанию 0 (без ограничений).
*<tt>--show-pieces</tt> - выводить в лог номера кусков по мере их загрузки
+
*<tt>--stats-report-interval STATS_REPORT_INTERVAL</tt> - интервал в секундах между обновлениями внутренней статистики (по умолчанию 60)
*<tt>--show-peers</tt> - периодически выводить в лог список подключенных пиров
+
*<tt>--stats-report-peers</tt> - обновлять данные по пирам во внутренней статистике
*<tt>--stats-report-interval STATS_REPORT_INTERVAL</tt> - задать интервал в секундах для вывода в лог информации о скорости загрузки/отдачи. По умолчанию 0 (не выводить).
+
*<tt>--service-remote-access</tt> - разрешить удаленный просмотр статистики
*<tt>--debug DEBUG</tt> - установить уровень отладки
+
*<tt>--service-access-token</tt> - ключ доступа для удаленной статистики
 +
*<tt>--log-debug DEBUG</tt> - установить уровень отладки
  
 
''дополнительно''
 
''дополнительно''
Line 188: Line 298:
  
 
На сервере 192.168.1.1 запускаем источник:
 
На сервере 192.168.1.1 запускаем источник:
  <tt>acestreamengine-stream \
+
  <tt>acestreamengine --stream-source \
 
  --name "test" \
 
  --name "test" \
 
  --title "Тестовая трансляция" \
 
  --title "Тестовая трансляция" \
Line 196: Line 306:
 
  --cache-dir "/tmp/streams" \
 
  --cache-dir "/tmp/streams" \
 
  --add-authorized-peers \
 
  --add-authorized-peers \
  > /tmp/test-source.log 2>&1</tt>
+
  --log-stdout</tt>
 
 
Последняя строка используется для записи логов в файл /tmp/test-source.log. <tt>acestreamengine-stream</tt> выводит всю отладочную информацию на консоль в STDERR.
 
  
 
Опция <tt>--add-authorized-peers</tt> добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1).
 
Опция <tt>--add-authorized-peers</tt> добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1).
Line 216: Line 324:
 
В данном примере предполагаем, что XBT Tracker установлен и запущен на сервере 192.168.1.1.
 
В данном примере предполагаем, что XBT Tracker установлен и запущен на сервере 192.168.1.1.
 
Запуск трансляции теперь будет выглядеть таким образом:
 
Запуск трансляции теперь будет выглядеть таким образом:
  <tt>acestreamengine-stream \
+
  <tt>acestreamengine --stream-source \
 
  --name "test" \
 
  --name "test" \
 
  --title "Тестовая трансляция" \
 
  --title "Тестовая трансляция" \
Line 226: Line 334:
 
  --skip-internal-tracker \
 
  --skip-internal-tracker \
 
  --tracker "udp://192.168.1.1:2710/announce" \
 
  --tracker "udp://192.168.1.1:2710/announce" \
  > /tmp/test-source.log 2>&1</tt>
+
  --log-stdout</tt>
  
 
Опция <tt>--skip-internal-tracker</tt> отключает встроенный трекер, опция <tt>--tracker</tt> подключает внешний трекер.
 
Опция <tt>--skip-internal-tracker</tt> отключает встроенный трекер, опция <tt>--tracker</tt> подключает внешний трекер.
Line 234: Line 342:
  
 
Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции <tt>--support-node</tt>:
 
Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции <tt>--support-node</tt>:
  <tt>acestreamengine-stream \
+
  <tt>acestreamengine --stream-source \
 
  --name "test" \
 
  --name "test" \
 
  --title "Тестовая трансляция" \
 
  --title "Тестовая трансляция" \
Line 247: Line 355:
 
  --support-node "192.168.1.2:8621" \
 
  --support-node "192.168.1.2:8621" \
 
  --support-node "192.168.1.3:8621" \
 
  --support-node "192.168.1.3:8621" \
  > /tmp/test-source.log 2>&1</tt>
+
  --log-stdout</tt>
  
 
Запускаем узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 (команды для запуска одинаковые):
 
Запускаем узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 (команды для запуска одинаковые):
  <tt>acestreamengine-node \
+
  <tt>acestreamengine --stream-node \
 
  --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 
  --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 
  --state-dir "/tmp" \
 
  --state-dir "/tmp" \
 
  --source-node "192.168.1.1:7764" \
 
  --source-node "192.168.1.1:7764" \
 
  --allow-source-download \
 
  --allow-source-download \
  > /tmp/test-node.log 2>&1</tt>
+
  --log-stdout</tt>
  
 
Опция <tt>--source-node</tt> задает адрес источника.
 
Опция <tt>--source-node</tt> задает адрес источника.
Line 264: Line 372:
  
 
На сервере 192.168.1.2 это будет выглядеть так:
 
На сервере 192.168.1.2 это будет выглядеть так:
  <tt>acestreamengine-node \
+
  <tt>acestreamengine --stream-node \
 
  --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 
  --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 
  --state-dir "/tmp" \
 
  --state-dir "/tmp" \
Line 271: Line 379:
 
  --support-node "192.168.1.3:8621" \
 
  --support-node "192.168.1.3:8621" \
 
  --allow-support-download \
 
  --allow-support-download \
  > /tmp/test-node.log 2>&1</tt>
+
  --log-stdout</tt>
  
 
На сервере 192.168.1.3:
 
На сервере 192.168.1.3:
  <tt>acestreamengine-node \
+
  <tt>acestreamengine --stream-node \
 
  --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 
  --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 
  --state-dir "/tmp" \
 
  --state-dir "/tmp" \
Line 281: Line 389:
 
  --support-node "192.168.1.2:8621" \
 
  --support-node "192.168.1.2:8621" \
 
  --allow-support-download \
 
  --allow-support-download \
  > /tmp/test-node.log 2>&1</tt>
+
  --log-stdout</tt>
  
 
====Приватный источник с двумя узлами поддержки====
 
====Приватный источник с двумя узлами поддержки====
Line 290: Line 398:
  
 
Для того, чтобы сделать источник приватным, следует указать опцию <tt>--private-source</tt>:
 
Для того, чтобы сделать источник приватным, следует указать опцию <tt>--private-source</tt>:
  <tt>acestreamengine-stream \
+
  <tt>acestreamengine --stream-source \
 
  --name "test" \
 
  --name "test" \
 
  --title "Тестовая трансляция" \
 
  --title "Тестовая трансляция" \
Line 304: Line 412:
 
  --support-node "192.168.1.3:8621" \
 
  --support-node "192.168.1.3:8621" \
 
  --private-source \
 
  --private-source \
  > /tmp/test-source.log 2>&1</tt>
+
  --log-stdout</tt>
  
 
Следует обратить внимание на то, что в данной конфигурации адрес трекера изменен на <tt>udp://192.168.1.2:2710/announce</tt>. Это сделано для поддержки старых версий клиентов, которые не обрабатывают список авторизованных пиров (подробнее здесь [[#Авторизованные узлы|Авторизованные узлы]]).
 
Следует обратить внимание на то, что в данной конфигурации адрес трекера изменен на <tt>udp://192.168.1.2:2710/announce</tt>. Это сделано для поддержки старых версий клиентов, которые не обрабатывают список авторизованных пиров (подробнее здесь [[#Авторизованные узлы|Авторизованные узлы]]).
  
 
Узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 запускаем как обычно:
 
Узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 запускаем как обычно:
  <tt>acestreamengine-node \
+
  <tt>acestreamengine --stream-node \
 
  --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 
  --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \
 
  --state-dir "/tmp" \
 
  --state-dir "/tmp" \
 
  --source-node "192.168.1.1:7764" \
 
  --source-node "192.168.1.1:7764" \
 
  --allow-source-download \
 
  --allow-source-download \
  > /tmp/test-node.log 2>&1</tt>
+
  --log-stdout</tt>

Revision as of 16:45, 23 September 2013

Установка

Установка ACE Stream на Debian/Ubuntu из репозитория

Шаг 1

Добавить ссылку на соответствующий репозиторий в файл /etc/apt/sources.list.

Репозиторий следует выбирать в зависимости от операционной системы.

Debian 6:

deb http://repo.acestream.org/debian/ squeeze main
либо
deb http://repo.acestream.org/debian/ sid main

Примечание: пакеты в репозитории sid собраны с зависимостями, которые соответствуют официальным sid-репозиториям Debian. Если вы не знаете, какой репозиторий выбрать, используйте squeeze.

Debian 7:

deb http://repo.acestream.org/debian/ wheezy main

Ubuntu 11.10:

deb http://repo.acestream.org/ubuntu/ oneiric main

Ubuntu 12.04:

deb http://repo.acestream.org/ubuntu/ precise main

Ubuntu 12.10:

deb http://repo.acestream.org/ubuntu/ quantal main

Ubuntu 13.04:

deb http://repo.acestream.org/ubuntu/ raring main

Шаг 2

Установка публичного ключа. Для этого необходимо выполнить следующую команду:

Debian:

wget -O - http://repo.acestream.org/keys/acestream.public.key | apt-key add -

Ubuntu:

sudo wget -O - http://repo.acestream.org/keys/acestream.public.key | sudo apt-key add -

Шаг 3

Установка нужного пакета. Например, для установки движка нужно установить пакет acestream-engine

Debian

apt-get update
apt-get install acestream-engine

Ubuntu

sudo apt-get update
sudo apt-get install acestream-engine

В репозитории для Ubuntu доступны следующие пакеты:

  • acestream-engine - движок
  • acestream-mozilla-plugin - плагин для браузеров
  • acestream-player - десктопный плеер
  • acestream-player-data - набор общих библиотек для плеера и плагина
  • acestream-full - полный пакет, который включает в себя все вышеперечисленные

Для Debian доступен только движок (acestream-engine).


Установка Ace Stream на CentOS

Для установки на CentOS необходимо:

  • наличие установленного python 2.6
  • наличие установленного модуля python-argparse
  • скачать пакет, соответствующий версии CentOS (ссылки ниже)
  • распаковать скачанный архив и скопировать содержимое в папку /usr

На данный момент доступны такие пакеты:

Данный пакет тестировался на версиях 5.8 и 6.3 соответственно.

Android

Пакет для установки Ace Stream for Android: http://dl.acestream.org/android/acestream-2.1.5.apk

Информация для разработчиков

Ace Stream for Android выполнен в виде сервиса, к которому могут подключаться сторонние приложения. AIDL-файлы для подключения к Ace Stream:

После того, как стороннее приложение подключается к сервису Ace Stream, происходит следующее:

  • если Ace Stream не запущен, то он запускается
  • приложение получает порт для работы с Ace Stream Engine API через callback onStartEnd()
  • приложение начинает работу с движком по API

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

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

  • Источник - программа, которая принимает на вход 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 (*) - размер куска в байтах (если не задан, выставляется автоматически в зависимости от битрейта)
  • --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