Changes

Jump to: navigation, search

Streaming

15,600 bytes added, 19:31, 18 December 2012
Запуск трансляции
Данный установочный пакет является аналогом пакета <tt>acestream-full</tt> из репозитория и включает в себя движок, плеер и плагин для браузеров.
== Запуск трансляции ==
Для запуска трансляции используется команда tsengine===Основные термины===*'''Источник''' -streamпрограмма, которая принимает такие параметры:на вход HTTP-поток трансляции и обеспечивает просмотр трансляции с помощью ПО ACE Stream*'''Узел поддержки''' - программа, позволяющая масштабировать трансляцию за счет использования дополнительного серверного оборудования и интернет-каналов*'''Клиент''' - ПО ACE Stream, которое используется для просмотра трансляции
===Общая схема работы===
Организация трансляции начинается с запуска источника (команда <tt>acestreamengine-stream</tt>).
Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с орининалом трансляции и после запуска создает файл с расширением acelive. Данный файл является уникальным идентификатором трансляции и используется клиентами для подключения и просмотра.
===Синтаксис команды acestreamengine-stream===Команда <tt>'''-acestreamengine-name'''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, --source'''help</tt>- показать описание команд
Источник ===Синтаксис команды acestreamengine- URL потока, который будет транслироваться. В данный момент поддерживаются HTTP потоки с инкапсуляцией MPEGnode===Команда <tt>acestreamengine-TSnode</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>'''--destdir'''debug DEBUG</tt>- установить уровень отладки
Директория''дополнительно''*<tt>-h, в которую будет сохранен .tslive файл для данной трансляции и некоторые служебные файлы.--help</tt> - показать описание команд
===Встроенный трекер===
Встроенный трекер - это трекер встроенный в источник трансляции. Если он не отключен опцией <tt>--skip-internal-tracker</tt>, то его адрес будет автоматически добавлен в acelive-файл.
<tt>'''--bitrate'''<При организации трансляций с большим количеством пользователей мы рекомендуем отключать встроенный трекер и заменять его внешним трекером с хорошей производительностью (например, [http:/tt>/xbtt.sourceforge.net/tracker/ XBT Tracker])
Битрейт потока в килобайтах в секунду===Авторизованные узлы===Для того, чтобы клиент подключился к трансляции и начал просмотр, ему необходимо либо установить соединение минимум с двумя другими узлами, либо установить соединение с авторизованным узлом. Для корректной работы потока следует указывать средний битрейт потокаАвторизованный узел - это узел, который используется в качестве источникабыл отмечен создателем трансляции как такой, которому можно "доверять". Как правило, это источник трансляции и/или узлы поддержки.
Последние версии ПО ACE Stream поддерживают использование списка авторизованных узлов в acelive-файле. Для этого при создании трансляции задается опция <tt>--add-authorized-peers</tt>, после чего формируется список авторизованных узлов и добавляется в acelive-файл. В список авторизованных узлов попадает источник трансляции (если это не приватный источник) и все указанные узлы поддержки. Клиенты, которые получили данный acelive-файл, используют список для определения того, является ли какой-либо узел авторизованным.
<tt>'''Если в acelive--piecesize'''</tt>файл не был добавлен список авторизованных узлов, либо у клиента установлена старая версия ACE Stream, которая не распознает данный список, то авторизованным узлом считается узел, IP адрес которого совпадает с адресом первого трекера в списке трекеров. Если встроенный трекер на источнике не отключен, то он будет первым в списке и клиенты будут считать источник авторизованным узлом. В случае, если встроенный трекер отключен, для поддержки старых клиентов мы рекомендуем ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию).
Размер в байтах куска ===Примеры===Для примеров предроложим наличие локальной сети с тремя серверами:*192.168.1.1 - сервер для источника*192.168.1.2 - сервер для работы bittorrentузла поддержки*192.168.1.3 -протоколасервер для узла поддержки*192.168.1. По умолчанию данный параметр принимает значение auto100 - сервер, при котором размер куска определяется автоматическикоторый отдает оригинальный поток трансляции (HTTP MPEG-TS) по адресу <nowiki>http://192.168.1.100/stream</nowiki> (средний битрейт потока - 300 000 байт/с)
На сервере 192.168.1.1 предполагается наличие веб-сервера с корневой папкой <tt>/home/www</tt>, а также двух папок:
*<tt>/home/www/streams</tt> - для хранения acelive-файлов, которые будут доступны для скачивания по ссылке вида <tt><nowiki>http://192.168.1.1/streams/test.acelive</nowiki></tt>
*<tt>/tmp/streams</tt> - для хранения кэша и служебных файлов трансляций
<tt>'''--duration'''</tt>====Источник с встроенным трекером====Это наиболее простой способ запуск трансляции, не требующий запуска узлов поддержки и установки дополнительных трекеров. Данный способ подходит для трансляций с небольшим количество пользователей.
Длительность потока в формате ЧЧ:ММ:ССНа сервере 192.168. Этот параметр задает объем кэша для потока1. Значение по умолчанию 1 запускаем источник: <tt>acestreamengine- 01stream \ --name "test" \ --title "Тестовая трансляция" \ --source "<nowiki>http:00:00 (т//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>'''--host'''add-authorized-peers</tt>добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1).
IPПосле запуска трансляции в папке /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, либо использовать другие способы ([[Способы просмотра трансляции]]).
<tt>'''--port'''</tt>====Источник с внешним трекером====Если трансляция предполагает большое количество пользователей, то желательно использовать внешний трекер и отключить встроенный (для снижения нагрузки на источник).
Порт, на который будут приниматься входящие соединенияВ качестве внешнего трекера мы советуем использовать [http://xbtt. По умолчанию 7764sourceforge.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>'''--trackers'''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 \ -provider-key'''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>'''--maxclients'''support-node</tt> и разрешить скачивание опцией <tt>--allow-support-download</tt>.
Максимальное количество клиентов, которые будут получать данные непосредственно от источника трансляцииНа сервере 192. По умолчанию 7168.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>tsengine-stream --name test --source http://84.22.159.204:8006 --bitrate 350000 --host mysite.com --destdir /tmp/streams</tt> После запуска трансляции в директории /tmp/streams будут созданы такие файлы: <tt>'''test'''</tt> - кэш трансляции. Размер этого файла примерно равен длительность_потока_в_секундах * битрейт байт <tt>'''test.tslive'''</tt> - ====Приватный источник с помощью этого файла пользователи могут подключаться к трансляции <tt>'''test.restart'''</tt> - здесь хранится информация для корректного перезапуска трансляции <tt>'''test.sauth'''</tt> - ключ для цифровой подписи трансляции  Также после запуска можно зайти на страницу трекера, встроенного в TS Engine: <tt>http://mysite.com:7764/</tt>  На данной странице отображается некоторая информация по трансляции, а также здесь можно скачать файл трансляции .tslive по такой ссылке: <tt>http://mysite.com:7764/file?nameдвумя узлами поддержки====test</tt> 
== Просмотр трансляции пользователями. ==

Navigation menu