0
edits
Changes
no edit summary
==Where to download==You can download the latest alpha-version versions of the engine here:* Ubuntu 12 amd64: http://dl.acestream.org/ubuntu/12/acestream_3.0.0-a1_ubuntu_12_amd64a5_ubuntu_12_amd64.tar.gz* CentOS 6 amd64: http://dl.acestream.org/centos/6/acestream_3.0.0-a5_centos_6_amd64.tar.gz
<tt>/opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new</tt>
<tt># /opt/acestream/engine_new/acestreamengine --version
version: 2.1.6 revision: 293</tt>
<tt># /opt/acestream/engine_new/acestreamengine --lib-path /opt/acestream/engine_new --version
version: 3.0.0-a1 revision: 565</tt>
*--support-node
*--addsource-authorizednode*--allow-source-download*--allow-support-download*--allow-peers-download ==Новый функционал== ===Настройка узлов поддержки===В новой версии узлам поддержки необходимо явным образом указывать, с каких узлов они должны скачивать данные. Для этого используется параметр <tt>--download-from</tt>. Список узлов, с которых разрешено скачивание, может быть изменен без перезапуска узла поддержки через веб-интерфейс узла (см. ниже). Например, если по адресу 192.168.1.2:7764 запущен узел-источник и мы хотим запустить узел поддержки, который будет качать данные только с источника, то команда для запуска узла поддержки будет выглядеть так: <nowiki>acestreamengine \ --stream-support-node \ --url http://192.168.1.2/transport/test.acelive \ --port 8631 \ --download-from "192.168.1.2:7764"</nowiki> ===Приватные узлы===Приватный узел отдает данные только узлам, которые явным образом добавлены в его список разрешенных. Для того, чтобы сделать узел приватным, нужно запустить его с параметром <tt>--private-node 1</tt>. Для добавления адреса в список разрешенных на отдачу используется параметр <tt>--upload-to</tt>. Приватным может быть как узел-источник, так узел поддержки. Приватный узел отбивает входящие соединения со всех адресов, кроме указанных параметрами <tt>--download-from</tt>, <tt>--upload-to</tt> и <tt>--monitor-node-ip</tt>. Для фильтрации используется только ip-адрес (порт не используется). Параметр <tt>--monitor-node-ip</tt> задает ip-адрес сервера мониторинга и используется в том случае, если нужно обеспечить мониторинг приватного узла (без указание этого параметра приватный узел будет отбивать все запросы от сервера мониторинга). Пример запуска приватного источника, который будет отдавать данные только узлу поддержки из предыдущего примера: <nowiki>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"</nowiki> ===Стартовые узлы===Стартовый узел предназначен для обеспечения максимально быстрого старта трансляции у пользователей. Особенность работы стартового узла - постоянная ротация соединений. При получении новых входящих соединений стартовый узел разрывает соединения с узлами, которые подключились ранее и уже скачали определенный объем данных. Для запуска движка в режиме стартового узла используется параметр <tt>--stream-startup-node</tt>. Стартовый узел принимает такой же набор параметров, как и узел поддержки.<!--Стартовый узел принимает такой же набор параметров, как и узел поддержки, плюс некоторые дополнительные параметры:*''<tt>--startup-node-max-connections (integer)</tt>'' - максимальное количество узлов, с которым стартовый узел держит постоянные соединения (если к узлу подключится больше других узлов, чем указано в этом параметре, лишние соединения будут разорваны).*''<tt>--startup-node-cleanup-interval (integer)</tt>'' - интервал очистки лишних соединений в секундах (по умолчанию: 1).*''<tt>--startup-node-upload-buffer (integer)</tt>'' - минимальный буфер в секундах, который будет отдан каждому подсоединившемуся узлу перед тем, как его можно будет отключить*''<tt>--startup-node-time-limit (integer)</tt>'' - максимальная длительность соединения в секундах, после достижения которой соединение может быть разорвано, даже если узел еще не получил необходмый объем данных.--> Пример запуска стартового узла: <nowiki>acestreamengine \ --stream-startup-node \ --url http://192.168.1.2/transport/test.acelive \ --port 8632 \ --download-from "192.168.1.2:7764"</nowiki> ===Метатрекеры=== Метатрекер - это сервер, который сообщает узлам о доступных трекерах и стартовых узлах. URL метатрекера задается на источнике при создании трансляции и записывается в транспортный файл. Метатрекеры позволяют динамически добавлять трекеры и/или стартовые узлы для трансляции без необходимости перезапуска трансляции и пересоздания транспортного файла. Пример запуска источника с метатрекером: <nowiki>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"</nowiki> Метатрекер принимает запросы по протоколу HTTP и выдает ответ в формате JSON, поэтому метатрекер может быть реализован на базе любого веб-сервера. Каждый узел при запуске трансляции отправляет на метатрекер HTTP GET запрос с параметром <tt>infohash</tt> (хеш трансляции в виде hex-строки). Пример запроса на метатрекер: <nowiki>http://example.org/metatracker.php?infohash=a94a8fe5ccb19ba61c4c0873d391e987982fbbd3</nowiki> Формат ответа: <nowiki>{ "trackers": ["tracker_url_1", "tracker_url_2", ...], "startup_nodes": ["node1_address", "node2_address", ...], "interval": UPDATE_INTERVAL_IN_SECONDS}</nowiki> где*tracker_url_1, tracker_url_2 - URL трекеров*node1_address, node2_address - адреса стартовых узлов в виде строк в формате ip:port (например, 192.168.1.2:8632)*UPDATE_INTERVAL_IN_SECONDS - интервал обновления в секундах (как часто каждый клиент должен повторно обращаться на метатрекер) Пример ответа: <nowiki>{ "trackers":["udp:\/\/tracker.example.org:2710\/announce"], "startup_nodes":["192.168.1.2:8632"], "interval":3600}</nowiki> Пример серверного кода метатрекера на PHP: <nowiki><?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);</nowiki> ===Веб-интерфейс узла=== ====Мониторинг====скоро будет ====Управление====скоро будет