Open main menu

Ace Stream Wiki β

Changes

AceStream 3.0

19,724 bytes added, 18:29, 29 December 2015
Changelog
==Где скачать==
 ===Linux===Последние альфа-серверные версии движка можно скачать здесь:* Ubuntu 12 i386: http://dl.acestream.org/ubuntu/12/acestream_3.0.3_ubuntu_12.04_i686.tar.gz* Ubuntu 12 amd64: http://dl.acestream.org/ubuntu/12/acestream_3.1.0-b3-pre4_ubuntu_12.04_x86_64.tar.gz* Ubuntu 13 i386: http://dl.acestream.org/ubuntu/13/acestream_3.0.3_ubuntu_13.10_i686.tar.gz* Ubuntu 13 amd64: http://dl.acestream.org/ubuntu/13/acestream_3.0.5.1_ubuntu_13.10_x86_64.tar.gz* Ubuntu 14 i386: http://dl.acestream.org/ubuntu/14/acestream_3.0.3_ubuntu_14.04_i686.tar.gz* Ubuntu 14 amd64: http://dl.acestream.org/ubuntu/14/acestream_3.0-a5_ubuntu_12_amd64.5.1_ubuntu_14.04_x86_64.tar.gz* CentOS 6 amd64: http://dl.acestream.org/centos/6/acestream_3.0.3_centos_6_amd64.tar.gz* CentOS 7 amd64: http://dl.acestream.org/centos/7/acestream_3.0.3_centos_7_amd64.tar.gz* Debian 6 i386: http://dl.acestream.org/debian/6/acestream_3.0.3_debian_6.0.10_i686.tar.gz* Debian 6 amd64: http://dl.acestream.org/debian/6/acestream_3.0.5.1_debian_6.0.10_x86_64.tar.gz* Debian 7 i386: http://dl.acestream.org/debian/7/acestream_3.0.3_debian_7.6_i686.tar.gz* Debian 7 amd64: http://dl.acestream.org/debian/7/acestream_3.0-a5_centos_6_amd64.5.1_debian_7.4_x86_64.tar.gz ===Windows===* полный пакет (движок + плагин + плеер)http://dl.acestream.org/products/acestream-full/win/latest* только движок: http://dl.acestream.org/win32/engine/AceStreamEngine_3.0.2.zip ===Android===* движок + плеер: http://dl.acestream.org/products/acestream-full/android/latest* только движок: http://dl.acestream.org/products/acestream-engine/android/latest
==Changelog==
''3.0.3''
*исправлен баг с падением движка на некоторых трансляциях
*снижена нагрузка на процессор при отдаче на высоких скоростях
*оптимизированы алгоритмы поиска новых пиров
*оптимизировано взаимодействие клиентов со стартовыми серверами
 
