Open main menu

Ace Stream Wiki β

AceStream 3.0/en

Revision as of 12:24, 15 January 2014 by Ankiria (talk | contribs) (Как запустить без удаления старой версии)

Contents

Where to download

You can download the latest alpha-versions of the engine here:

Changelog

3.0.0-a5

  • start nodes are added

3.0.0-a2

  • support nodes are added
  • options for configuration of private nodes and schemes of distribution of traffic between support nodes and a source are added

3.0.0-a1

  • the first alpha-version

How to launch without deleting an old version

Alpha-version can be launched on a server simultaneously with any release version.

For the launching you need to:

  • download archive for your OS
  • unpack archive in any folder (for example, /opt/acestream/engine_new)
  • launch acestreamengine file in the unpacked folder with a parameter --lib-path /path/to/acestream_libraries. Example:
/opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new

Parameter --lib-path sets the path to Ace Stream libraries. By default the path /usr/share/acestream is used. If the release version of the engine is already installed on the server, it will be launched without specifying the parameter --lib-path. To know for sure which version was launched, you can check the version from command line. For example, if version 2.1.6 is already installed, the result without specifying --lib-path will be following:

# /opt/acestream/engine_new/acestreamengine --version
version: 2.1.6 revision: 293

With specifying --lib-path a new version will be launched:

# /opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new --version
version: 3.0.0-a1 revision: 565

Launch on CentOS

On CentOS there are some features of the engine launch.

Standard library openssl on CentOS do not support some necessary for the engine functions. In this regard, together with the engine for CentOS there is a recompiled library openssl and module python-m2crypto, which is superstructure over openssl. These libraries are in the folder usr in archieve with the engine. To use them you have to copy folders "lib64" and "local" from the folder "usr" into appropriate folders in /usr. If the engine of the previous version is installed on the server, these libraries are in your system and there is no need to copy them.

To launch the engine under CentOS script start.sh is used instead of acestreamengine in the folder with the engine.

This script sets an environment variable LD_LIBRARY_PATH=/usr/local/ssl/lib before the engine launch, so the recompiled version of the library openssl was used.

Also this script automatically passes the path to libraries to the engine through the parameter --lib-path, so there is no need to specify it additionally.

Изменения в параметрах запуска

В новой версии есть некоторые отличия по параметрам запуска.

Новые флаги для запуска движка в разных режимах

  • --stream-source-node (вместо --stream-source)
  • --stream-support-node (вместо --stream-node)

Новые параметры для настройки кеша

  • --live-cache-type (string) - тип кеша: disk - хранить кеш на диске в папке, указанной параметром --cache-dir, memory - хранить кеш в оперативной памяти (по умолчанию: disk)
  • --live-cache-size (integer) - максимальный размер кеша в байтах (по умолчанию: 209715200 байт (200 Мб))

Новые параметры для конфигурации инфраструктуры узлов поддержки

  • --private-node (0 or 1) - если указать 1, то узел будет приватным (по умолчанию 0)
  • --download-from (string) - добавить адрес к списку узлов, с которых данному узлу разрешено получать данные. Адрес должен задаваться в формате ipv4_address:port. Этот параметр может встречаться несколько раз.
  • --upload-to (string) - добавить адрес к списку узлов, которым данному узлу разрешено отдавать данные. Адрес должен задаваться в формате ipv4_address:port. Этот параметр может встречаться несколько раз.
  • --monitor-node-ip (string) - ipv4 адрес мониторинг-сервера

Новые параметры для запуска источника

  • --metatracker (string) - добавить адрес метатрекера в транспортный файл

Эти параметры уже не используются

  • --stream-source (изменен на --stream-source-node)
  • --stream-node (изменен на --stream-support-node)
  • --add-authorized-peers (список авторизированных пиров больше не добавляется в транспортный файл)
  • --private-source (заменен на --private-node)
  • --support-node
  • --source-node
  • --allow-source-download
  • --allow-support-download
  • --allow-peers-download

Новый функционал

Настройка узлов поддержки

В новой версии узлам поддержки необходимо явным образом указывать, с каких узлов они должны скачивать данные. Для этого используется параметр --download-from. Список узлов, с которых разрешено скачивание, может быть изменен без перезапуска узла поддержки через веб-интерфейс узла (см. ниже). Например, если по адресу 192.168.1.2:7764 запущен узел-источник и мы хотим запустить узел поддержки, который будет качать данные только с источника, то команда для запуска узла поддержки будет выглядеть так:

