Difference between revisions of "Streaming/en"
(→Встроенный трекер) |
(→Transition from versions 2.0.х to version 2.1 and higher) |
||
(34 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | ==Launching broadcast== |
− | === | + | ===Main terms=== |
− | + | *'''Source''' - a program that accepts broadcast's HTTP-stream and provides playback of broadcast using ACE Stream software. | |
− | ''' | + | *'''Support node''' - a program allowing to scale broadcast using additional server equipment and Internet-channels. |
− | + | *'''Client''' - ACE Stream software, which is used to play broadcast. | |
− | |||
− | |||
− | |||
− | |||
− | '' | ||
− | |||
− | |||
− | |||
− | + | ===Transition from versions 2.0.х to version 2.1 and higher=== | |
− | If you | + | From September, 10, 2013, upgraded version of the engine (2.1.6) for Ubuntu, Debian and CentOS is available. |
+ | Before using a new version for production, we recommend to test it on one or several broadcasts, if possible. | ||
+ | If you face any problems, please, write to the forum (https://forum.acestream.media/latest) or email 'support@acestream.net'. | ||
− | + | <span style="color: #900;">ATTENTION!</span> In the nearest future support for older versions will be stopped. | |
− | |||
− | + | <span style="color: #009;">IMPORTANT!</span> All broadcasts created via new version of Ace Stream (2.1 and higher) are not suppported by client software of old versions (2.0.х and lower). If you attempt to watch a new broadcast using the old engine, an error "Cannot load transport file" will appear. | |
− | |||
− | + | ====Changes in launch parameters==== | |
− | + | Some parameters of the launch of sources and support nodes from the command line have been changed, therefore the launch with the old command line will not work. | |
− | + | Main changes: | |
+ | * one executable file is used <tt>acestreamengine</tt>; different launch modes (a source, support node) are set by options: | ||
+ | ** instead of <tt>acestreamengine-stream</tt> you should launch <tt>acestreamengine --stream-source</tt> | ||
+ | ** instead of <tt>acestreamengine-node</tt> you should launch <tt>acestreamengine --stream-node</tt> | ||
+ | ** instead of <tt>acestreamengine-client-console</tt> you should launch <tt>acestreamengine --client-console</tt> | ||
+ | ** instead of <tt>acestreamengine-client-gtk</tt> you should launch <tt>acestreamengine --client-gtk</tt> | ||
+ | * log system is changed. In old versions the engine output all debug information into STDERR and redirecting the output was required to write logs into a file. In a new version it is possible to define in options, where to write logs - into STDOUT, into STDERR, into a file or syslog. Rotation of logs by their size is supported for files. You can read description of all options in [[#acestreamengine command|acestreamengine command]] | ||
− | + | ===Transition from versions 2.1.х to version 3.0.x and higher=== | |
+ | See main article about Ace Stream v.3 - https://wiki.acestream.media/AceStream_3.0/en | ||
− | + | ===acestreamengine command=== | |
− | + | Starting from version 2.1 Ace Stream Engine for Linux represents a single executable file <tt>acestreamengine</tt>, which works in different modes, depending on specified parameters. | |
− | + | Work mode is set by one of the following parameters: | |
− | + | * <tt>--client-console</tt> - launch engine in a client mode from console (without a graphic interface) | |
+ | * <tt>--client-wx</tt> - launch engine in a client mode with a graphic interface WX | ||
+ | * <tt>--client-gtk</tt> - launch engine in a client mode with a graphic interface GTK | ||
+ | * <tt>--stream-source</tt> - launch a source of broadcast | ||
+ | * <tt>--stream-node</tt> - launch a support node | ||
+ | * <tt>--create-transport</tt> - create a transport file from existing content (VOD) | ||
+ | * <tt>--create-transport-multi</tt> - create a multi-stream transport file | ||
+ | * <tt>--version</tt> - show engine version | ||
− | + | Each work mode has their own required and not required parameters, described in appropriate sections. | |
− | + | Also all work modes have common parameters that manage the output of debug information. | |
− | + | * <tt>--log-stdout</tt> - deduce information in STDOUT | |
− | + | * <tt>--log-stderr</tt> - deduce information in STDERR | |
− | + | * <tt>--log-file PATH</tt> - deduce information in a specified file | |
− | + | * <tt>--log-max-size SIZE</tt> - maximum file size (bytes) | |
− | + | * <tt>--log-backup-count COUNT</tt> - how many backup logs have to be stored (backup log file is created when a limit, specified by a parameter --log-max-size, is reached) | |
− | + | * <tt>--log-file-buffer SIZE</tt> - enable buffering of output into the file (using buffer of specified size in bytes) | |
− | + | * <tt>--log-syslog HOST</tt> - deduce information in syslog-server at the specified address | |
− | + | * <tt>--log-syslog-port PORT</tt> - syslog-server port | |
− | + | * <tt>--log-syslog-facility FACILITY</tt> - used facility | |
− | + | * <tt>--log-syslog-buffer SIZE</tt> - enable buffering of output into syslog (using buffer of specified size in bytes) | |
− | * | ||
− | |||
− | |||
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * | ||
− | |||
− | |||
===Common work scheme === | ===Common work scheme === | ||
Line 81: | Line 60: | ||
The source accepts HTTP-stream to input (at this moment HTTP-streams with MPEG-TS encapsulation are supported) with original broadcast and creates a file with acelive extension after the launch. This file is a unique identifier of broadcast and it is used for connection and playback by clients. | The source accepts HTTP-stream to input (at this moment HTTP-streams with MPEG-TS encapsulation are supported) with original broadcast and creates a file with acelive extension after the launch. This file is a unique identifier of broadcast and it is used for connection and playback by clients. | ||
− | ===Syntax of acestreamengine-stream command=== | + | ===Syntax of acestreamengine --stream-source command=== |
− | <tt>acestreamengine-stream</tt> command launches broadcast source. | + | <tt>acestreamengine --stream-source</tt> command launches broadcast source. |
''required parameters'' | ''required parameters'' | ||
*<tt>--name NAME</tt> - broadcast name (this name is used when creating acelive and other service files) | *<tt>--name NAME</tt> - broadcast name (this name is used when creating acelive and other service files) | ||
*<tt>--source SOURCE</tt> - source (link to http-stream) | *<tt>--source SOURCE</tt> - source (link to http-stream) | ||
− | *<tt>--bitrate BITRATE</tt> - average bitrate of stream in | + | *<tt>--bitrate BITRATE</tt> - average bitrate of stream in bytes per second |
''optional parameters'' | ''optional parameters'' | ||
Line 94: | Line 73: | ||
*<tt>--cache-dir CACHE_DIR</tt> - directory for creating service files (broadcast cache and others) | *<tt>--cache-dir CACHE_DIR</tt> - directory for creating service files (broadcast cache and others) | ||
*<tt>--publish-dir PUBLISH_DIR</tt> - directory, in which acelive-file will be created | *<tt>--publish-dir PUBLISH_DIR</tt> - directory, in which acelive-file will be created | ||
− | *<tt>--piecesize PIECESIZE</tt> - piece size in | + | *<tt>--piecesize PIECESIZE</tt> - piece size in bytes, power of two (if it's not specified, it's set automatically depending on bitrate) |
*<tt>--duration DURATION</tt> - size of broadcast cache in format HH:MM:SS (by default, one hour: 01:00:00) | *<tt>--duration DURATION</tt> - size of broadcast cache in format HH:MM:SS (by default, one hour: 01:00:00) | ||
*<tt>--host HOST</tt> - set address of local tracker manually | *<tt>--host HOST</tt> - set address of local tracker manually | ||
Line 106: | Line 85: | ||
*<tt>--provider-key PROVIDER_KEY</tt> - provider's key (only for commercial broadcasts) | *<tt>--provider-key PROVIDER_KEY</tt> - provider's key (only for commercial broadcasts) | ||
*<tt>--maxclients MAXCLIENTS</tt> - maximum number of peers, on which data from the source are given simultaneously | *<tt>--maxclients MAXCLIENTS</tt> - maximum number of peers, on which data from the source are given simultaneously | ||
− | *<tt>-- | + | *<tt>--log-debug DEBUG</tt> - set the debug level (default is 0 - minimum log level) |
− | *<tt>-- | + | *<tt>--source-read-timeout SECONDS</tt> - timeout for reading data from the original source (in seconds). Default is 30. |
− | *<tt>-- | + | *<tt>--source-reconnect-interval SECONDS</tt> - interval is seconds, after which the engine will try to reconnect to the original source in case of connection lost. Default is 5. |
+ | *<tt>--pid-file-dir PATH</tt> - the directory where engine's pid file is created. Default is /tmp. | ||
+ | *<tt>--provider-key</tt> - provider key (for an affiliate program) | ||
+ | *<tt>--sid</tt> - content identificator for statistics(for an affiliate program) | ||
+ | *<tt>--permanent</tt> - mark the broadcast as 24/7 (it's available all the time) | ||
+ | *<tt>--date-start YYYY-MM-DD HH:mm:ss</tt> - set the data and time of the broadcast start (for the broadcasts which runs during a limited time) | ||
+ | *<tt>--date-end YYYY-MM-DD HH:mm:ss</tt> - set the data and time of the broadcast end(for the broadcasts which runs during a limited time) | ||
+ | *<tt>--premium</tt> - request a "premium" status for the broadcast | ||
+ | *<tt>--upload-limit</tt> - limit upload speed (bytes/s, default is 0 - don't limit) | ||
+ | *<tt>--max-connections</tt> - limit total number of connections (default is 1000) | ||
+ | *<tt>--max-peers</tt> - limit number of connections to other peers (default is 50) | ||
+ | *<tt>--service-remote-access</tt> - enable remote statistics | ||
+ | *<tt>--service-access-token</tt> - password for remote statistics access | ||
+ | *<tt>--stats-report-interval</tt> - interval in seconds between internal statistics update (default is 60) | ||
+ | *<tt>--stats-report-peers</tt> - update information about connected peers in the internal statistics (increases CPU load) | ||
''additional'' | ''additional'' | ||
*<tt>-h, --help</tt> - show commands' description | *<tt>-h, --help</tt> - show commands' description | ||
− | === Syntax of acestreamengine-node command=== | + | === Syntax of acestreamengine --stream-node command=== |
− | <tt>acestreamengine-node</tt> command launches support node. | + | <tt>acestreamengine --stream-node</tt> command launches support node. |
''required parameters'' | ''required parameters'' | ||
Line 127: | Line 120: | ||
*<tt>--allow-support-download</tt> - allow receiving data from other support nodes | *<tt>--allow-support-download</tt> - allow receiving data from other support nodes | ||
*<tt>--allow-peers-download</tt> - allow receiving data from ordinary peers | *<tt>--allow-peers-download</tt> - allow receiving data from ordinary peers | ||
− | *<tt>--max- | + | *<tt>--max-connections MAX_CONNECTIONS</tt> - limit number of total connections (default is 1000) |
− | *<tt>--max- | + | *<tt>--max-peers MAX_PEERS</tt> - limit number of connections to other peers (default is 50) |
*<tt>--max-upload-slots MAX_UPLOAD_SLOTS</tt> - maximum number of peers, on which data from support node are given simultaneously (by default: 7) | *<tt>--max-upload-slots MAX_UPLOAD_SLOTS</tt> - maximum number of peers, on which data from support node are given simultaneously (by default: 7) | ||
− | *<tt>--max-download-speed MAX_DOWNLOAD_SPEED</tt> - maximum download speed ( | + | *<tt>--max-download-speed MAX_DOWNLOAD_SPEED</tt> - maximum download speed (byte/s). By default: 0 (no restrictions). |
− | *<tt>--max-upload-speed MAX_UPLOAD_SPEED</tt> - maximum upload speed ( | + | *<tt>--max-upload-speed MAX_UPLOAD_SPEED</tt> - maximum upload speed (byte/s). By default: 0 (no restrictions). |
− | *<tt>-- | + | *<tt>--log-debug DEBUG</tt> - set the debug level (default is 0 - minimum log level) |
− | *<tt>-- | + | *<tt>--service-remote-access</tt> - enable remote statistics |
− | *<tt>--stats-report-interval | + | *<tt>--service-access-token</tt> - password for remote statistics access |
− | *<tt>-- | + | *<tt>--stats-report-interval</tt> - interval in seconds between internal statistics update (default is 60) |
+ | *<tt>--stats-report-peers</tt> - update information about connected peers in the internal statistics (increases CPU load) | ||
''additional'' | ''additional'' | ||
Line 145: | Line 139: | ||
When organizing broadcast with many users, we recommend to disable embedded tracker and replace it with external tracker with a good productivity (for example, [http://xbtt.sourceforge.net/tracker/ XBT Tracker]). | When organizing broadcast with many users, we recommend to disable embedded tracker and replace it with external tracker with a good productivity (for example, [http://xbtt.sourceforge.net/tracker/ XBT Tracker]). | ||
− | === | + | ===Authorized nodes=== |
− | + | Client have to establish connection with at least two other nodes or an authorized node, to be connected to broadcast and start playback. Authorized node is a node, which was marked by broadcast's creator as a "trustworthy". Usually it's a broadcast source and/or support nodes. | |
− | + | The latest versions of ACE Stream software support using list of authorized nodes in acelive-file. For this <tt>--add-authorized-peers</tt> option is set when creating broadcast, after this the list of authorized nodes is created and added to acelive-file. Broadcast source (if it's not private) and all specified support nodes are in the list of authorized nodes. Clients that received this acelive-file use the list to determine whether a node is authorized. | |
− | + | If the list of authorized nodes was not added to acelive-file or an old version of ACE Stream, which doesn't understand this list, is installed, then authorized node is a node, IP address of which matches address of the first tracker from trackers' list. If embedded tracker is enabled on the source, it will be the first one on the list and clients will consider the source as authorized node. If embedded tracker is disabled, to support other clients we recommend to put on the first place tracker, located on the same server as broadcast source (so addresses of the first tracker and the source matched) or use at least one support node (so clients, when starting broadcast, could connect to two peers simultaneously, even if nobody watches broadcast). | |
− | === | + | ===Examples=== |
− | + | For examples let's assume that there is a local network with three servers: | |
− | *192.168.1.1 - | + | *192.168.1.1 - server for the source |
− | *192.168.1.2 - | + | *192.168.1.2 - server for support node |
− | *192.168.1.3 - | + | *192.168.1.3 - server for support node |
− | *192.168.1.100 - | + | *192.168.1.100 - server that gives original broadcast's stream (HTTP MPEG-TS) at <nowiki>http://192.168.1.100/stream</nowiki> (average bitrate of stream - 300 000 byte/s) |
− | + | It's assumed that on server 192.168.1.1 there is a web-server with a core directory <tt>/home/www</tt> and two other directories: | |
− | *<tt>/home/www/streams</tt> - | + | *<tt>/home/www/streams</tt> - for keeping acelive-files, which will be available for downloading by a link like <tt><nowiki>http://192.168.1.1/streams/test.acelive</nowiki></tt> |
− | *<tt>/tmp/streams</tt> - | + | *<tt>/tmp/streams</tt> - for keeping cache and service files of broadcast |
− | ==== | + | ====Source with embedded tracker==== |
− | + | This is the easiest way to launch broadcast that does not require launching support nodes and installing additional trackers. This method is suitable for broadcasts with a small number of users. | |
− | + | We launch the source on server 192.168.1.1: | |
− | <tt>acestreamengine-stream \ | + | <tt>acestreamengine --stream-source \ |
--name "test" \ | --name "test" \ | ||
− | --title " | + | --title "Test broadcast" \ |
--source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | --source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | ||
--bitrate 300000 \ | --bitrate 300000 \ | ||
--publish-dir "/home/www/streams" \ | --publish-dir "/home/www/streams" \ | ||
--cache-dir "/tmp/streams" \ | --cache-dir "/tmp/streams" \ | ||
− | --add-authorized-peers | + | --add-authorized-peers</tt> |
− | |||
− | + | The last line is used to write logs into file /tmp/test-source.log. By default <tt>acestreamengine --stream-source</tt> outputs all debug information in the STDOUT. | |
− | + | <tt>--add-authorized-peers</tt> option adds the list of authorized nodes to acelive-file (in this case, it's the source: 192.168.1.1). | |
− | + | After broadcast's launch a file test.acelive will be created in directory /home/www/streams, in directory <tt>/tmp/streams</tt> such files will be created: | |
− | *<tt>test</tt> - | + | *<tt>test</tt> - broadcast cache. This file's size is approximately equal to stream_duration_in_seconds (<tt>--duration</tt> option, by default: 1 hour) * bitrate byte |
− | *<tt>test.restart</tt> - | + | *<tt>test.restart</tt> - information for correct restart of broadcast is kept here |
− | *<tt>test.sauth</tt> - | + | *<tt>test.sauth</tt> - key for a broadcast's digital signature |
− | + | To watch broadcasts clients can download broadcast file at <tt><nowiki>http://192.168.1.1/streams/test.acelive</nowiki></tt> and start it in ACE Stream player or use other ways ([[Ways to watch broadcasts]]). | |
− | ==== | + | ====Source with external tracker==== |
− | + | If broadcast involves a large number of users, it's better to use external tracker and disable embedded one (to reduce burden on the source). | |
− | + | We recommed to use [http://xbtt.sourceforge.net/tracker/ XBT Tracker] as external tracker. | |
− | + | In this example we assume that XBT Tracker is installed and launched on server 192.168.1.1. | |
− | + | Now broadcast's launch will look like: | |
− | <tt>acestreamengine-stream \ | + | <tt>acestreamengine --stream-source \ |
--name "test" \ | --name "test" \ | ||
− | --title " | + | --title "Test broadcast" \ |
--source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | --source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | ||
--bitrate 300000 \ | --bitrate 300000 \ | ||
Line 204: | Line 197: | ||
--add-authorized-peers \ | --add-authorized-peers \ | ||
--skip-internal-tracker \ | --skip-internal-tracker \ | ||
− | --tracker "udp://192.168.1.1:2710/announce" | + | --tracker "udp://192.168.1.1:2710/announce"</tt> |
− | + | ||
+ | <tt>--skip-internal-tracker</tt> option disconnects embedded tracker, <tt>--tracker</tt> option connects external tracker. | ||
− | + | ====Source with two support nodes==== | |
+ | If there is not enough upstream bandwidth for normal work of broadcast on the source, support nodes can be used. Support node is often a node that receives data from the source and gives to clients (though support node can also receive data from other support nodes and even clients, depending on its settings). It makes sense to install support node on a separate server with a good width of output channel. | ||
− | + | To make a scheme with support nodes work with maximum efficiency, addresses of these nodes must be given to the source | |
− | + | using <tt>--support-node</tt> option: | |
− | + | <tt>acestreamengine --stream-source \ | |
− | <tt>acestreamengine-stream \ | ||
--name "test" \ | --name "test" \ | ||
− | --title " | + | --title "Test broadcast" \ |
--source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | --source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | ||
--bitrate 300000 \ | --bitrate 300000 \ | ||
Line 225: | Line 219: | ||
--tracker "udp://192.168.1.1:2710/announce" \ | --tracker "udp://192.168.1.1:2710/announce" \ | ||
--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"</tt> |
− | |||
− | + | Launch support nodes on servers 192.168.1.2 and 192.168.1.3 (commands are the same): | |
− | <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</tt> |
− | |||
− | + | Option <tt>--source-node</tt> sets source address. | |
− | + | Option <tt>--allow-source-download</tt> allows support node to download data from the source (downloading from other support nodes and clients in this case is forbidden). | |
− | + | To allow support nodes to download data from other suppport nodes, you should set a list of other nodes using <tt>--support-node</tt> option and allow downloading using <tt>--allow-support-download</tt> option. | |
− | + | On server 192.168.1.2 it will look like: | |
− | <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 249: | Line 241: | ||
--allow-source-download \ | --allow-source-download \ | ||
--support-node "192.168.1.3:8621" \ | --support-node "192.168.1.3:8621" \ | ||
− | --allow-support-download | + | --allow-support-download</tt> |
− | |||
− | + | On server 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 259: | Line 250: | ||
--allow-source-download \ | --allow-source-download \ | ||
--support-node "192.168.1.2:8621" \ | --support-node "192.168.1.2:8621" \ | ||
− | --allow-support-download | + | --allow-support-download</tt> |
− | |||
− | ==== | + | ====Private source with two support nodes==== |
− | + | Sometimes it may be necessary to prevent clients from direct access to broadcast source. For example, the source may be located on server in protected area without access from the outer world. In this case broadcast can be organized by the following scheme: | |
− | * | + | *the source is made private (only support nodes, specified explicitly, can receive data from it) |
− | * | + | *support nodes receive data from the source and give to clients |
− | * | + | *clients receive data from support nodes |
− | + | To make the source private, option <tt>--private-source</tt> must be specified: | |
− | <tt>acestreamengine-stream \ | + | <tt>acestreamengine --stream-source \ |
--name "test" \ | --name "test" \ | ||
− | --title " | + | --title "Test broadcast" \ |
--source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | --source "<nowiki>http://192.168.1.100/stream</nowiki>" \ | ||
--bitrate 300000 \ | --bitrate 300000 \ | ||
Line 282: | Line 272: | ||
--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" \ | ||
− | --private-source | + | --private-source</tt> |
− | |||
− | + | Notice that in this configuration tracker's address is changed to <tt>udp://192.168.1.2:2710/announce</tt>. It was made to support old versions of clients, which do not process a list of authorized peers (more details here [[#Authorized peers|Authorized peers]]). | |
− | + | Launch support nodes on servers 192.168.1.2 and 192.168.1.3 as usual: | |
− | + | <tt>acestreamengine --stream-node \ | |
− | <tt>acestreamengine-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</tt> |
− | + | ||
+ | ====Recent scripts and configuration examples==== | ||
+ | Python-based launch scripts with configuration examples and some brief explanation available via https://github.com/acestream/streaming-utils |
Latest revision as of 14:49, 17 October 2021
Contents
- 1 Launching broadcast
- 1.1 Main terms
- 1.2 Transition from versions 2.0.х to version 2.1 and higher
- 1.3 Transition from versions 2.1.х to version 3.0.x and higher
- 1.4 acestreamengine command
- 1.5 Common work scheme
- 1.6 Syntax of acestreamengine --stream-source command
- 1.7 Syntax of acestreamengine --stream-node command
- 1.8 Embedded tracker
- 1.9 Authorized nodes
- 1.10 Examples
Launching broadcast
Main terms
- Source - a program that accepts broadcast's HTTP-stream and provides playback of broadcast using ACE Stream software.
- Support node - a program allowing to scale broadcast using additional server equipment and Internet-channels.
- Client - ACE Stream software, which is used to play broadcast.
Transition from versions 2.0.х to version 2.1 and higher
From September, 10, 2013, upgraded version of the engine (2.1.6) for Ubuntu, Debian and CentOS is available. Before using a new version for production, we recommend to test it on one or several broadcasts, if possible. If you face any problems, please, write to the forum (https://forum.acestream.media/latest) or email 'support@acestream.net'.
ATTENTION! In the nearest future support for older versions will be stopped.
IMPORTANT! All broadcasts created via new version of Ace Stream (2.1 and higher) are not suppported by client software of old versions (2.0.х and lower). If you attempt to watch a new broadcast using the old engine, an error "Cannot load transport file" will appear.
Changes in launch parameters
Some parameters of the launch of sources and support nodes from the command line have been changed, therefore the launch with the old command line will not work.
Main changes:
- one executable file is used acestreamengine; different launch modes (a source, support node) are set by options:
- instead of acestreamengine-stream you should launch acestreamengine --stream-source
- instead of acestreamengine-node you should launch acestreamengine --stream-node
- instead of acestreamengine-client-console you should launch acestreamengine --client-console
- instead of acestreamengine-client-gtk you should launch acestreamengine --client-gtk
- log system is changed. In old versions the engine output all debug information into STDERR and redirecting the output was required to write logs into a file. In a new version it is possible to define in options, where to write logs - into STDOUT, into STDERR, into a file or syslog. Rotation of logs by their size is supported for files. You can read description of all options in acestreamengine command
Transition from versions 2.1.х to version 3.0.x and higher
See main article about Ace Stream v.3 - https://wiki.acestream.media/AceStream_3.0/en
acestreamengine command
Starting from version 2.1 Ace Stream Engine for Linux represents a single executable file acestreamengine, which works in different modes, depending on specified parameters.
Work mode is set by one of the following parameters:
- --client-console - launch engine in a client mode from console (without a graphic interface)
- --client-wx - launch engine in a client mode with a graphic interface WX
- --client-gtk - launch engine in a client mode with a graphic interface GTK
- --stream-source - launch a source of broadcast
- --stream-node - launch a support node
- --create-transport - create a transport file from existing content (VOD)
- --create-transport-multi - create a multi-stream transport file
- --version - show engine version
Each work mode has their own required and not required parameters, described in appropriate sections.
Also all work modes have common parameters that manage the output of debug information.
- --log-stdout - deduce information in STDOUT
- --log-stderr - deduce information in STDERR
- --log-file PATH - deduce information in a specified file
- --log-max-size SIZE - maximum file size (bytes)
- --log-backup-count COUNT - how many backup logs have to be stored (backup log file is created when a limit, specified by a parameter --log-max-size, is reached)
- --log-file-buffer SIZE - enable buffering of output into the file (using buffer of specified size in bytes)
- --log-syslog HOST - deduce information in syslog-server at the specified address
- --log-syslog-port PORT - syslog-server port
- --log-syslog-facility FACILITY - used facility
- --log-syslog-buffer SIZE - enable buffering of output into syslog (using buffer of specified size in bytes)
Common work scheme
Broadcast organization starts from launching the source (command acestreamengine-stream). The source accepts HTTP-stream to input (at this moment HTTP-streams with MPEG-TS encapsulation are supported) with original broadcast and creates a file with acelive extension after the launch. This file is a unique identifier of broadcast and it is used for connection and playback by clients.
Syntax of acestreamengine --stream-source command
acestreamengine --stream-source command launches broadcast source.
required parameters
- --name NAME - broadcast name (this name is used when creating acelive and other service files)
- --source SOURCE - source (link to http-stream)
- --bitrate BITRATE - average bitrate of stream in bytes per second
optional parameters
- --title TITLE - "readable" broadcast name (this name is shown to clients). If it's not specified, it's taken from --name
- --destdir DESTDIR - old parameter, it's better to use --cache-dir and --publish-dir
- --cache-dir CACHE_DIR - directory for creating service files (broadcast cache and others)
- --publish-dir PUBLISH_DIR - directory, in which acelive-file will be created
- --piecesize PIECESIZE - piece size in bytes, power of two (if it's not specified, it's set automatically depending on bitrate)
- --duration DURATION - size of broadcast cache in format HH:MM:SS (by default, one hour: 01:00:00)
- --host HOST - set address of local tracker manually
- --port PORT - port, where the engine works
- --skip-internal-tracker - disable local tracker
- --add-authorized-peers - add list of authorized peers to acelive file
- --private-source - make the source private
- --support-node SUPPORT_NODE - add support node (in format ip:port). This parameter may appear multiple times if several support nodes have to be added.
- --tracker TRACKER - add tracker(announce url). This parameter may appear multiple times.
- --trackers TRACKERS - old format for adding trackers (announce url list separated by commas)
- --provider-key PROVIDER_KEY - provider's key (only for commercial broadcasts)
- --maxclients MAXCLIENTS - maximum number of peers, on which data from the source are given simultaneously
- --log-debug DEBUG - set the debug level (default is 0 - minimum log level)
- --source-read-timeout SECONDS - timeout for reading data from the original source (in seconds). Default is 30.
- --source-reconnect-interval SECONDS - interval is seconds, after which the engine will try to reconnect to the original source in case of connection lost. Default is 5.
- --pid-file-dir PATH - the directory where engine's pid file is created. Default is /tmp.
- --provider-key - provider key (for an affiliate program)
- --sid - content identificator for statistics(for an affiliate program)
- --permanent - mark the broadcast as 24/7 (it's available all the time)
- --date-start YYYY-MM-DD HH:mm:ss - set the data and time of the broadcast start (for the broadcasts which runs during a limited time)
- --date-end YYYY-MM-DD HH:mm:ss - set the data and time of the broadcast end(for the broadcasts which runs during a limited time)
- --premium - request a "premium" status for the broadcast
- --upload-limit - limit upload speed (bytes/s, default is 0 - don't limit)
- --max-connections - limit total number of connections (default is 1000)
- --max-peers - limit number of connections to other peers (default is 50)
- --service-remote-access - enable remote statistics
- --service-access-token - password for remote statistics access
- --stats-report-interval - interval in seconds between internal statistics update (default is 60)
- --stats-report-peers - update information about connected peers in the internal statistics (increases CPU load)
additional
- -h, --help - show commands' description
Syntax of acestreamengine --stream-node command
acestreamengine --stream-node command launches support node.
required parameters
- --url URL> - link to acelive file of broadcast
optional parameters
- --port PORT - port(by default: 8621)
- --state-dir STATE_DIR - directory for temporary files (it's deleted after support node installation)
- --source-node SOURCE_NODE - address of broadcast source (ip:port)
- --support-node SUPPORT_NODE - add address of another support node (ip:port). This parameter may appear multiple times.
- --allow-source-download - allow receiving data from the source
- --allow-support-download - allow receiving data from other support nodes
- --allow-peers-download - allow receiving data from ordinary peers
- --max-connections MAX_CONNECTIONS - limit number of total connections (default is 1000)
- --max-peers MAX_PEERS - limit number of connections to other peers (default is 50)
- --max-upload-slots MAX_UPLOAD_SLOTS - maximum number of peers, on which data from support node are given simultaneously (by default: 7)
- --max-download-speed MAX_DOWNLOAD_SPEED - maximum download speed (byte/s). By default: 0 (no restrictions).
- --max-upload-speed MAX_UPLOAD_SPEED - maximum upload speed (byte/s). By default: 0 (no restrictions).
- --log-debug DEBUG - set the debug level (default is 0 - minimum log level)
- --service-remote-access - enable remote statistics
- --service-access-token - password for remote statistics access
- --stats-report-interval - interval in seconds between internal statistics update (default is 60)
- --stats-report-peers - update information about connected peers in the internal statistics (increases CPU load)
additional
- -h, --help - show commands' description
Embedded tracker
Embedded tracker is a tracker embedded into broadcast source. If it's not disabled by --skip-internal-tracker option, its address will be added to acelive-file automatically.
When organizing broadcast with many users, we recommend to disable embedded tracker and replace it with external tracker with a good productivity (for example, XBT Tracker).
Authorized nodes
Client have to establish connection with at least two other nodes or an authorized node, to be connected to broadcast and start playback. Authorized node is a node, which was marked by broadcast's creator as a "trustworthy". Usually it's a broadcast source and/or support nodes.
The latest versions of ACE Stream software support using list of authorized nodes in acelive-file. For this --add-authorized-peers option is set when creating broadcast, after this the list of authorized nodes is created and added to acelive-file. Broadcast source (if it's not private) and all specified support nodes are in the list of authorized nodes. Clients that received this acelive-file use the list to determine whether a node is authorized.
If the list of authorized nodes was not added to acelive-file or an old version of ACE Stream, which doesn't understand this list, is installed, then authorized node is a node, IP address of which matches address of the first tracker from trackers' list. If embedded tracker is enabled on the source, it will be the first one on the list and clients will consider the source as authorized node. If embedded tracker is disabled, to support other clients we recommend to put on the first place tracker, located on the same server as broadcast source (so addresses of the first tracker and the source matched) or use at least one support node (so clients, when starting broadcast, could connect to two peers simultaneously, even if nobody watches broadcast).
Examples
For examples let's assume that there is a local network with three servers:
- 192.168.1.1 - server for the source
- 192.168.1.2 - server for support node
- 192.168.1.3 - server for support node
- 192.168.1.100 - server that gives original broadcast's stream (HTTP MPEG-TS) at http://192.168.1.100/stream (average bitrate of stream - 300 000 byte/s)
It's assumed that on server 192.168.1.1 there is a web-server with a core directory /home/www and two other directories:
- /home/www/streams - for keeping acelive-files, which will be available for downloading by a link like http://192.168.1.1/streams/test.acelive
- /tmp/streams - for keeping cache and service files of broadcast
Source with embedded tracker
This is the easiest way to launch broadcast that does not require launching support nodes and installing additional trackers. This method is suitable for broadcasts with a small number of users.
We launch the source on server 192.168.1.1:
acestreamengine --stream-source \ --name "test" \ --title "Test broadcast" \ --source "http://192.168.1.100/stream" \ --bitrate 300000 \ --publish-dir "/home/www/streams" \ --cache-dir "/tmp/streams" \ --add-authorized-peers
The last line is used to write logs into file /tmp/test-source.log. By default acestreamengine --stream-source outputs all debug information in the STDOUT.
--add-authorized-peers option adds the list of authorized nodes to acelive-file (in this case, it's the source: 192.168.1.1).
After broadcast's launch a file test.acelive will be created in directory /home/www/streams, in directory /tmp/streams such files will be created:
- test - broadcast cache. This file's size is approximately equal to stream_duration_in_seconds (--duration option, by default: 1 hour) * bitrate byte
- test.restart - information for correct restart of broadcast is kept here
- test.sauth - key for a broadcast's digital signature
To watch broadcasts clients can download broadcast file at http://192.168.1.1/streams/test.acelive and start it in ACE Stream player or use other ways (Ways to watch broadcasts).
Source with external tracker
If broadcast involves a large number of users, it's better to use external tracker and disable embedded one (to reduce burden on the source).
We recommed to use XBT Tracker as external tracker.
In this example we assume that XBT Tracker is installed and launched on server 192.168.1.1. Now broadcast's launch will look like:
acestreamengine --stream-source \ --name "test" \ --title "Test broadcast" \ --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"
--skip-internal-tracker option disconnects embedded tracker, --tracker option connects external tracker.
Source with two support nodes
If there is not enough upstream bandwidth for normal work of broadcast on the source, support nodes can be used. Support node is often a node that receives data from the source and gives to clients (though support node can also receive data from other support nodes and even clients, depending on its settings). It makes sense to install support node on a separate server with a good width of output channel.
To make a scheme with support nodes work with maximum efficiency, addresses of these nodes must be given to the source using --support-node option:
acestreamengine --stream-source \ --name "test" \ --title "Test broadcast" \ --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"
Launch support nodes on servers 192.168.1.2 and 192.168.1.3 (commands are the same):
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
Option --source-node sets source address.
Option --allow-source-download allows support node to download data from the source (downloading from other support nodes and clients in this case is forbidden).
To allow support nodes to download data from other suppport nodes, you should set a list of other nodes using --support-node option and allow downloading using --allow-support-download option.
On server 192.168.1.2 it will look like:
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
On server 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
Private source with two support nodes
Sometimes it may be necessary to prevent clients from direct access to broadcast source. For example, the source may be located on server in protected area without access from the outer world. In this case broadcast can be organized by the following scheme:
- the source is made private (only support nodes, specified explicitly, can receive data from it)
- support nodes receive data from the source and give to clients
- clients receive data from support nodes
To make the source private, option --private-source must be specified:
acestreamengine --stream-source \ --name "test" \ --title "Test broadcast" \ --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
Notice that in this configuration tracker's address is changed to udp://192.168.1.2:2710/announce. It was made to support old versions of clients, which do not process a list of authorized peers (more details here Authorized peers). Launch support nodes on servers 192.168.1.2 and 192.168.1.3 as usual:
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
Recent scripts and configuration examples
Python-based launch scripts with configuration examples and some brief explanation available via https://github.com/acestream/streaming-utils