1. Главная страница » Компьютеры

Http wiki acestream org

Автор: | 16.12.2019

Ace Stream is a peer-to-peer multimedia streaming protocol, built using BitTorrent technology. [1] Ace Stream has been recognized by sources as a potential method for broadcasting and viewing bootlegged live v >[2] [3] The protocol functions as both a client and a server. When users stream a video feed using Ace Stream, they are simultaneously downloading from peers and uploading the same video to other peers.

Содержание

History [ edit ]

Ace Stream began under the name TorrentStream as a pilot project to use BitTorrent technology to stream live v >[4]

Содержание

Где скачать

Linux

Последние серверные версии движка можно скачать здесь:

Читайте также:  Hyperx savage ddr3 2400

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/andro >Changelog
  • исправлен баг с падением движка на некоторых трансляциях
  • снижена нагрузка на процессор при отдаче на высоких скоростях
  • оптимизированы алгоритмы поиска новых пиров
  • оптимизировано взаимодействие клиентов со стартовыми серверами
  • добавлена возможность фильтровать трафик на спец. узлах (см. Фильтрация трафика)
  • проведена масштабная оптимизация работы всех модулей
  • исправлен баг, из-за которого узлы поддержки могли потерять связь с источником
  • параметр --title стал обязательным (в этом параметре передается "читабельное" название трансляции, которое выводится у пользователей в плеере при просмотре)
  • добавлены два обязательных параметра для источника:
  • --quality — качество канала; возможные значения:
  • SD
  • HD
  • --category — категория канала; возможные значения:
    • 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 — сериалы
      • значительно оптимизирована нагрузка на процессор
      • ликвидированы утечки памяти
      • добавлены стартовые узлы
      • добавлены узлы поддержки
      • добавлены опции для конфигурации приватных узлов и схемы распределения трафика между узлами поддержки и источником

      Как установить поверх старой версии

      • скачать архив для нужной ОС
      • распаковать во временную папку (например, в /tmp/acestream)
      • скопировать соответствующие файлы из временной папки в корневые папки /usr/bin/ и /usr/share/acestream (все старые файлы и папки можно удалить)

      ВАЖНО: для работы новой версии движка должен быть установлен пакет python-setuptools.

      Как запустить без удаления старой версии

      Альфа-версия может быть запущена на сервере одновременно с любой релизной версией.

      Читайте также:  Asus hd 5450 характеристики

      Для запуска необходимо:

      • скачать архив для нужной ОС
      • распаковать архив в любую папку (например, в /opt/acestream/engine_new)
      • запустить файл acestreamengine в распакованной папке с параметром —lib-path /path/to/acestream_libraries. Пример:

      Параметр —lib-path задает путь к библиотекам Ace Stream. По умолчанию используется путь /usr/share/acestream. Если на сервере уже установлена релизная версия движка, то без указания параметра —lib-path будет запущена она. Чтобы точно знать, какая версия движка запустилась, можно проверить версию из командной строки. Например, если уже установлена версия 2.1.6, то без указания —lib-path результат будет такой:

      С указанием —lib-path запустится новая версия:

      Запуск на CentOS

      На CentOS есть некоторые особенности запуска движка.

      Стандартная библиотека openssl на CentOS не поддерживает некоторый необходимый для движка функционал. В связи с этим в комплекте с движком для CentOS идет пересобранная библиотека openssl и модуль python-m2crypto, являющийся надстройкой над openssl. Эти библиотеки находятся в папке usr в архиве с движком. Для их использования необходимо скопировать папки lib64 и local из папки usr в соответствующие папки в /usr. Если на сервере уже установлен движок предыдущей версии, то эти библиотеки уже есть в вашей системе и их копировать не нужно.

      Для запуска движка под CentOS вместо acestreamengine используется скрипт start.sh в папке с движком.

      Этот скрипт устанавливает переменную среды LD_LIBRARY_PATH=/usr/local/ssl/lib перед запуском движка, чтобы использовалась пересобранная версия библиотеки openssl.

      Также этот скрипт автоматически передает движку путь к библиотекам через параметр —lib-path, поэтому указывать его дополнительно не нужно.

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

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

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

      • —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) — добавить адрес метатрекера в транспортный файл
      • —startup-node (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 запущен узел-источник и мы хотим запустить узел поддержки, который будет качать данные только с источника, то команда для запуска узла поддержки будет выглядеть так:

      Оптимизизация распределения трафика

      Начиная с версии 3.0.5 узлы поддержки умеют автоматически находить пиров с хорошей скоростью отдачи и подсоединять их к себе. Данный алгоритм позволяет оптимизировать распределение трафика. Во время подключения таких пиров общее кол-во подсоединенных пиров может превысить значение --max-peers. Максимальное кол-во пиров сверх значения --max-peers задается опцией --core-sandbox-max-peers (по умолчанию 5). Если задать --core-sandbox-max-peers равным нулю, то алгоритм оптимизации распределения трафика будет отключен, поэтому делать это крайне не рекомендуется.

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

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

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

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

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

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

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

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

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

      • --startup-node-max-connections (integer) — максимальное количество узлов, с которым стартовый узел держит постоянные соединения (если к узлу подключится больше других узлов, чем указано в этом параметре, лишние соединения будут разорваны).
      • --startup-node-cleanup-interval (integer) — интервал очистки лишних соединений в секундах (по умолчанию: 1).
      • --startup-node-upload-buffer (integer) — минимальный буфер в секундах, который будет отдан каждому подсоединившемуся узлу перед тем, как его можно будет отключить
      • --startup-node-time-limit (integer) — максимальная длительность соединения в секундах, после достижения которой соединение может быть разорвано, даже если узел еще не получил необходмый объем данных.

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

      Для того, чтобы стартовый сервер нормально работал, все узлы-клиенты должны знать его адрес и порт. Для этого адрес и порт стартового сервера необходимо либо внести в транспортный файл (опция —startup-node при создании трансляции), либо использовать метатрекер для оповещения клиентов об адресах стартовых серверов.

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

      Метатрекеры

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

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

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

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

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

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

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

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

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

      Каждый узел имеет веб-интерфейс для просмотра текущего состояния, а также возможности изменения некоторых параметров "на лету" (без перезапуска узла).

      Веб-интерфейс работает на основном порту узла (заданном параметром --port).

      По умолчанию веб-интерфейс доступен только с той же машины, на которой запущен узел. Для того, чтобы разрешить удаленный доступ, необходимо запустить узел с опцией --service-remote-access. Также можно задать пароль на веб-интерфейс для предотвращения несанкционированного доступа с помощью опции --service-access-token

      Полный список опций для настройки веб-интерфейса:

      • --stats-report-interval — частота обновления статистики узла в секундах (по умолчанию 60)
      • --stats-report-peers — если данная опция задана, то в мониторинг будет выдаваться список узлов, с которыми в данный момент соединен данный узел (по умолчанию список узлов не выводится)
      • --service-remote-access — разрешить удаленный доступ на веб-интерфейс
      • --service-access-token — задать пароль на веб-интерфейс

      Доступ к веб-интерфейсу осуществляется по HTTP-GET запросом на порт узла:

      • мониторинг — http://node.address:PORT/app/TOKEN/monitoring
      • управление — http://node.address:PORT/app/TOKEN/update

      Если узел запущен без опции --service-access-token, то TOKEN в запросе не указывается.
      Ответы выдаются в формате JSON.

      • запрос на узел без пароля на веб-интерфейс:
      • запрос на узел с паролем qwerty на веб-интерфейс:

      Мониторинг

      Интерфейс мониторинга выдает такую информацию:

      • version — версия узла
      • max_connections — максимальное кол-во TCP-соединений
      • max_peers — максимальное кол-во одновременно подсоединенных узлов
      • max_upload_slots — максимальное кол-во открытых слотов для раздачи
      • download_speed — текущая скорость загрузки данных (байт/с)
      • upload_speed — текущая скорость отдачи данных (байт/с)
      • connected_peers_count — кол-во подсоединенных узлов
      • connected_peers — список подсоединенных узлов (пустой, если не задана опция —stats-report-peers)
      • upload_slots — текущее кол-во слотов для раздачи

      Управление

      Для изменения параметров узла "на лету" нужно отправить запрос такого вида на веб-интерфейс:

      param1 и param2 задают названия параметров, которые необходимо обновить, value1 и value2 — новые значения для параметров.

      Доступные для обновления параметры:

      Фильтрация трафика

      Начиная с версии 3.0.2 добавлена возможность фильтровать трафик на спец. узлах (источнике, узле поддержки и стартовом узле). Фильтровать можно по ip-адресам либо по геотаргетингу. Правила для фильтрации должны быть вынесены в отдельный конфигурационный файл, путь к которому передается спец. узлу в параметре —ip-filter-config.

      Конфигурационный файл представляется собой текстовый файл в формате JSON с такой структурой:

      Раздел groups используется для создания именованных групп, на которые можно ссылать в других разделах файла. Каждая группа может состоять из массива ip-адресов (addresses) либо кодов стран (countries).

      Массив addresses может содержать как адреса отдельных хостов, так и адреса подсетей в формате xx.xx.xx.xx/yy. На данный момент разрешено использовать только подсети /24, /16 и /8.

      Массив countries должен содержать коды стран в верхнем регистре (согласно базе MaxMind)

      Раздел whitelist задает белый список. Узел отбивает соединения со всех адресов, которые не входят в белый список.

      Раздел blacklist задает черный список. Узел отбивает соединения со всех адресов, которые входят в черный список.

      Раздел limit_groups задает ограничения по максимальному количеству соединений для каждой группы (в процентах от общего максимального количества соединений).

      Содержание

      Where to download

      Linux

      You can download the latest server versions of the engine here:

      Windows

      • full package (engine + plug-in + player): http://dl.acestream.org/products/acestream-full/win/latest
      • only the engine: http://dl.acestream.org/win32/engine/AceStreamEngine_3.0.2.zip

      Android

      • engine + player: http://dl.acestream.org/products/acestream-full/andro >Changelog
      • ability to filter traffic at special nodes is added (look at Traffic filtration)
      • a large-scale optimization of all modules was held
      • bug, because of which some support nodes could lose connection with the source, was fixed
      • parameter --title became required (this parameter transfers "readable" name of broadcast which is displayed at users’ players during playback)
      • two required parameters for the source are added:
      • --quality — channel’s quality; possible values:
      • SD
      • HD
    • --category — channel’s category; possible values:
      • informational
      • entertaining
      • educational
      • movies
      • documentaries
      • sport
      • fashion
      • music
      • regional
      • ethnic
      • religion
      • teleshop
      • erotic_18_plus
      • other_18_plus
      • cyber_games
      • amateur
      • webcam
        • CPU usage was significantly optimized
        • memory leaks were eliminated
        • support nodes are added
        • options for configuration of private nodes and schemes of distribution of traffic between support nodes and a source are added

        How to install over the old version

        • download package for your OS
        • unzip to a temporary folder (for example, to /tmp/acestream)
        • copy appropriate files from temporary folder to root folders /usr/bin/ and /usr/share/acestream (all old files and folders can be deleted)

        IMPORTANT: For the work of a new engine package python-setuptools must be installed.

        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:

        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:

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

        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.

        Changes in launch parameters

        In a new version there are some differences on launch parameters.

        New flags for the engine launch in different modes

        • —stream-source-node (instead of —stream-source)
        • —stream-support-node (instead of —stream-node)

        New parameters for setting up cache

        • —live-cache-type (string) — cache type: disk — store the cache on the disk in the folder specified by parameter —cache-dir, memory — store the cache in random-access memory (by default: disk)
        • —live-cache-size (integer) — maximum size of the cache in bytes (by default: 209715200 bytes (200 Mb))

        New parameters for configuration of support nodes infrastructure

        • —private-node (0 or 1) — if you specify 1, the node will be private (by default: 0)
        • —download-from (string) — add the address to a list of nodes from which this node is allowed to receive data. The address must be specified in a format ipv4_address:port. This parameter may occur more than once.
        • —upload-to (string) — add the address to the list of nodes to which this node is allowed to give data. The address must be specified in a format ipv4_address:port. This parameter may occur more than once.
        • —monitor-node-ip (string) — ipv4 address of monitoring-server

        New parameters to launch the source

        • —metatracker (string) — add the address of metatracker to the transport file

        These parameters are not used any more

        • —stream-source (is changed to —stream-source-node)
        • —stream-node (is changed to —stream-support-node)
        • —add-authorized-peers (list of authorized peers is not added to transport file any more)
        • —private-source (is changed to —private-node)
        • —support-node
        • —source-node
        • —allow-source-download
        • —allow-support-download
        • —allow-peers-download

        New functional

        Setting up support nodes

        In a new version it is necessary to explicitly specify to support nodes from which nodes they have to download data. For this, parameter --download-from is used. A list of nodes, from which downloading is allowed, can be changed without restarting support node through node’s web-interface (look below). For example, if node-source is launched by address 192.168.1.2:7764 and we want to launch support node which loads data only from the source, a command to launch support node will be following:

        Private nodes

        Private node gives data only to nodes that explicitly are added to its list of allowed. In order to make a node private you have to launch it with a parameter --private-node 1. To add the address to the list of allowed to upload a parameter --upload-to is used. Both, node-source and support node, can be private. Private node repulses incoming connections from all addresses except specified by parameters --download-from, --upload-to and --monitor-node-ip. To filter only ip-address is used (port is not used). Parameter --monitor-node-ip sets ip-address of the monitoring server and is used in case if there is a need to provide monitoring of the private node (without specifying this parameter private node will repulse all requests from the monitoring server).

        Example of launching the private source which will give data only to support node from the previous example:

        Start nodes

        Start node is intended to provide the fastest possible start of a broadcast from users’ side.

        A special feature of the start node is a constant rotation of connections. When new incoming connections are received the start node terminates connections to nodes which were connected earlier and have already downloaded certain amount of data.

        To launch the engine in the start node mode parameter --stream-startup-node is used.

        The start node takes the same set of parameters as the support node.

        Example of launching the start node:

        Metatrackers

        Metatracker is a server which informs nodes about available trackers and start nodes.

        Metatracker’s URL is given at the source when creating a broadcast and is recorded to the transport file.

        Metatrackers allow to add trackers and/or start nodes for the broadcast automatically without the need to restart the broadcast and recreate the transport file.

        Example of launching a source with the metatracker:

        Metatracker accepts requests via HTTP protocol and gives responds in JSON format, therefore the metatracker can be implemented on the basis of any web server.

        When broadcast starts, each node sends to the metatracker HTTP GET request with parameter infohash (broadcast hash as a hex-string). Example of the request to the metatracker:

        • tracker_url_1, tracker_url_2 — trackers’ URL
        • node1_address, node2_address — start nodes’ addresses as strings in ip:port format (for example, 192.168.1.2:8632)
        • UPDATE_INTERVAL_IN_SECONDS — update interval in seconds (how often each client has to reapply to metatreker)

        Example of a server code on PHP:

        Node’s web-interface

        Every node has web-interface to view current status, as well as options to change some of the parameters "on the fly" (without restarting the node).

        Web-interface works on the main port of the node (specified by parameter --port).

        By default web-interface is available only from the same machine, from which the node was launched. To allow remote access, you have to launch the node with option --service-remote-access. Also you can set a password for web-interface to prevent unauthorized access, using option --service-access-token

        Full list of options to customize web-interface:

        • --stats-report-interval — frequency of node’s statistics update, in seconds (by default 60)
        • --stats-report-peers — if this option is set, a list of nodes that are currently connected to the node will be shown in monitoring (by default node list is not displayed).
        • --service-remote-access — allow remote access to web-interface
        • --service-access-token — set a password for web-interface

        Access to web-interface is performed via HTTP-GET request to the node’s port:

        • monitoring — http://node.address:PORT/app/TOKEN/monitoring
        • control — http://node.address:PORT/app/TOKEN/update

        If node was launched without option --service-access-token, then TOKEN is not specified in the request.
        Responses are given in JSON format.

        • request to the node without the password for web-interface:
        • request to the node with the password "qwerty" for web-interface:

        Monitoring

        Interface of monitoring gives the following information:

        • version — node’s version
        • max_connections — maximum number of TCP-connections
        • max_peers — maximum number of concurrently connected nodes
        • max_upload_slots — maximum number of opened upload slots
        • download_speed — current speed of data download (byte/s)
        • upload_speed — current speed of data upload (byte/s)
        • connected_peers_count — number of connected nodes
        • connected_peers — list of connected nodes (empty, if option —stats-report-peers is not set)
        • upload_slots — current number of upload slots

        Management

        To change node’s parameters "on the fly" you have to send a request of the following kind to web-interface:

        param1 and param2 set names of parameters that have to be updated, value1 and value2 are new values for the parameters.

        Available for updating parameters:

        Traffic filtration

        Starting from version 3.0.2 an ability to filter traffic at special nodes (source, support node and start node) was added. You can filter by ip-addresses or by geotargeting. Rules for the filtration should be put in a separate configuration file, path to which is passed in a special node in parameter —ip-filter-config.

        Configuration file is a text file in JSON format with the following structure:

        Section groups is used to create named groups, that can be referenced in other sections of the file. Each group may consist of an array ip-addresses (addresses) or country codes (countries).

        Array addresses may contain addresses of individual hosts, as well as addresses of subnetworks in the format xx.xx.xx.xx/yy. At this moment it is allowed to use only subnetworks /24, /16 and /8.

        Array countries has to contain country codes in uppercase (according to the base MaxMind)

        Section whitelist sets a white list. The node rejects connections from all addresses that are not included in a white list.

        Section blacklist sets a black list. The node rejects connections from all addresses from a black list.

        Section limit_groups sets limits on the maximum number of connections for each group (in percentage of the total maximum number of connections).

        Добавить комментарий

        Ваш адрес email не будет опубликован. Обязательные поля помечены *