acestreamengine \
 --stream-support-node \
 --url http://192.168.1.2/transport/test.acelive \
 --port 8631 \
 --download-from "192.168.1.2:7764"

Приватные узлы

Приватный узел отдает данные только узлам, которые явным образом добавлены в его список разрешенных. Для того, чтобы сделать узел приватным, нужно запустить его с параметром --private-node 1. Для добавления адреса в список разрешенных на отдачу используется параметр --upload-to. Приватным может быть как узел-источник, так узел поддержки. Приватный узел отбивает входящие соединения со всех адресов, кроме указанных параметрами --download-from, --upload-to и --monitor-node-ip. Для фильтрации используется только ip-адрес (порт не используется). Параметр --monitor-node-ip задает ip-адрес сервера мониторинга и используется в том случае, если нужно обеспечить мониторинг приватного узла (без указание этого параметра приватный узел будет отбивать все запросы от сервера мониторинга).

Пример запуска приватного источника, который будет отдавать данные только узлу поддержки из предыдущего примера:

acestreamengine \
  --stream-source-node \
  --port 7764 \
  --source "http://brodilo.tv/channel.php" \
  --name "test" \
  --title "test" \
  --bitrate 350000 \
  --publish-dir /var/www/transport \
  --cache-dir /var/cache/acestream \
  --private-node 1 \
  --upload-to "192.168.1.3:8631"

Стартовые узлы

Стартовый узел предназначен для обеспечения максимально быстрого старта трансляции у пользователей.

Особенность работы стартового узла - постоянная ротация соединений. При получении новых входящих соединений стартовый узел разрывает соединения с узлами, которые подключились ранее и уже скачали определенный объем данных.

Для запуска движка в режиме стартового узла используется параметр --stream-startup-node.

Стартовый узел принимает такой же набор параметров, как и узел поддержки.

Пример запуска стартового узла:

acestreamengine \
 --stream-startup-node \
 --url http://192.168.1.2/transport/test.acelive \
 --port 8632 \
 --download-from "192.168.1.2:7764"

Метатрекеры

Метатрекер - это сервер, который сообщает узлам о доступных трекерах и стартовых узлах.

URL метатрекера задается на источнике при создании трансляции и записывается в транспортный файл.

Метатрекеры позволяют динамически добавлять трекеры и/или стартовые узлы для трансляции без необходимости перезапуска трансляции и пересоздания транспортного файла.

Пример запуска источника с метатрекером:

acestreamengine \
  --stream-source-node \
  --port 7764 \
  --source "http://brodilo.tv/channel.php" \
  --metatracker "http://example.org/metatracker.php"
  --name "test" \
  --title "test" \
  --bitrate 350000 \
  --publish-dir /var/www/transport \
  --cache-dir /var/cache/acestream \
  --private-node 1 \
  --upload-to "192.168.1.3:8631"

Метатрекер принимает запросы по протоколу HTTP и выдает ответ в формате JSON, поэтому метатрекер может быть реализован на базе любого веб-сервера.

Каждый узел при запуске трансляции отправляет на метатрекер HTTP GET запрос с параметром infohash (хеш трансляции в виде hex-строки). Пример запроса на метатрекер:

http://example.org/metatracker.php?infohash=a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

Формат ответа:

{
    "trackers": ["tracker_url_1", "tracker_url_2", ...],
    "startup_nodes": ["node1_address", "node2_address", ...],
    "interval": UPDATE_INTERVAL_IN_SECONDS
}

где

  • tracker_url_1, tracker_url_2 - URL трекеров
  • node1_address, node2_address - адреса стартовых узлов в виде строк в формате ip:port (например, 192.168.1.2:8632)
  • UPDATE_INTERVAL_IN_SECONDS - интервал обновления в секундах (как часто каждый клиент должен повторно обращаться на метатрекер)

Пример ответа:

{
    "trackers":["udp:\/\/tracker.example.org:2710\/announce"],
    "startup_nodes":["192.168.1.2:8632"],
    "interval":3600
}

Пример серверного кода метатрекера на PHP:

<?php
$infohash = isset($_GET['infohash']) ? $_GET['infohash'] : '';

$trackers = array(
    'udp://tracker.example.org:2710/announce',
);

$startup_nodes = array(
    '192.168.1.2:8632',
);

$data = array(
    'trackers'      => $trackers,
    'startup_nodes' => $startup_nodes,
    'interval'      => 30,
);

header('Content-Type: application/json');
echo json_encode($data);

Веб-интерфейс узла

Мониторинг

скоро будет

Управление

скоро будет