Difference between revisions of "Streaming"
(→Запуск трансляции) |
|||
(44 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | ==Запуск трансляции== |
− | === | + | ===Основные термины=== |
− | + | *'''Источник''' - программа, которая принимает на вход 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 | + | '''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 (с использованием буфера указанного размера в байтах) | ||
===Общая схема работы=== | ===Общая схема работы=== | ||
Организация трансляции начинается с запуска источника (команда <tt>acestreamengine-stream</tt>). | Организация трансляции начинается с запуска источника (команда <tt>acestreamengine-stream</tt>). | ||
− | Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с | + | Источник принимает на вход 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> - "читабельное" название | + | *<tt>--title TITLE (*)</tt> - "читабельное" название трансляции (это название выводится у клиентов). Если не задано, берется из --name |
− | *<tt>--destdir DESTDIR</tt> - | + | *<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> - размер куска в байтах, в степени 2 (если не задан, выставляется автоматически в зависимости от битрейта) |
− | *<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>-- | + | *<tt>--maxclients MAXCLIENTS</tt> - максимальное количество пиров, на которые одновременно отдаются данные с источника. По умолчанию 7. |
− | *<tt>--provider-key | + | *<tt>--log-debug DEBUG</tt> - установить уровень отладки (по умолчанию 0 - минимальный) |
− | *<tt>-- | + | *<tt>--source-read-timeout SECONDS</tt> - таймаут на чтение данных из оригинального источника (в секундах). По умолчанию 30. |
− | *<tt>-- | + | *<tt>--source-reconnect-interval SECONDS</tt> - интервал в секундах, через который движок попробует повторно подсоединиться к оригинальному источнику при обрыве связи. По умолчанию 5. |
− | *<tt>-- | + | *<tt>--pid-file-dir PATH</tt> - папка, в которой будет создан pid-файл движка. По умолчанию /tmp. |
− | *<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 127: | Line 143: | ||
*<tt>--allow-support-download</tt> - разрешить получение данных от других узлов поддержки | *<tt>--allow-support-download</tt> - разрешить получение данных от других узлов поддержки | ||
*<tt>--allow-peers-download</tt> - разрешить получение данных от обычных пиров | *<tt>--allow-peers-download</tt> - разрешить получение данных от обычных пиров | ||
− | *<tt>--max- | + | *<tt>--max-connections MAX_CONNECTIONS</tt> - максимальное общее кол-во соединений (по умолчанию 1000) |
− | *<tt>--max- | + | *<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> - максимальная скорость отдачи ( | + | *<tt>--max-upload-speed MAX_UPLOAD_SPEED</tt> - максимальная скорость отдачи (байт/с). По умолчанию 0 (без ограничений). |
− | *<tt>-- | + | *<tt>--stats-report-interval STATS_REPORT_INTERVAL</tt> - интервал в секундах между обновлениями внутренней статистики (по умолчанию 60) |
− | *<tt>-- | + | *<tt>--stats-report-peers</tt> - обновлять данные по пирам во внутренней статистике |
− | *<tt>-- | + | *<tt>--service-remote-access</tt> - разрешить удаленный просмотр статистики |
− | *<tt>--debug DEBUG</tt> - установить уровень отладки | + | *<tt>--service-access-token</tt> - ключ доступа для удаленной статистики |
+ | *<tt>--log-debug DEBUG</tt> - установить уровень отладки | ||
''дополнительно'' | ''дополнительно'' | ||
Line 151: | Line 168: | ||
Если в acelive-файл не был добавлен список авторизованных узлов, либо у клиента установлена старая версия ACE Stream, которая не распознает данный список, то авторизованным узлом считается узел, IP адрес которого совпадает с адресом первого трекера в списке трекеров. Если встроенный трекер на источнике не отключен, то он будет первым в списке и клиенты будут считать источник авторизованным узлом. В случае, если встроенный трекер отключен, для поддержки старых клиентов мы рекомендуем ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию). | Если в acelive-файл не был добавлен список авторизованных узлов, либо у клиента установлена старая версия ACE Stream, которая не распознает данный список, то авторизованным узлом считается узел, IP адрес которого совпадает с адресом первого трекера в списке трекеров. Если встроенный трекер на источнике не отключен, то он будет первым в списке и клиенты будут считать источник авторизованным узлом. В случае, если встроенный трекер отключен, для поддержки старых клиентов мы рекомендуем ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию). | ||
+ | |||
+ | ===Timeshift=== | ||
+ | Функция "Timeshift" дает пользователям возможность осуществить перемотку трансляции на некоторое время назад, а также поставить трансляцию на паузу и вернуться к просмотру в удобное для них время. | ||
+ | |||
+ | Время, на которое может осуществляться перемотка назад, задается при создании трансляции опцией <tt>--duration</tt>. Время указывается в формате ЧЧ:ММ:СС. | ||
+ | |||
+ | Например, при указании опции <tt>--duration 00:30:00</tt> будет задан интервал 30 минут. | ||
===Примеры=== | ===Примеры=== | ||
− | Для примеров | + | Для примеров предположим наличие локальной сети с тремя серверами: |
*192.168.1.1 - сервер для источника | *192.168.1.1 - сервер для источника | ||
*192.168.1.2 - сервер для узла поддержки | *192.168.1.2 - сервер для узла поддержки | ||
Line 167: | Line 191: | ||
На сервере 192.168.1.1 запускаем источник: | На сервере 192.168.1.1 запускаем источник: | ||
− | <tt>acestreamengine-stream \ | + | <tt>acestreamengine --stream-source \ |
--name "test" \ | --name "test" \ | ||
--title "Тестовая трансляция" \ | --title "Тестовая трансляция" \ | ||
Line 175: | Line 199: | ||
--cache-dir "/tmp/streams" \ | --cache-dir "/tmp/streams" \ | ||
--add-authorized-peers \ | --add-authorized-peers \ | ||
− | + | --log-stdout</tt> | |
− | |||
− | |||
Опция <tt>--add-authorized-peers</tt> добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1). | Опция <tt>--add-authorized-peers</tt> добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1). | ||
Line 195: | Line 217: | ||
В данном примере предполагаем, что 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 205: | Line 227: | ||
--skip-internal-tracker \ | --skip-internal-tracker \ | ||
--tracker "udp://192.168.1.1:2710/announce" \ | --tracker "udp://192.168.1.1:2710/announce" \ | ||
− | + | --log-stdout</tt> | |
Опция <tt>--skip-internal-tracker</tt> отключает встроенный трекер, опция <tt>--tracker</tt> подключает внешний трекер. | Опция <tt>--skip-internal-tracker</tt> отключает встроенный трекер, опция <tt>--tracker</tt> подключает внешний трекер. | ||
Line 213: | Line 235: | ||
Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции <tt>--support-node</tt>: | Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции <tt>--support-node</tt>: | ||
− | <tt>acestreamengine-stream \ | + | <tt>acestreamengine --stream-source \ |
--name "test" \ | --name "test" \ | ||
--title "Тестовая трансляция" \ | --title "Тестовая трансляция" \ | ||
Line 226: | Line 248: | ||
--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" \ | ||
− | + | --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 \ | ||
− | + | --log-stdout</tt> | |
Опция <tt>--source-node</tt> задает адрес источника. | Опция <tt>--source-node</tt> задает адрес источника. | ||
Line 243: | Line 265: | ||
На сервере 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 250: | Line 272: | ||
--support-node "192.168.1.3:8621" \ | --support-node "192.168.1.3:8621" \ | ||
--allow-support-download \ | --allow-support-download \ | ||
− | + | --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 260: | Line 282: | ||
--support-node "192.168.1.2:8621" \ | --support-node "192.168.1.2:8621" \ | ||
--allow-support-download \ | --allow-support-download \ | ||
− | + | --log-stdout</tt> | |
====Приватный источник с двумя узлами поддержки==== | ====Приватный источник с двумя узлами поддержки==== | ||
+ | Иногда может возникнуть необходимость запретить клиентам напрямую обращаться к источнику трансляции. Например, источник может быть физически расположен на сервере в защищенной зоне без доступа из внешнего мира. В этом случае трансляцию можно организовать по следующей схеме: | ||
+ | *источник делается приватным (получать от него данные смогут только узлы поддержки, указанные явным образом) | ||
+ | *узлы поддержки получают данные от источника и отдают клиентам | ||
+ | *клиенты получают данные от узлов поддержки | ||
− | + | Для того, чтобы сделать источник приватным, следует указать опцию <tt>--private-source</tt>: | |
+ | <tt>acestreamengine --stream-source \ | ||
+ | --name "test" \ | ||
+ | --title "Тестовая трансляция" \ | ||
+ | --source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | ||
+ | --bitrate 300000 \ | ||
+ | --port 7764 \ | ||
+ | --publish-dir "/home/www/streams" \ | ||
+ | --cache-dir "/tmp/streams" \ | ||
+ | --add-authorized-peers \ | ||
+ | --skip-internal-tracker \ | ||
+ | --tracker "udp://192.168.1.2:2710/announce" \ | ||
+ | --support-node "192.168.1.2:8621" \ | ||
+ | --support-node "192.168.1.3:8621" \ | ||
+ | --private-source \ | ||
+ | --log-stdout</tt> | ||
− | + | Следует обратить внимание на то, что в данной конфигурации адрес трекера изменен на <tt>udp://192.168.1.2:2710/announce</tt>. Это сделано для поддержки старых версий клиентов, которые не обрабатывают список авторизованных пиров (подробнее здесь [[#Авторизованные узлы|Авторизованные узлы]]). | |
− | + | Узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 запускаем как обычно: | |
− | + | <tt>acestreamengine --stream-node \ | |
− | + | --url "<nowiki>http://192.168.1.1/streams/test.acelive</nowiki>" \ | |
− | + | --state-dir "/tmp" \ | |
− | + | --source-node "192.168.1.1:7764" \ | |
− | <tt> | + | --allow-source-download \ |
− | + | --log-stdout</tt> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | < | ||
− | |||
− | |||
− | |||
− | |||
− | --- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 19:32, 9 June 2020
Contents
- 1 Запуск трансляции
Запуск трансляции
Основные термины
- Источник - программа, которая принимает на вход 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:
- 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:
ВНИМАНИЕ! В ближайшее время поддержка старых версий будет прекращена.
ВАЖНО! Все трансляции, созданные с помощью новой версии Ace Stream (2.1 и выше) не поддерживаются клиентским ПО старых версий (2.0.х и ниже). При попытке просмотреть новую трансляцию с помощью старого движка будет выдаваться ошибка "Cannot load transport file"
Изменения в параметрах запуска
В новой версии изменились некоторые параметры запуска источников и узлов поддержки из командной строки, поэтому запуск со старой командной строкой работать не будет.
Основные изменения:
- используется один исполняемый файл acestreamengine; различные режимы запуска (источник, узел поддержки) задаются опциями:
- вместо acestreamengine-stream следует запускать acestreamengine --stream-source
- вместо acestreamengine-node следует запускать acestreamengine --stream-node
- вместо acestreamengine-client-console следует запускать acestreamengine --client-console
- вместо acestreamengine-client-gtk следует запускать acestreamengine --client-gtk
- изменена система логирования. В старых версия движок всю отладочную информацию выводил в STDERR и для записи логов в файл требовалось перенаправлять вывод. В новой версии можно в опциях задать, куда писать логи - в STDOUT, в STDERR, в файл либо в syslog. Для файлов поддерживается ротация логов по размеру. Описание всех опций смотрите в разделе Команда acestreamengine
Команда acestreamengine
Начиная с версии 2.1 Ace Stream Engine для Linux представляет собой один исполняемый файл acestreamengine, который работает в различных режимах в зависимости от заданных параметров.
Режим работы задается одним из следующих параметров:
- --client-console - запустить движок в режиме клиента из консоли (без графического интерфейса)
- --client-wx - запустить движок в режиме клиента с графическим интерфейсом WX
- --client-gtk - запустить движок в режиме клиента с графическим интерфейсом GTK
- --stream-source - запустить источник трансляции
- --stream-node - запустить узел поддержки
- --create-transport - создать транспортный файл из существующего контента (VOD)
- --create-transport-multi - создать мультипотоковый транспортный файл
- --version - показать версию движка
Каждый режим работы имеет свои обязательные и необязательные параметры, описанные в соответствующих разделах.
Также всех режимов работы есть общие параметры, которые управляют выводом отладочной информации.
- --log-stdout - выводить информацию в STDOUT
- --log-stderr - выводить информацию в STDERR
- --log-file PATH - выводить информацию в указанный файл
- --log-max-size SIZE - максимальный размер файла (в байтах)
- --log-backup-count COUNT - сколько резервных логов хранить (резервный лог файл создается при достижении лимита, указанного паметром --log-max-size)
- --log-file-buffer SIZE - включить буферизацию вывода в файл (с использованием буфера указанного размера в байтах)
- --log-syslog HOST - выводить информацию в syslog-сервер по указанному адресу
- --log-syslog-port PORT - порт syslog-сервера
- --log-syslog-facility FACILITY - используемый facility
- --log-syslog-buffer SIZE - включить буферизацию вывода в syslog (с использованием буфера указанного размера в байтах)
Общая схема работы
Организация трансляции начинается с запуска источника (команда acestreamengine-stream). Источник принимает на вход HTTP-поток (в данный момент поддерживаются HTTP-потоки с инкапсуляцией MPEG-TS) с оригиналом трансляции и после запуска создает файл с расширением acelive. Данный файл является уникальным идентификатором трансляции и используется клиентами для подключения и просмотра.
Синтаксис команды acestreamengine --stream-source
Команда acestreamengine --stream-source запускает источник трансляции.
обязательные параметры
- --name NAME (*) - название трансляции (это название используется при создании файла acelive и других служебных файлов)
- --source SOURCE - источник (ссылка на http-поток)
- --bitrate BITRATE (*) - средний битрейт потока в байтах в секунду
необязательные параметры
- --title TITLE (*) - "читабельное" название трансляции (это название выводится у клиентов). Если не задано, берется из --name
- --destdir DESTDIR - устаревший параметр, лучше использовать --cache-dir и --publish-dir
- --cache-dir CACHE_DIR - папка для создания служебных файлов (кеш трансляции и другие)
- --publish-dir PUBLISH_DIR - папка, в которой будет создан acelive-файл
- --piecesize PIECESIZE (*) - размер куска в байтах, в степени 2 (если не задан, выставляется автоматически в зависимости от битрейта)
- --duration DURATION (*) - размер кеша трансляции в формат ЧЧ:ММ:СС (по умолчанию один час: 01:00:00)
- --host HOST (*) - вручную задать адрес локального трекера
- --port PORT (*) - порт, на котором работает движок. По умолчанию 7764.
- --skip-internal-tracker (*) - отключить локальный трекер
- --add-authorized-peers (*) - добавить список авторизованных пиров в acelive файл
- --private-source (*) - сделать источник приватным
- --support-node SUPPORT_NODE (*) - добавить узел поддержки (в формате ip:port). Этот параметр может встречаться несколько раз, если нужно добавить несколько узлов поддержки.
- --tracker TRACKER (*) - добавить трекер (announce url). Этот параметр может встречаться несколько раз.
- --maxclients MAXCLIENTS - максимальное количество пиров, на которые одновременно отдаются данные с источника. По умолчанию 7.
- --log-debug DEBUG - установить уровень отладки (по умолчанию 0 - минимальный)
- --source-read-timeout SECONDS - таймаут на чтение данных из оригинального источника (в секундах). По умолчанию 30.
- --source-reconnect-interval SECONDS - интервал в секундах, через который движок попробует повторно подсоединиться к оригинальному источнику при обрыве связи. По умолчанию 5.
- --pid-file-dir PATH - папка, в которой будет создан pid-файл движка. По умолчанию /tmp.
- --provider-key (*) - ключ провайдера (используется для партнерской программы)
- --sid (*) - идентификатор трансляции для статистики (используется для партнерской программы)
- --permanent (*) - отметить трансляцию, которая идет 24/7 (круглосуточная трансляция)
- --date-start YYYY-MM-DD HH:mm:ss (*) - указать дату и время начала трансляции (для трансляций с ограниченным временем вещания)
- --date-end YYYY-MM-DD HH:mm:ss (*) - указать дату и время окончания трансляции (для трансляций с ограниченным временем вещания)
- --premium (*) - запросить статус "премиум" для трансляции
- --upload-limit - ограничить скорость отдачи (в байтах/с, по умолчанию 0 - не ограничивать)
- --max-connections - максимальное общее кол-во соединений (по умолчанию 1000)
- --max-peers - максимальное кол-во подключений к пирам (по умолчанию 50)
- --service-remote-access - разрешить удаленный просмотр статистики
- --service-access-token - ключ доступа для удаленной статистики
- --stats-report-interval - интервал в секундах между обновлениями внутренней статистики (по умолчанию 60)
- --stats-report-peers - обновлять данные по пирам во внутренней статистике
дополнительно
- -h, --help - показать описание команд
примечание
Изменение параметров, отмеченных звездочками, приводит к изменению Content ID трансляции
Синтаксис команды acestreamengine --stream-node
Команда acestreamengine --stream-node запускает узел поддержки
обязательные параметры
- --url URL> - ссылка на acelive файл трансляции
необязательные параметры
- --port PORT - порт (по умолчанию 8621)
- --state-dir STATE_DIR - папка для временных файлов (удаляется после остановки узла поддержки)
- --source-node SOURCE_NODE - адрес источника трансляции (ip:port)
- --support-node SUPPORT_NODE - добавить адрес другого узла поддержки (ip:port). Этот параметр может встречаться несколько раз.
- --allow-source-download - разрешить получение данных от источника
- --allow-support-download - разрешить получение данных от других узлов поддержки
- --allow-peers-download - разрешить получение данных от обычных пиров
- --max-connections MAX_CONNECTIONS - максимальное общее кол-во соединений (по умолчанию 1000)
- --max-peers MAX_PEERS - максимальное кол-во подключений к пирам (по умолчанию 50)
- --max-upload-slots MAX_UPLOAD_SLOTS - максимальное количество пиров, на которые одновременно отдаются данные с узла поддержки (по умолчанию 7)
- --max-download-speed MAX_DOWNLOAD_SPEED - максимальная скорость загрузки (байт/с). По умолчанию 0 (без ограничений).
- --max-upload-speed MAX_UPLOAD_SPEED - максимальная скорость отдачи (байт/с). По умолчанию 0 (без ограничений).
- --stats-report-interval STATS_REPORT_INTERVAL - интервал в секундах между обновлениями внутренней статистики (по умолчанию 60)
- --stats-report-peers - обновлять данные по пирам во внутренней статистике
- --service-remote-access - разрешить удаленный просмотр статистики
- --service-access-token - ключ доступа для удаленной статистики
- --log-debug DEBUG - установить уровень отладки
дополнительно
- -h, --help - показать описание команд
Встроенный трекер
Встроенный трекер - это трекер встроенный в источник трансляции. Если он не отключен опцией --skip-internal-tracker, то его адрес будет автоматически добавлен в acelive-файл.
При организации трансляций с большим количеством пользователей мы рекомендуем отключать встроенный трекер и заменять его внешним трекером с хорошей производительностью (например, XBT Tracker)
Авторизованные узлы
Для того, чтобы клиент подключился к трансляции и начал просмотр, ему необходимо либо установить соединение минимум с двумя другими узлами, либо установить соединение с авторизованным узлом. Авторизованный узел - это узел, который был отмечен создателем трансляции как такой, которому можно "доверять". Как правило, это источник трансляции и/или узлы поддержки.
Последние версии ПО ACE Stream поддерживают использование списка авторизованных узлов в acelive-файле. Для этого при создании трансляции задается опция --add-authorized-peers, после чего формируется список авторизованных узлов и добавляется в acelive-файл. В список авторизованных узлов попадает источник трансляции (если это не приватный источник) и все указанные узлы поддержки. Клиенты, которые получили данный acelive-файл, используют список для определения того, является ли какой-либо узел авторизованным.
Если в acelive-файл не был добавлен список авторизованных узлов, либо у клиента установлена старая версия ACE Stream, которая не распознает данный список, то авторизованным узлом считается узел, IP адрес которого совпадает с адресом первого трекера в списке трекеров. Если встроенный трекер на источнике не отключен, то он будет первым в списке и клиенты будут считать источник авторизованным узлом. В случае, если встроенный трекер отключен, для поддержки старых клиентов мы рекомендуем ставить на первое место трекер, расположенный на том же сервере, что и источник трансляции (чтобы адреса первого трекера и источника совпадали), либо использовать как минимум один узел поддержки (чтобы клиенты при старте могли установить соединение сразу с двумя пирами, даже если больше никто не смотрит трансляцию).
Timeshift
Функция "Timeshift" дает пользователям возможность осуществить перемотку трансляции на некоторое время назад, а также поставить трансляцию на паузу и вернуться к просмотру в удобное для них время.
Время, на которое может осуществляться перемотка назад, задается при создании трансляции опцией --duration. Время указывается в формате ЧЧ:ММ:СС.
Например, при указании опции --duration 00:30:00 будет задан интервал 30 минут.
Примеры
Для примеров предположим наличие локальной сети с тремя серверами:
- 192.168.1.1 - сервер для источника
- 192.168.1.2 - сервер для узла поддержки
- 192.168.1.3 - сервер для узла поддержки
- 192.168.1.100 - сервер, который отдает оригинальный поток трансляции (HTTP MPEG-TS) по адресу http://192.168.1.100/stream (средний битрейт потока - 300 000 байт/с)
На сервере 192.168.1.1 предполагается наличие веб-сервера с корневой папкой /home/www, а также двух папок:
- /home/www/streams - для хранения acelive-файлов, которые будут доступны для скачивания по ссылке вида http://192.168.1.1/streams/test.acelive
- /tmp/streams - для хранения кэша и служебных файлов трансляций
Источник с встроенным трекером
Это наиболее простой способ запуск трансляции, не требующий запуска узлов поддержки и установки дополнительных трекеров. Данный способ подходит для трансляций с небольшим количество пользователей.
На сервере 192.168.1.1 запускаем источник:
acestreamengine --stream-source \ --name "test" \ --title "Тестовая трансляция" \ --source "http://192.168.1.100/stream" \ --bitrate 300000 \ --publish-dir "/home/www/streams" \ --cache-dir "/tmp/streams" \ --add-authorized-peers \ --log-stdout
Опция --add-authorized-peers добавляет в acelive-файл список авторизованных узлов (в данном случае это источник: 192.168.1.1).
После запуска трансляции в папке /home/www/streams будет создан файл test.acelive, в папке /tmp/streams будут созданы такие файлы:
- test - кэш трансляции. Размер этого файла примерно равен длительность_потока_в_секундах (опция --duration, по умолчанию 1 час) * битрейт байт
- test.restart - здесь хранится информация для корректного перезапуска трансляции
- test.sauth - ключ для цифровой подписи трансляции
Для просмотра трансляции клиенты могут скачать файл трансляции по ссылке http://192.168.1.1/streams/test.acelive и запустить его в плеере ACE Stream, либо использовать другие способы (Способы просмотра трансляции).
Источник с внешним трекером
Если трансляция предполагает большое количество пользователей, то желательно использовать внешний трекер и отключить встроенный (для снижения нагрузки на источник).
В качестве внешнего трекера мы советуем использовать XBT Tracker
В данном примере предполагаем, что XBT Tracker установлен и запущен на сервере 192.168.1.1. Запуск трансляции теперь будет выглядеть таким образом:
acestreamengine --stream-source \ --name "test" \ --title "Тестовая трансляция" \ --source "http://192.168.1.100/stream" \ --bitrate 300000 \ --publish-dir "/home/www/streams" \ --cache-dir "/tmp/streams" \ --add-authorized-peers \ --skip-internal-tracker \ --tracker "udp://192.168.1.1:2710/announce" \ --log-stdout
Опция --skip-internal-tracker отключает встроенный трекер, опция --tracker подключает внешний трекер.
Источник с двумя узлами поддержки
В случае, если на источнике не хватает пропускной способности исходящего канала для нормальной работы трансляции, можно использовать узлы поддержки. Чаще всего узел поддержки представляет собой узел, который принимает данные от источника и отдает клиентам (хотя узел поддержки также может принимать данные от других узлов поддержки и даже от клиентов, в зависимости от его настроек). Узел поддержки имеет смысл ставить на отдельном сервере с хорошей шириной исходящего канала.
Для максимально эффективной работы схемы с узлами поддержки источнику необходимо сообщить адреса этих узлов с помощью опции --support-node:
acestreamengine --stream-source \ --name "test" \ --title "Тестовая трансляция" \ --source "http://192.168.1.100/stream" \ --bitrate 300000 \ --port 7764 \ --publish-dir "/home/www/streams" \ --cache-dir "/tmp/streams" \ --add-authorized-peers \ --skip-internal-tracker \ --tracker "udp://192.168.1.1:2710/announce" \ --support-node "192.168.1.2:8621" \ --support-node "192.168.1.3:8621" \ --log-stdout
Запускаем узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 (команды для запуска одинаковые):
acestreamengine --stream-node \ --url "http://192.168.1.1/streams/test.acelive" \ --state-dir "/tmp" \ --source-node "192.168.1.1:7764" \ --allow-source-download \ --log-stdout
Опция --source-node задает адрес источника.
Опция --allow-source-download разрешает узлу поддержки скачивать данные с источника (скачивание с других узлов поддержки и клиентов в данном случае запрещено).
Если необходимо разрешить узлам поддержки скачивать данные с других узлов поддержки, то следует задать список других узлов опцией --support-node и разрешить скачивание опцией --allow-support-download.
На сервере 192.168.1.2 это будет выглядеть так:
acestreamengine --stream-node \ --url "http://192.168.1.1/streams/test.acelive" \ --state-dir "/tmp" \ --source-node "192.168.1.1:7764" \ --allow-source-download \ --support-node "192.168.1.3:8621" \ --allow-support-download \ --log-stdout
На сервере 192.168.1.3:
acestreamengine --stream-node \ --url "http://192.168.1.1/streams/test.acelive" \ --state-dir "/tmp" \ --source-node "192.168.1.1:7764" \ --allow-source-download \ --support-node "192.168.1.2:8621" \ --allow-support-download \ --log-stdout
Приватный источник с двумя узлами поддержки
Иногда может возникнуть необходимость запретить клиентам напрямую обращаться к источнику трансляции. Например, источник может быть физически расположен на сервере в защищенной зоне без доступа из внешнего мира. В этом случае трансляцию можно организовать по следующей схеме:
- источник делается приватным (получать от него данные смогут только узлы поддержки, указанные явным образом)
- узлы поддержки получают данные от источника и отдают клиентам
- клиенты получают данные от узлов поддержки
Для того, чтобы сделать источник приватным, следует указать опцию --private-source:
acestreamengine --stream-source \ --name "test" \ --title "Тестовая трансляция" \ --source "http://192.168.1.100/stream" \ --bitrate 300000 \ --port 7764 \ --publish-dir "/home/www/streams" \ --cache-dir "/tmp/streams" \ --add-authorized-peers \ --skip-internal-tracker \ --tracker "udp://192.168.1.2:2710/announce" \ --support-node "192.168.1.2:8621" \ --support-node "192.168.1.3:8621" \ --private-source \ --log-stdout
Следует обратить внимание на то, что в данной конфигурации адрес трекера изменен на udp://192.168.1.2:2710/announce. Это сделано для поддержки старых версий клиентов, которые не обрабатывают список авторизованных пиров (подробнее здесь Авторизованные узлы).
Узлы поддержки на серверах 192.168.1.2 и 192.168.1.3 запускаем как обычно:
acestreamengine --stream-node \ --url "http://192.168.1.1/streams/test.acelive" \ --state-dir "/tmp" \ --source-node "192.168.1.1:7764" \ --allow-source-download \ --log-stdout