Difference between revisions of "Streaming/en"

From Ace Stream Wiki
Jump to: navigation, search
(Main terms)
(Синтаксис команды acestreamengine-stream)
Line 81: Line 81:
 
The source accepts HTTP-stream to input (at this moment HTTP-streams with MPEG-TS encapsulation are supported) with original broadcast and creates a file with acelive extension after the launch. This file is a unique identifier of broadcast and it is used for connection and playback by clients.
 
The source accepts HTTP-stream to input (at this moment HTTP-streams with MPEG-TS encapsulation are supported) with original broadcast and creates a file with acelive extension after the launch. This file is a unique identifier of broadcast and it is used for connection and playback by clients.
  
===Синтаксис команды acestreamengine-stream===
+
===Syntax of acestreamengine-stream command===
Команда <tt>acestreamengine-stream</tt> запускает источник трансляции.
+
<tt>acestreamengine-stream</tt> command launches broadcast source.
  
''обязательные параметры''
+
''required parameters''
*<tt>--name NAME</tt> - название трансляции (это название используется при создании файла acelive и других служебных файлов)
+
*<tt>--name NAME</tt> - broadcast name (this name is used when creating acelive and other service files)
*<tt>--source SOURCE</tt> - источник (ссылка на http-поток)
+
*<tt>--source SOURCE</tt> - source (link to http-stream)
*<tt>--bitrate BITRATE</tt> - средний битрейт потока в байтах в секунду
+
*<tt>--bitrate BITRATE</tt> - average bitrate of stream in bites per second
  
''необязательные параметры''
+
''optional parameters''
*<tt>--title TITLE</tt> - "читабельное" название транляции (это название выводится у клиентов). Если не задано, берется из --name
+
*<tt>--title TITLE</tt> - "readable" broadcast name (this name is shown to clients). If it's not specified, it's taken from --name
*<tt>--destdir DESTDIR</tt> - устаревшний параметр, лучше использовать --cache-dir и --publish-dir
+
*<tt>--destdir DESTDIR</tt> - old parameter, it's better to use --cache-dir and --publish-dir
*<tt>--cache-dir CACHE_DIR</tt> - папка для создания служебных файлов (кеш трансляции и другие)
+
*<tt>--cache-dir CACHE_DIR</tt> - directory for creating service files (broadcast cache and others)
*<tt>--publish-dir PUBLISH_DIR</tt> - папка, в которой будет создан acelive-файл
+
*<tt>--publish-dir PUBLISH_DIR</tt> - directory, in which acelive-file will be created
*<tt>--piecesize PIECESIZE</tt> - размер куска в байтах (если не задан, выставляется автоматически в зависимости от битрейта)
+
*<tt>--piecesize PIECESIZE</tt> - piece size in bites (if it's not specified, it's set automatically depending on bitrate)
*<tt>--duration DURATION</tt> - размер кеша трансляции в формат ЧЧ:ММ:СС (по умолчанию один час: 01:00:00)
+
*<tt>--duration DURATION</tt> - size of broadcast cache in format HH:MM:SS (by default, one hour: 01:00:00)
*<tt>--host HOST</tt> - вручную задать адрес локального трекера
+
*<tt>--host HOST</tt> - set address of local tracker manually
*<tt>--port PORT</tt> - порт, на котором работает движок
+
*<tt>--port PORT</tt> - port, where the engine works
*<tt>--skip-internal-tracker</tt> - отключить локальный трекер
+
*<tt>--skip-internal-tracker</tt> - disable local tracker
*<tt>--add-authorized-peers</tt> - добавить список авторизованных пиров в acelive файл
+
*<tt>--add-authorized-peers</tt> - add list of authorized peers to acelive file
*<tt>--private-source</tt> - сделать источник приватным
+
*<tt>--private-source</tt> - make the source private
*<tt>--support-node SUPPORT_NODE</tt> - добавить узел поддержки (в формате ip:port). Этот параметр может встречаться несколько раз, если нужно добавить несколько узлов поддержки.
+
*<tt>--support-node SUPPORT_NODE</tt> - add support node (in format ip:port). This parameter may appear multiple times if several support nodes have to be added.
*<tt>--tracker TRACKER</tt> - добавить трекер (announce url). Этот параметр может встречаться несколько раз.
+
*<tt>--tracker TRACKER</tt> - add tracker(announce url). This parameter may appear multiple times.
*<tt>--trackers TRACKERS</tt> - старый формат добавления трекеров (список announce url через запятую)
+
*<tt>--trackers TRACKERS</tt> - old format for adding trackers (announce url list separated by commas)
*<tt>--provider-key PROVIDER_KEY</tt> - ключ провайдера (только для коммерческих трансляций)
+
*<tt>--provider-key PROVIDER_KEY</tt> - provider's key (only for commercial broadcasts)
*<tt>--maxclients MAXCLIENTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с источника
+
*<tt>--maxclients MAXCLIENTS</tt> - maximum number of peers, on which data from the source are given simultaneously
*<tt>--show-pieces</tt> - выводить в лог номера кусков по мере их создания
+
*<tt>--show-pieces</tt> - show in log numbers of pieces as they are created
*<tt>--show-peers</tt> - периодически выводить в лог список подключенных пиров
+
*<tt>--show-peers</tt> - periodically show in log list of connected peers
*<tt>--debug DEBUG</tt> - установить уровень отладки
+
*<tt>--debug DEBUG</tt> - set debug level
  