''3.0.2''
*добавлена возможность фильтровать трафик на спец. узлах (см. [[#Фильтрация трафика|Фильтрация трафика]])
 
''3.0.1''
*проведена масштабная оптимизация работы всех модулей
 
''3.0.0-a18''
*исправлен баг, из-за которого узлы поддержки могли потерять связь с источником
*параметр <tt>--title</tt> стал обязательным (в этом параметре передается "читабельное" название трансляции, которое выводится у пользователей в плеере при просмотре)
*добавлены два обязательных параметра для источника:
**<tt>--quality</tt> - качество канала; возможные значения:
***SD
***HD
**<tt>--category</tt> - категория канала; возможные значения:
***informational - Информационный
***entertaining - Развлекательный
***educational - Познавательный
***movies - кино
***documentaries - Документалистика
***sport - Спортивный
***fashion - Мода
***music - Музыкальный
***regional - Региональный
***ethnic - Этнический
***religion - Религиозный
***teleshop - Телемагазин
***erotic_18_plus - Эротический 18+
***other_18_plus - Другие 18+
***cyber_games - Cyber Games
***amateur - Любительский
***webcam - вебкамера
***kids - детский
***series - сериалы
 
''3.0.0-a12''
*значительно оптимизирована нагрузка на процессор
*ликвидированы утечки памяти
 
''3.0.0-a5''
*добавлены стартовые узлы
''3.0.0-a1''
*первая альфа-версия
 
==Как установить поверх старой версии==
* скачать архив для нужной ОС
* распаковать во временную папку (например, в /tmp/acestream)
* скопировать соответствующие файлы из временной папки в корневые папки /usr/bin/ и /usr/share/acestream (все старые файлы и папки можно удалить)
 
ВАЖНО: для работы новой версии движка должен быть установлен пакет <tt>python-setuptools</tt>.
==Как запустить без удаления старой версии==
===Новые параметры для запуска источника===
*--metatracker (string) - добавить адрес метатрекера в транспортный файл
*--startup-node (string) - добавить адрес стартового узла в транспортный файл
===Эти параметры уже не используются===
--port 8631 \
--download-from "192.168.1.2:7764"</nowiki>
 
===Оптимизизация распределения трафика===
Начиная с версии 3.0.5 узлы поддержки умеют автоматически находить пиров с хорошей скоростью отдачи и подсоединять их к себе. Данный алгоритм позволяет оптимизировать распределение трафика. Во время подключения таких пиров общее кол-во подсоединенных пиров может превысить значение <tt>--max-peers</tt>. Максимальное кол-во пиров сверх значения <tt>--max-peers</tt> задается опцией <tt>--core-sandbox-max-peers</tt> (по умолчанию 5). Если задать <tt>--core-sandbox-max-peers</tt> равным нулю, то алгоритм оптимизации распределения трафика будет отключен, поэтому делать это крайне не рекомендуется.
===Приватные узлы===
--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>
 
Для того, чтобы стартовый сервер нормально работал, все узлы-клиенты должны знать его адрес и порт.
Для этого адрес и порт стартового сервера необходимо либо внести в транспортный файл (опция --startup-node при создании трансляции), либо использовать метатрекер для оповещения клиентов об адресах стартовых серверов.
 
Пример запуска источника с указанием адреса стартового узла:
<nowiki>acestreamengine \
--stream-source-node \
--port 7764 \
--source "http://brodilo.tv/channel.php" \
--startup-node "192.168.1.3:8632"
--name "test" \
--title "test" \
--quality SD \
--category entertaining
--bitrate 350000 \
--publish-dir /var/www/transport \
--cache-dir /var/cache/acestream \
--private-node 1 \
--upload-to "192.168.1.3:8632"</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.3: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.3:8632',); $data = array( 'trackers' => $trackers, 'startup_nodes' => $startup_nodes, 'interval' => 30,); header('Content-Type: application/json');echo json_encode($data);</nowiki>
===Веб-интерфейс узла===
Каждый узел имеет веб-интерфейс для просмотра текущего состояния, а также возможности изменения некоторых параметров "на лету" (без перезапуска узла).
 
Веб-интерфейс работает на основном порту узла (заданном параметром <tt>--port</tt>).
 
По умолчанию веб-интерфейс доступен только с той же машины, на которой запущен узел.
Для того, чтобы разрешить удаленный доступ, необходимо запустить узел с опцией <tt>--service-remote-access</tt>.
Также можно задать пароль на веб-интерфейс для предотвращения несанкционированного доступа с помощью опции <tt>--service-access-token</tt>
 
Полный список опций для настройки веб-интерфейса:
*<tt>--stats-report-interval</tt> - частота обновления статистики узла в секундах (по умолчанию 60)
*<tt>--stats-report-peers</tt> - если данная опция задана, то в мониторинг будет выдаваться список узлов, с которыми в данный момент соединен данный узел (по умолчанию список узлов не выводится)
*<tt>--service-remote-access</tt> - разрешить удаленный доступ на веб-интерфейс
*<tt>--service-access-token</tt> - задать пароль на веб-интерфейс
 
Доступ к веб-интерфейсу осуществляется по HTTP-GET запросом на порт узла:
*мониторинг - <nowiki>http://node.address:PORT/app/TOKEN/monitoring</nowiki>
*управление - <nowiki>http://node.address:PORT/app/TOKEN/update</nowiki>
 
Если узел запущен без опции <tt>--service-access-token</tt>, то TOKEN в запросе не указывается.
<br/>Ответы выдаются в формате JSON.
 
Примеры:
*запрос на узел без пароля на веб-интерфейс:
<nowiki>http://192.168.1.3:8640/app/monitor</nowiki>
*запрос на узел с паролем qwerty на веб-интерфейс:
<nowiki>http://192.168.1.3:8640/app/qwerty/monitor</nowiki>
====Мониторинг====
скоро будетИнтерфейс мониторинга выдает такую информацию:*<tt>version</tt> - версия узла*<tt>max_connections</tt> - максимальное кол-во TCP-соединений*<tt>max_peers</tt> - максимальное кол-во одновременно подсоединенных узлов*<tt>max_upload_slots</tt> - максимальное кол-во открытых слотов для раздачи*<tt>download_speed</tt> - текущая скорость загрузки данных (байт/с)*<tt>upload_speed</tt> - текущая скорость отдачи данных (байт/с)*<tt>connected_peers_count</tt> - кол-во подсоединенных узлов*<tt>connected_peers</tt> - список подсоединенных узлов (пустой, если не задана опция --stats-report-peers)*<tt>upload_slots</tt> - текущее кол-во слотов для раздачи
====Управление====
скоро будетДля изменения параметров узла "на лету" нужно отправить запрос такого вида на веб-интерфейс: <nowiki>http://192.168.1.3:8640/app/update?param1=value1&param2=value2...</nowiki>param1 и param2 задают названия параметров, которые необходимо обновить, value1 и value2 - новые значения для параметров. Доступные для обновления параметры:*<tt>max_peers</tt>*<tt>max_upload_slots</tt> Пример: <nowiki>http://192.168.1.3:8640/app/update?max_peers=100&max_upload_slots=30</nowiki> (держать соединения с 100 узлами одновременно и открыть 30 слотов на раздачу) ===Фильтрация трафика===Начиная с версии 3.0.2 добавлена возможность фильтровать трафик на спец. узлах (источнике, узле поддержки и стартовом узле). Фильтровать можно по ip-адресам либо по геотаргетингу. Правила для фильтрации должны быть вынесены в отдельный конфигурационный файл, путь к которому передается спец. узлу в параметре --ip-filter-config. Конфигурационный файл представляется собой текстовый файл в формате JSON с такой структурой: <tt>{ "groups": { "<group_1>": { "addresses": ["<ip_address_1>", "<ip_address_2>", ...], "countries": ["<country_code_1>", "<country_code_2>", ...] }, "<group_2>": { "addresses": ["<ip_address_1>", "<ip_address_2>", ...], "countries": ["<country_code_1>", "<country_code_2>", ...] }, }, "blacklist": { "addresses": ["<ip_address_1>", "<ip_address_2>", ...], "countries": ["<country_code_1>", "<country_code_2>", ...], "groups": ["<group_1>", "<group_2>", ...] }, "whitelist": { "addresses": ["<ip_address_1>", "<ip_address_2>", ...], "countries": ["<country_code_1>", "<country_code_2>", ...], "groups": ["<group_1>", "<group_2>", ...] }, "limit_groups": { "<group_1>": "30%", "<group_2>": "10%" } }</tt> Раздел <tt>groups</tt> используется для создания именованных групп, на которые можно ссылать в других разделах файла.Каждая группа может состоять из массива ip-адресов (<tt>addresses</tt>) либо кодов стран (<tt>countries</tt>). Массив <tt>addresses</tt> может содержать как адреса отдельных хостов, так и адреса подсетей в формате xx.xx.xx.xx/yy. На данный момент разрешено использовать только подсети /24, /16 и /8. Массив <tt>countries</tt> должен содержать коды стран в верхнем регистре (согласно базе [https://www.maxmind.com MaxMind]) Раздел <tt>whitelist</tt> задает белый список. Узел отбивает соединения со всех адресов, которые не входят в белый список. Раздел <tt>blacklist</tt> задает черный список. Узел отбивает соединения со всех адресов, которые входят в черный список. Раздел <tt>limit_groups</tt> задает ограничения по максимальному количеству соединений для каждой группы (в процентах от общего максимального количества соединений).