Difference between revisions of "Streaming/en"
(Новая страница: «Streaming/en») |
|||
Line 1: | Line 1: | ||
− | + | == Installation == | |
+ | |||
+ | === Installing ACE Stream on Debian/Ubuntu from repository === | ||
+ | |||
+ | '''Step 1''' | ||
+ | |||
+ | Add link on appropriate repository into <tt>/etc/apt/sources.list</tt> file. | ||
+ | |||
+ | Repository should be selected according to operating system. | ||
+ | |||
+ | ''Debian 6+:'' | ||
+ | <tt><nowiki>deb http://repo.acestream.org/debian/ squeeze main</nowiki></tt> | ||
+ | or | ||
+ | <tt><nowiki>deb http://repo.acestream.org/debian/ sid main</nowiki></tt> | ||
+ | |||
+ | Note: packages in sid repository are assembled with dependencies that correspond to official sid-repositories of Debian. | ||
+ | If you don't know, which repository to choose, use squeeze. | ||
+ | |||
+ | ''Ubuntu 11.10:'' | ||
+ | <tt><nowiki>deb http://repo.acestream.org/ubuntu/ oneiric main</nowiki></tt> | ||
+ | |||
+ | ''Ubuntu 12.04:'' | ||
+ | <tt><nowiki>deb http://repo.acestream.org/ubuntu/ precise main</nowiki></tt> | ||
+ | |||
+ | ''Ubuntu 12.10:'' | ||
+ | <tt><nowiki>deb http://repo.acestream.org/ubuntu/ quantal main</nowiki></tt> | ||
+ | |||
+ | '''Step 2''' | ||
+ | |||
+ | Installing public key. To do this you have to run the following command: | ||
+ | |||
+ | ''Debian:'' | ||
+ | <tt><nowiki>wget -O - http://repo.acestream.org/keys/acestream.public.key | apt-key add -</nowiki></tt> | ||
+ | |||
+ | ''Ubuntu:'' | ||
+ | <tt><nowiki>sudo wget -O - http://repo.acestream.org/keys/acestream.public.key | sudo apt-key add -</nowiki></tt> | ||
+ | |||
+ | '''Step 3''' | ||
+ | |||
+ | Installing the right package. For example, for engine installation you have to install acestream-engine package. | ||
+ | |||
+ | ''Debian'' | ||
+ | <tt>apt-get update</tt> | ||
+ | <tt>apt-get install acestream-engine</tt> | ||
+ | |||
+ | ''Ubuntu'' | ||
+ | <tt>sudo apt-get update</tt> | ||
+ | <tt>sudo apt-get install acestream-engine</tt> | ||
+ | |||
+ | The following packages are available in the repository for Ubuntu: | ||
+ | *'''acestream-engine''' - engine | ||
+ | *'''acestream-mozilla-plugin''' - plug-in for browser | ||
+ | *'''acestream-player''' - desktop player | ||
+ | *'''acestream-player-data''' - set of common libraries for the player and plug-in | ||
+ | *'''acestream-full''' - full package, including all of the above | ||
+ | |||
+ | For Debian only the engine (acestream-engine) is available. | ||
+ | |||
+ | === Installing ACE Stream package on Ubuntu from deb-package === | ||
+ | You can install ACE Stream on Ubuntu without using repository. To do this you need to download the installation package by one of links below and install it using a package manager (for example, by double click on downloaded package). | ||
+ | |||
+ | Package for 32-bit versions of Ubuntu: | ||
+ | <tt>http://dl.torrentstream.org/products/acestream-full/ubuntu/i368/latest</tt> | ||
+ | |||
+ | Package for 64-bit versions of Ubuntu: | ||
+ | <tt>http://dl.torrentstream.org/products/acestream-full/ubuntu/amd64/latest</tt> | ||
+ | |||
+ | Supported versions of Ubuntu: 11.10, 12.04, 12.10 | ||
+ | |||
+ | This intallation package is an analog of <tt>acestream-full</tt> package from repository. It includes the engine, player and plug-in for browsers. | ||
+ | |||
+ | ==Launching broadcast== | ||
+ | |||
+ | ===Main terms=== | ||
+ | *'''Source''' - program that accepts HTTP-stream of broadcast and provides broadcast viewing with a help of ACE Stream software. | ||
+ | *'''Support node''' - program, allowing to scale broadcast, using additional server equipment and Internet-channels. | ||
+ | *'''Client''' - ACE Stream software, which is used to play broadcast. | ||
+ | |||
+ | ===Common work scheme === | ||
+ | Broadcast organizing starts from launching the source (command <tt>acestreamengine-stream</tt>). | ||
+ | Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с орининалом трансляции и после запуска создает файл с расширением acelive. Данный файл является уникальным идентификатором трансляции и используется клиентами для подключения и просмотра. | ||
+ | |||
+ | ===Синтаксис команды acestreamengine-stream=== | ||
+ | Команда <tt>acestreamengine-stream</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> - размер куска в байтах (если не задан, выставляется автоматически в зависимости от битрейта) | ||
+ | *<tt>--duration DURATION</tt> - размер кеша трансляции в формат ЧЧ:ММ:СС (по умолчанию один час: 01:00:00) | ||
+ | *<tt>--host HOST</tt> - вручную задать адрес локального трекера | ||
+ | *<tt>--port PORT</tt> - порт, на котором работает движок | ||
+ | *<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>--trackers TRACKERS</tt> - старый формат добавления трекеров (список announce url через запятую) | ||
+ | *<tt>--provider-key PROVIDER_KEY</tt> - ключ провайдера (только для коммерческих трансляций) | ||
+ | *<tt>--maxclients MAXCLIENTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с источника | ||
+ | *<tt>--show-pieces</tt> - выводить в лог номера кусков по мере их создания | ||
+ | *<tt>--show-peers</tt> - периодически выводить в лог список подключенных пиров | ||
+ | *<tt>--debug DEBUG</tt> - установить уровень отладки | ||
+ | |||
+ | ''дополнительно'' | ||
+ | *<tt>-h, --help</tt> - показать описание команд | ||
+ | |||
+ | ===Синтаксис команды acestreamengine-node=== | ||
+ | Команда <tt>acestreamengine-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-incoming-connects MAX_INCOMING_CONNECTS</tt> - маскимальное кол-во входящих соединений (от других пиров) (по умолчанию 1000) | ||
+ | *<tt>--max-outgoing-connects MAX_OUTGOING_CONNECTS</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>--show-pieces</tt> - выводить в лог номера кусков по мере их загрузки | ||
+ | *<tt>--show-peers</tt> - периодически выводить в лог список подключенных пиров | ||
+ | *<tt>--stats-report-interval STATS_REPORT_INTERVAL</tt> - задать интервал в секундах для вывода в лог информации о скорости загрузки/отдачи. По умолчанию 0 (не выводить). | ||
+ | *<tt>--debug DEBUG</tt> - установить уровень отладки | ||
+ | |||
+ | ''дополнительно'' | ||
+ | *<tt>-h, --help</tt> - показать описание команд | ||
+ | |||
+ | ===Встроенный трекер=== | ||
+ | Встроенный трекер - это трекер встроенный в источник трансляции. Если он не отключен опцией <tt>--skip-internal-tracker</tt>, то его адрес будет автоматически добавлен в acelive-файл. | ||
+ | |||
+ | При организации трансляций с большим количеством пользователей мы рекомендуем отключать встроенный трекер и заменять его внешним трекером с хорошей производительностью (например, [http://xbtt.sourceforge.net/tracker/ XBT Tracker]) | ||
+ | |||
+ | ===Авторизованные узлы=== | ||
+ | Для того, чтобы клиент подключился к трансляции и начал просмотр, ему необходимо либо установить соединение минимум с двумя другими узлами, либо установить соединение с авторизованным узлом. Авторизованный узел - это узел, который был отмечен создателем трансляции как такой, которому можно "доверять". Как правило, это источник трансляции и/или узлы поддержки. | ||
+ | |||
+ | Последние версии ПО ACE Stream поддерживают использование списка авторизованных узлов в acelive-файле. Для этого при создании трансляции задается опция <tt>--add-authorized-peers</tt>, после чего формируется список авторизованных узлов и добавляется в acelive-файл. В список авторизованных узлов попадает источник трансляции (если это не приватный источник) и все указанные узлы поддержки. Клиенты, которые получили данный acelive-файл, используют список для определения того, является ли какой-либо узел авторизованным. | ||
+ | |||
+ | Если в acelive-файл не был добавлен список авторизованных узлов, либо у клиента установлена старая версия ACE Stream, которая не распознает данный список, то авторизованным узлом считается узел, IP адрес которого совпадает с адресом первого трекера в списке трекеров. Если встроенный трекер на источнике не отключен, то он будет первым в списке и клиенты будут считать источник авторизованным узлом. В случае, если встроенный трекер отключен, для поддержки старых клиентов мы рекомендуем ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию). | ||
+ | |||
+ | ===Примеры=== | ||
+ | Для примеров предроложим наличие локальной сети с тремя серверами: | ||
+ | *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> - для хранения кэша и служебных файлов трансляций | ||
+ | |||
+ | ====Источник с встроенным трекером==== | ||
+ | Это наиболее простой способ запуск трансляции, не требующий запуска узлов поддержки и установки дополнительных трекеров. Данный способ подходит для трансляций с небольшим количество пользователей. | ||
+ | |||
+ | На сервере 192.168.1.1 запускаем источник: | ||
+ | <tt>acestreamengine-stream \ | ||
+ | --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 \ | ||
+ | > /tmp/test-source.log 2>&1</tt> | ||
+ | |||
+ | Последняя строка используется для записи логов в файл /tmp/test-source.log. <tt>acestreamengine-stream</tt> выводит всю отладочную информацию на консоль в STDERR. | ||
+ | |||
+ | Опция <tt>--add-authorized-peers</tt> добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1). | ||
+ | |||
+ | После запуска трансляции в папке /home/www/streams будет создан файл test.acelive, в папке <tt>/tmp/streams</tt> будут созданы такие файлы: | ||
+ | *<tt>test</tt> - кэш трансляции. Размер этого файла примерно равен длительность_потока_в_секундах (опция <tt>--duration</tt>, по умолчанию 1 час) * битрейт байт | ||
+ | *<tt>test.restart</tt> - здесь хранится информация для корректного перезапуска трансляции | ||
+ | *<tt>test.sauth</tt> - ключ для цифровой подписи трансляции | ||
+ | |||
+ | Для просмотра трансляции клиенты могут скачать файл трансляции по ссылке <tt><nowiki>http://192.168.1.1/streams/test.acelive</nowiki></tt> и запустить его в плеере ACE Stream, либо использовать другие способы ([[Способы просмотра трансляции]]). | ||
+ | |||
+ | ====Источник с внешним трекером==== | ||
+ | Если трансляция предполагает большое количество пользователей, то желательно использовать внешний трекер и отключить встроенный (для снижения нагрузки на источник). | ||
+ | |||
+ | В качестве внешнего трекера мы советуем использовать [http://xbtt.sourceforge.net/tracker/ XBT Tracker] | ||
+ | |||
+ | В данном примере предполагаем, что XBT Tracker установлен и запущен на сервере 192.168.1.1. | ||
+ | Запуск трансляции теперь будет выглядеть таким образом: | ||
+ | <tt>acestreamengine-stream \ | ||
+ | --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" \ | ||
+ | > /tmp/test-source.log 2>&1</tt> | ||
+ | |||
+ | Опция <tt>--skip-internal-tracker</tt> отключает встроенный трекер, опция <tt>--tracker</tt> подключает внешний трекер. | ||
+ | |||
+ | ====Источник с двумя узлами поддержки==== | ||
+ | В случае, если на источнике не хватает пропускной способности исходящего канала для нормальной работы трансляции, можно использовать узлы поддержки. Чаще всего узел поддержки представляет собой узел, который принимает данные от источника и отдает клиентам (хотя узел поддержки также может принимать данные от других узлов поддержки и даже от клиентов, в зависимости от его настроек). Узел поддержки имеет смысл ставить на отдельном сервере с хорошей шириной исходящего канала. | ||
+ | |||
+ | Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции <tt>--support-node</tt>: | ||
+ | <tt>acestreamengine-stream \ | ||
+ | --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" \ | ||
+ | > /tmp/test-source.log 2>&1</tt> | ||
+ | |||
+ | Запускаем узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 (команды для запуска одинаковые): | ||
+ | <tt>acestreamengine-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 \ | ||
+ | > /tmp/test-node.log 2>&1</tt> | ||
+ | |||
+ | Опция <tt>--source-node</tt> задает адрес источника. | ||
+ | |||
+ | Опция <tt>--allow-source-download</tt> разрешает узлу поддержки скачивать данные с источника (скачивание с других узлов поддержки и клиентов в данном случае запрещено). | ||
+ | |||
+ | Если необходимо разрешить узлам поддержки скачивать данные с других узлов поддержки, то следует задать список других узлов опцией <tt>--support-node</tt> и разрешить скачивание опцией <tt>--allow-support-download</tt>. | ||
+ | |||
+ | На сервере 192.168.1.2 это будет выглядеть так: | ||
+ | <tt>acestreamengine-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 \ | ||
+ | > /tmp/test-node.log 2>&1</tt> | ||
+ | |||
+ | На сервере 192.168.1.3: | ||
+ | <tt>acestreamengine-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 \ | ||
+ | > /tmp/test-node.log 2>&1</tt> | ||
+ | |||
+ | ====Приватный источник с двумя узлами поддержки==== | ||
+ | Иногда может возникнуть необходимость запретить клиентам напрямую обращаться к источнику трансляции. Например, источник может быть физически расположен на сервере в защищенной зоне без доступа из внешнего мира. В этом случае трансляцию можно организовать по следующей схеме: | ||
+ | *источник делается приватным (получать от него данные смогут только узлы поддержки, указанные явным образом) | ||
+ | *узлы поддержки получают данные от источника и отдают клиентам | ||
+ | *клиенты получают данные от узлов поддержки | ||
+ | |||
+ | Для того, чтобы сделать источник приватным, следует указать опцию <tt>--private-source</tt>: | ||
+ | <tt>acestreamengine-stream \ | ||
+ | --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 \ | ||
+ | > /tmp/test-source.log 2>&1</tt> | ||
+ | |||
+ | Следует обратить внимание на то, что в данной конфигурации адрес трекера изменен на <tt>udp://192.168.1.2:2710/announce</tt>. Это сделано для поддержки старых версий клиентов, которые не обрабатывают список авторизованных пиров (подробнее здесь [[#Авторизованные узлы|Авторизованные узлы]]). | ||
+ | |||
+ | Узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 запускаем как обычно: | ||
+ | <tt>acestreamengine-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 \ | ||
+ | > /tmp/test-node.log 2>&1</tt> |
Revision as of 18:03, 20 December 2012
Contents
Installation
Installing ACE Stream on Debian/Ubuntu from repository
Step 1
Add link on appropriate repository into /etc/apt/sources.list file.
Repository should be selected according to operating system.
Debian 6+:
deb http://repo.acestream.org/debian/ squeeze main or deb http://repo.acestream.org/debian/ sid main
Note: packages in sid repository are assembled with dependencies that correspond to official sid-repositories of Debian. If you don't know, which repository to choose, use squeeze.
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
Step 2
Installing public key. To do this you have to run the following command:
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 -
Step 3
Installing the right package. For example, for engine installation you have to install acestream-engine package.
Debian
apt-get update apt-get install acestream-engine
Ubuntu
sudo apt-get update sudo apt-get install acestream-engine
The following packages are available in the repository for Ubuntu:
- acestream-engine - engine
- acestream-mozilla-plugin - plug-in for browser
- acestream-player - desktop player
- acestream-player-data - set of common libraries for the player and plug-in
- acestream-full - full package, including all of the above
For Debian only the engine (acestream-engine) is available.
Installing ACE Stream package on Ubuntu from deb-package
You can install ACE Stream on Ubuntu without using repository. To do this you need to download the installation package by one of links below and install it using a package manager (for example, by double click on downloaded package).
Package for 32-bit versions of Ubuntu:
http://dl.torrentstream.org/products/acestream-full/ubuntu/i368/latest
Package for 64-bit versions of Ubuntu:
http://dl.torrentstream.org/products/acestream-full/ubuntu/amd64/latest
Supported versions of Ubuntu: 11.10, 12.04, 12.10
This intallation package is an analog of acestream-full package from repository. It includes the engine, player and plug-in for browsers.
Launching broadcast
Main terms
- Source - program that accepts HTTP-stream of broadcast and provides broadcast viewing with a help of ACE Stream software.
- Support node - program, allowing to scale broadcast, using additional server equipment and Internet-channels.
- Client - ACE Stream software, which is used to play broadcast.
Common work scheme
Broadcast organizing starts from launching the source (command acestreamengine-stream). Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с орининалом трансляции и после запуска создает файл с расширением acelive. Данный файл является уникальным идентификатором трансляции и используется клиентами для подключения и просмотра.
Синтаксис команды acestreamengine-stream
Команда acestreamengine-stream запускает источник трансляции.
обязательные параметры
- --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 - порт, на котором работает движок
- --skip-internal-tracker - отключить локальный трекер
- --add-authorized-peers - добавить список авторизованных пиров в acelive файл
- --private-source - сделать источник приватным
- --support-node SUPPORT_NODE - добавить узел поддержки (в формате ip:port). Этот параметр может встречаться несколько раз, если нужно добавить несколько узлов поддержки.
- --tracker TRACKER - добавить трекер (announce url). Этот параметр может встречаться несколько раз.
- --trackers TRACKERS - старый формат добавления трекеров (список announce url через запятую)
- --provider-key PROVIDER_KEY - ключ провайдера (только для коммерческих трансляций)
- --maxclients MAXCLIENTS - максимальное количество пиров, на которые одновременно отдаются данные с источника
- --show-pieces - выводить в лог номера кусков по мере их создания
- --show-peers - периодически выводить в лог список подключенных пиров
- --debug DEBUG - установить уровень отладки
дополнительно
- -h, --help - показать описание команд
Синтаксис команды acestreamengine-node
Команда acestreamengine-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-incoming-connects MAX_INCOMING_CONNECTS - маскимальное кол-во входящих соединений (от других пиров) (по умолчанию 1000)
- --max-outgoing-connects MAX_OUTGOING_CONNECTS - маскимальное кол-во исходящих соединений (к другим пирам) (по умолчанию 50)
- --max-upload-slots MAX_UPLOAD_SLOTS - максимальное количество пиров, на которые одновременно отдаются данные с узла поддержки (по умолчанию 7)
- --max-download-speed MAX_DOWNLOAD_SPEED - максимальная скорость загрузки (байт/с). По умолчанию 0 (без ограничений).
- --max-upload-speed MAX_UPLOAD_SPEED - максимальная скорость отдачи (байс/с). По умолчанию 0 (без ограничений).
- --show-pieces - выводить в лог номера кусков по мере их загрузки
- --show-peers - периодически выводить в лог список подключенных пиров
- --stats-report-interval STATS_REPORT_INTERVAL - задать интервал в секундах для вывода в лог информации о скорости загрузки/отдачи. По умолчанию 0 (не выводить).
- --debug DEBUG - установить уровень отладки
дополнительно
- -h, --help - показать описание команд
Встроенный трекер
Встроенный трекер - это трекер встроенный в источник трансляции. Если он не отключен опцией --skip-internal-tracker, то его адрес будет автоматически добавлен в acelive-файл.
При организации трансляций с большим количеством пользователей мы рекомендуем отключать встроенный трекер и заменять его внешним трекером с хорошей производительностью (например, XBT Tracker)
Авторизованные узлы
Для того, чтобы клиент подключился к трансляции и начал просмотр, ему необходимо либо установить соединение минимум с двумя другими узлами, либо установить соединение с авторизованным узлом. Авторизованный узел - это узел, который был отмечен создателем трансляции как такой, которому можно "доверять". Как правило, это источник трансляции и/или узлы поддержки.
Последние версии ПО ACE Stream поддерживают использование списка авторизованных узлов в acelive-файле. Для этого при создании трансляции задается опция --add-authorized-peers, после чего формируется список авторизованных узлов и добавляется в acelive-файл. В список авторизованных узлов попадает источник трансляции (если это не приватный источник) и все указанные узлы поддержки. Клиенты, которые получили данный acelive-файл, используют список для определения того, является ли какой-либо узел авторизованным.
Если в acelive-файл не был добавлен список авторизованных узлов, либо у клиента установлена старая версия ACE Stream, которая не распознает данный список, то авторизованным узлом считается узел, IP адрес которого совпадает с адресом первого трекера в списке трекеров. Если встроенный трекер на источнике не отключен, то он будет первым в списке и клиенты будут считать источник авторизованным узлом. В случае, если встроенный трекер отключен, для поддержки старых клиентов мы рекомендуем ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию).
Примеры
Для примеров предроложим наличие локальной сети с тремя серверами:
- 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 \ --name "test" \ --title "Тестовая трансляция" \ --source "http://192.168.1.100/stream" \ --bitrate 300000 \ --publish-dir "/home/www/streams" \ --cache-dir "/tmp/streams" \ --add-authorized-peers \ > /tmp/test-source.log 2>&1
Последняя строка используется для записи логов в файл /tmp/test-source.log. acestreamengine-stream выводит всю отладочную информацию на консоль в STDERR.
Опция --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 \ --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" \ > /tmp/test-source.log 2>&1
Опция --skip-internal-tracker отключает встроенный трекер, опция --tracker подключает внешний трекер.
Источник с двумя узлами поддержки
В случае, если на источнике не хватает пропускной способности исходящего канала для нормальной работы трансляции, можно использовать узлы поддержки. Чаще всего узел поддержки представляет собой узел, который принимает данные от источника и отдает клиентам (хотя узел поддержки также может принимать данные от других узлов поддержки и даже от клиентов, в зависимости от его настроек). Узел поддержки имеет смысл ставить на отдельном сервере с хорошей шириной исходящего канала.
Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции --support-node:
acestreamengine-stream \ --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" \ > /tmp/test-source.log 2>&1
Запускаем узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 (команды для запуска одинаковые):
acestreamengine-node \ --url "http://192.168.1.1/streams/test.acelive" \ --state-dir "/tmp" \ --source-node "192.168.1.1:7764" \ --allow-source-download \ > /tmp/test-node.log 2>&1
Опция --source-node задает адрес источника.
Опция --allow-source-download разрешает узлу поддержки скачивать данные с источника (скачивание с других узлов поддержки и клиентов в данном случае запрещено).
Если необходимо разрешить узлам поддержки скачивать данные с других узлов поддержки, то следует задать список других узлов опцией --support-node и разрешить скачивание опцией --allow-support-download.
На сервере 192.168.1.2 это будет выглядеть так:
acestreamengine-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 \ > /tmp/test-node.log 2>&1
На сервере 192.168.1.3:
acestreamengine-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 \ > /tmp/test-node.log 2>&1
Приватный источник с двумя узлами поддержки
Иногда может возникнуть необходимость запретить клиентам напрямую обращаться к источнику трансляции. Например, источник может быть физически расположен на сервере в защищенной зоне без доступа из внешнего мира. В этом случае трансляцию можно организовать по следующей схеме:
- источник делается приватным (получать от него данные смогут только узлы поддержки, указанные явным образом)
- узлы поддержки получают данные от источника и отдают клиентам
- клиенты получают данные от узлов поддержки
Для того, чтобы сделать источник приватным, следует указать опцию --private-source:
acestreamengine-stream \ --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 \ > /tmp/test-source.log 2>&1
Следует обратить внимание на то, что в данной конфигурации адрес трекера изменен на udp://192.168.1.2:2710/announce. Это сделано для поддержки старых версий клиентов, которые не обрабатывают список авторизованных пиров (подробнее здесь Авторизованные узлы).
Узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 запускаем как обычно:
acestreamengine-node \ --url "http://192.168.1.1/streams/test.acelive" \ --state-dir "/tmp" \ --source-node "192.168.1.1:7764" \ --allow-source-download \ > /tmp/test-node.log 2>&1