''дополнительно''
+
''additional''
*<tt>-h, --help</tt> - показать описание команд
+
*<tt>-h, --help</tt> - show commands' description
  
 
===Синтаксис команды acestreamengine-node===
 
===Синтаксис команды acestreamengine-node===

Revision as of 10:56, 21 December 2012

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 using 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 organization starts from launching the source (command acestreamengine-stream). The source accepts HTTP-stream to input (at this moment HTTP-streams with MPEG-TS encapsulation are supported) with original broadcast and creates a file with acelive extension after the launch. This file is a unique identifier of broadcast and it is used for connection and playback by clients.

Syntax of acestreamengine-stream command

acestreamengine-stream command launches broadcast source.

required parameters

  • --name NAME - broadcast name (this name is used when creating acelive and other service files)
  • --source SOURCE - source (link to http-stream)
  • --bitrate BITRATE - average bitrate of stream in bites per second

optional parameters

  • --title TITLE - "readable" broadcast name (this name is shown to clients). If it's not specified, it's taken from --name
  • --destdir DESTDIR - old parameter, it's better to use --cache-dir and --publish-dir
  • --cache-dir CACHE_DIR - directory for creating service files (broadcast cache and others)
  • --publish-dir PUBLISH_DIR - directory, in which acelive-file will be created
  • --piecesize PIECESIZE - piece size in bites (if it's not specified, it's set automatically depending on bitrate)
  • --duration DURATION - size of broadcast cache in format HH:MM:SS (by default, one hour: 01:00:00)
  • --host HOST - set address of local tracker manually
  • --port PORT - port, where the engine works
  • --skip-internal-tracker - disable local tracker
  • --add-authorized-peers - add list of authorized peers to acelive file
  • --private-source - make the source private
  • --support-node SUPPORT_NODE - add support node (in format ip:port). This parameter may appear multiple times if several support nodes have to be added.
  • --tracker TRACKER - add tracker(announce url). This parameter may appear multiple times.
  • --trackers TRACKERS - old format for adding trackers (announce url list separated by commas)
  • --provider-key PROVIDER_KEY - provider's key (only for commercial broadcasts)
  • --maxclients MAXCLIENTS - maximum number of peers, on which data from the source are given simultaneously
  • --show-pieces - show in log numbers of pieces as they are created
  • --show-peers - periodically show in log list of connected peers
  • --debug DEBUG - set debug level

additional

  • -h, --help - show commands' description

Синтаксис команды 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