Helix DNA Producer 10.0 Server File Reference |
![]() |
This document describes Helix DNA Producer server files. Server files are XML formatted text files that specify all settings needed for
broadcast. The server file is composed of XML elements organized in a hierarchal tree
structure: There are three possible types of server files, push, pull or g2Push as shown below:
Push Server | Pull Server | G2 Push Server (Legacy) |
|
|
|
The above hierarchy represents all the major sections in a audience file or the audiences section of a job file. Each of the sections are documented below.
XML documents are composed of elements and attributes. Elements may contain a simple value or other elements. Elements that contain simple values are referred to as properties. An example of a property is <transport>tcp</transport>. Elements that contain other elements are referred to as sections. Examples of a section is the pushServer section above which includes properties for a push type broadcast.
Server files may be read, created or modified through Helix DNA Producer applications or SDK as well as any text or XML document editor. Information on how to edit Helix DNA Producer XML settings files is available in the Editing XML Files Reference. The remainder of this document provides information on the properties in the outline above.
Helix DNA Producer Server files are given a special file extension. The file extension for a server file is ".rpsd" which stands for RealNetworks Producer Server File.
Document Root |
[Back to Top] |
An XML document contains one and only one root. The document root for server files is server. Nested within the server element are several properties. The job element also contains three attributes, xmlns, xmlns:xsi: xsi:type and xsi:schemaLocation.
The outline below shows the structure of the root element of the server file:
<destination xsi:type="pushServer" xmlns="http://ns.real.com/tools/server.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ns.real.com/tools/server.2.0 http://ns.real.com/tools/server.2.0.xsd">The contents of a server section varies depending on the type of server identified in the xsi:type attribute. There are three known types (pushServer, pullServer and g2PushServer) and more types may be added to support custom plug-ins that extend Helix DNA Producer broadcast support. The properties for each of the three known types are described in the sections below.
The attributes of the server element are described in this section of the document. The following sections of the document describe the properties for pushServer, pullServer and g2PushServer types.
The server tag contains four attributes:
These attributes are described below.
XML Namespace Attribute xmlns | [Top] - [Top of Section] |
The xmlns attribute stands for XML Namespace. This setting is used to store the type and version of an XML file for purposes of validation.
Default:
http://ns.real.com/tools/server.2.0
Values:
Helix DNA Producer 10 server files are given a version of 2.0. If a newer
version is encountered, the Helix DNA Producer SDK or command line
application will refuse to open the server definition.
Example:
xmlns="http://ns.real.com/tools/server.2.0"
XML Schema Instance Namespace Attribute xmlns:xsi | [Top] - [Top of Section] |
The xsi:schemaLocation attribute provided information on where to locate the XML Schema file used to validate the server file. The value of the xsi:schemaLocation is a space separated list of namespace/URI pairs.
Default:
http://www.w3.org/2001/XMLSchema-instance
Values:
A string containing the XML Schema Instance namespace. The XML Schema Instance namespace
provides functionality for handling XML schema validation. The definitions of xsi:type and
xsi:schemaLocation used in Heilx Produer settings files are provided by this namespace. More information on the
xmlns:xsi namespace and the definitions it provides can be found in the document, Extending
and Validating Helix DNA Producer Settings Files with XML Schemas.
Example:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Destination Type Attribute xsi:type | [Top] - [Top of Section] |
The xsi:type attribute represents the type of server definition. Depending on the type specified in this attribute, different settings may appear within the server section.
Default:
No Default
Values:
The type can be any value representing a valid server type. The following
server types are defined for Producer:
Other types may be defined as described in the document, Validating Helix DNA Producer Settings Files with XML Schemas.
Example:
xsi:type="pushServer"
XML Schema Location Attribute xsi:schemaLocation | [Top] - [Top of Section] |
The xsi:schemaLocation attribute provided information on where to locate the XML Schema file used to validate the server file. The value of the xsi:schemaLocation is a space separated list of namespace/URI pairs.
Default:
http://ns.real.com/tools/server.2.0 http://ns.real.com/tools/server.2.0.xsd
Values:
A string containing the namespace on the left (http://ns.real.com/tools/server.2.0) and the
location of the XML Schema file in the form of a URI. The default is
http://ns.real.com/tools/server.2.0.xsd which works for most XML Schema validators as long as
there is network connectivity to the Internet. The URI can also be any valid filename
including path.
More information on the xsi:schemaLocation attribute can be found in the document, Validating Helix DNA Producer Settings Files with XML Schemas.
Example:
xsi:schemaLocation="http://ns.real.com/tools/server.2.0 server.2.0.xsd" (relative
path)
xsi:schemaLocation="http://ns.real.com/tools/server.2.0 C:\server.2.0.xsd" (absolute
path)
Push Server |
[ job > parOutputs > output > destinations > destination ] |
This section contains settings for push type servers. This is an optional section that may be included one or more times within the destinations section of a job file or by itself in a server file. The outline below shows the structure for a server section of pushServer type with all possible properties.
Refer to Performing a Push Broadcast below for information on how to configure a Push type Broadcast.
There are three different variations on the Push broadcast. They are:
Each of these three methods use a different subset of the allowable properties within a push server and require different server-side configuration to work. The sections below describe each of these methods. For information on using each of these methods, refer to Performing a Push Broadcast below.
With the Account-based Push broadcast method, Producer establishes a two-way TCP connection to a Helix Server for authentication and monitoring and begins broadcasting packets over second one-way connection to that server once authentication succeeds. If authentication is successful, the server creates a dynamic broadcast receiver and returns information about that receiver to the Producer. The advantage of the push account-based method is that it minimizes the configuration that must be performed on the Helix Server before beginning a broadcast.
With the Single-password Push broadcast method, Producer broadcasts packets to an IP address using a connectionless protocol. The password information is encrypted into the stream and used on the remote end to decrypt the stream. This is an efficient means of broadcast but requires that the server be configured with a broadcast distribution receiver and that all settings in the server definition for Producer match those set in the receiver configuration on the Helix Server to which you are broadcasting. Further, the same password is used by all users instead of an account-based model as with the Push Account-based method.
With the Multicast Push broadcast method, Producer broadcasts packets to an IP multicast address using a connectionless protocol. The password information is encrypted into the stream and used on the remote end to decrypt the stream. This is an efficient means of broadcast but requires that the server be configured with a broadcast distribution receiver and that all settings in the server definition in Producer match those set in the receiver configuration on the Helix Server to which you are broadcasting.
The following table defines settings that apply to the Account-based Push,
Single-password Push and Multicast Push broadcast methods respectively.
Account-based Push Properties | Single-password Push Properties | Multicast Push Properties |
|
|
|
All properties for the server section of type pushServer section are defined immediately below. For information about configuring each of these broadcast methods, refer to Performing Push Broadcasting below.
name | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Name of a server definition within a job file. Each server defined within a job must have a unique name. The name property is only valid within job files. When a server is saved to a file, the name of the file is the name of the server.
Default:
Value of server address if not provided.
Values:
Any valid name.
Type:
string
Example:
<name type="string">My Server</name>
pluginName | [ job > parOutputs > output > destinations > destination (pushServer) ] |
A string that defines the name of the plug-in to load. The pluginName property is used to identify the formal plug-in name advertised by a given Helix DNA Producer plug-in. A plug-in name can be any string as long as it matches the string advertised by the intended plug-in but should comply with the recommended syntax for plug-in names as described in the Plug-in Names section.
Default:
rn-server-rbs
Values:
rn-server-rbs or a
valid plug-in name.
Type:
string
Example:
<pluginName type="string">rn-server-rbs</pluginName>
authType | [ job > parOutputs > output > destinations > destination (pushServer) ] |
If set to single-password only password, the value provided in the password determines how the broadcast will be authenticated. If password is blank, the '[Security Type in the broadcast distribution receiver on the server should be set to 'None'. If password is non-blank, the Security Type in the broadcast distribution receiver on the server should be set to 'Basic' and the value of password will be validated against the Password defined in the broadcast distribution receiver on the server.
Default:
account-based
Values:
account-based or single-password
Type:
string
Example:
<authType type="string">single-password</authType>
streamname | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Broadcast stream name. Name of live stream used to identify the broadcast. For example, 'live.rm'. This can include path information as well. Valid characters for a RealMedia URL include any of the upper or lower case letters a-z, numbers 0-9 and the underscore (_) and dash (-). Other characters may be accepted but may cause problems for RealNetworks players accessing the stream. The streamname property is required to run the job, but not required to open a job in the GUI application. The same streamname cannot be used twice on the same target server.
Default:
None
Values:
Any valid filename and
path
Type:
string
Example:
<streamname type="string">live.rm</streamname>
<streamname type="string">channel9/telethon.rm</streamname>
path | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Broadcast stream path. Additional path information. This string is prepended to the filename specified by the user. This property is useful to filter specific live streams on the server for archiving, scalable multicast or other features that use path information to perform specific actions. See Helix Server documentation for details. Valid characters for a RealMedia URL include any of the upper or lower case letters a-z, numbers 0-9 and the underscore (_) and dash (-). Other characters may be accepted but may cause problems for RealNetworks players accessing the stream.
Default:
Empty String
Values:
Any valid stream path
Type:
string
Example:
<path type="string">/archive/</path>
<path type="string">/customer/day/year/month/event/</path>
If the path begins with a forward slash it is removed from the path before combining with the streamname (e.g. Change "/mypath" to "mypath").
If a filename begins with a forward slash it is removed from the filename before combining with the path (e.g. Change "/live.rm" to "live.rm").
When combining the path and streamname, a forward slash should be inserted if (and only if) it is not already included on the end of the path (e.g. Combine "mypath/" and "live.rm" as "mypath/live.rm" but NOT as "mypath//live.rm")
address | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Address of the Helix Server to which you are broadcasting. Only applicable when transport is udp/unicast or tcp. If transport is udp/multicast, this field is ignored. The address property is required to run the job, but not required to open a job in the GUI application.
Default:
None
Values:
Any valid IP Address
Type:
string
Example:
<address type="string">207.22.33.43</address>
<address type="string">helixserver.yourcompany.com</address>
listenAddress | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Encoder Listen Address. Address that Producer listens on for resend requests from Helix Servers. This field will accept an IP address only; use of a domain name is invalid. The port is determined by instructing the OS kernel to pick a free port above 1024. The listenAddress property is ignored when transport is udp/multicast because multicast transport does not support resends.
If you are broadcasting through a firewall performing network address translation (NAT), the Listen Address property should be set to the IP Address of the firewall.
Default:
Default Network Interface IP Address
Values:
Any valid IP Address
Type:
string
Example:
<listenAddress type="string">207.34.234.3</listenAddress>
<listenAddress type="string">helixproducer.yourcompany.com</listenAddress>
<listenAddress type="string">0</listenAddress> (use
default NIC)
<listenAddress type="string">0.0.0.0</listenAddress>
(Allow any encoder - useful for broadcasting thru NAT firewalls)
multicastAddress | [ job > parOutputs > output > destinations > destination (pushServer) ] |
The multicast address to broadcast to if transport is udp/multicast. The setting is ignored if transport is not udp/multicast or authType is account-based. The address must be a valid multicast address. Using udp/multicast as the transport is an efficient way to broadcast to many servers at once.
Default:
229.229.229.229
Values:
Any valid IP Address between 224.0.0.0 through 239.255.255.255
Type:
string
Example:
<multicastAddress type="string">231.234.234.3</multicastAddress>
port | [ job > parOutputs > output > destinations > destination (pushServer) ] |
For authType of account-based this is the port through which the authentication and monitoring connection is made on a Helix Server. This is the http port defined on the target Helix Server (80 by default).
For authType of single-password this is the starting port to which packets are broadcast. This must match the starting port for the target receiver configuration defined on the Helix Server to which you are broadcasting. (30001 by default.) The port and the endPort define the Port Range. Using a range of ports instead of a single port eliminates packet loss that can occur when too much data is transmitted to a single port. Most operating systems have a limit of about 1 Mbps per port. Enough ports should be allocated for the Broadcast Distribution Receiver on the target Helix Server to avoid going beyond this limit.
Default:
80 for authType of account-based and 30001 for authType of single-password
Values:
Any valid integer 1-65535
Type:
uint
Example:
<port type="uint">80</port> (default for
account-based)
<port type="uint">30001</port> (port used by default
receiver on server)
endPort | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Ending port used for authType of single-password. Ignored if authType is account-based.
Default:
Same value as port if not provided.
Values:
Any integer from 1-65535
Type:
uint
Example:
<endPort type="uint">30020</endPort>
username | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Username of a of a valid account on the target Helix Server's SecureRBSEncoder authentication realm user database. Setting is ignored for single-password authType.
The Legacy Push and Account-based Push broadcast methods do not share the same username/password database. When using the Account-Based Push broadcast method, be sure the username and password are added to the correct realm on the Helix Server as noted above.
Default:
Empty String
Values:
Any string
Type:
string
Example:
<username type="bool">yourname</username>
password | [ job > parOutputs > output > destinations > destination (pushServer) ] |
For single-password authType this is the password used to encrypt and decrypt packets before transmission to the target Helix Server. This must match the Broadcast Distribution Receiver password set in the target Helix Server. If password is an empty string, the Security Type is set to 'None'. In this case, the corresponding broadcast receiver configuration on the target Helix Server must be configured with a Security Type of 'None'.
The Legacy Push and Account-based Push broadcast methods do not share the same username/password database. When using the Account-Based Push broadcast method, be sure the username and password are added to the correct realm on the Helix Server as noted above.
Default:
Empty String
Values:
Any string
Type:
string
Example:
<password type="string">letmein</password>
savePassword | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Option to enable/disable saving of password, to a job file. This option is useful when developing user interfaces that open a job file and re-save it. If this property is false, the password should not be written to the job file.
Default:
false
Values:
Any valid Boolean Value
Type:
bool
Example:
<savePassword type="bool">false</savePassword>
transport | [ job > parOutputs > output > destinations > destination (pushServer) ] |
If authType is account-based this is the transport used in the data connection (the authentication and monitoring connection is always HTTP). If authType is single-password this must match the broadcast distribution receiver transport setting in the target Helix Server configuration (udp/unicast by default).
If transport is udp/unicast, Producer uses a connectionless transport where packets are sent without requiring an acknowledgement from the Helix Server. This enhances the reliability of the broadcast as well as reduces CPU and network overhead. If transport is udp/multicast, the multicastAddress settings must also be provided. Using udp/multicast as the transport is an efficient way to broadcast to many servers at once. If transport is tcp, a two way connection is established with the target Helix Server. Using tcp transport is a less efficient means of broadcasting but is sometimes required when broadcasting through firewalls.
Default:
udp/unicast
Values:
udp/unicast, udp/multicast or tcp
Type:
string
Example:
<transport type="string">udp/unicast</transport>
multicastTTL | [ job > parOutputs > output > destinations > destination (pushServer) ] |
This is the number of router hops that a multicast stream will cross before being blocked by the router. Use this parameter to limit the spread of a multicast.
Default:
16
Values:
Any integer 1- 255
Type:
uint
Example:
<multicastTTL type="uint">2</multicastTTL>
fecPercent | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Percentage of stream to allocate to Forward Error Correction. This is the percentage of error correction data to send with the stream in order to reconstruct lost packets on the target Helix Server.
Note: Using non-zero FEC at low bit rates may require default buffers on Helix Server to be increased via adjustments to the server configuration file. The broadcast will still work with FEC at low bit rates but any benefit from the additional error correction data will be lost. See Adjusting Helix Server Receive Buffers below for more details.
Default:
0
Values:
Any integer 0-50 or 100. Values from 51 to 99 are assumed to be 100.
Type:
uint
Example:
<fecPercent type="uint">0</fecPercent>
fecOffset | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Number of seconds by which to offset redundant packets when using 100% Forward Error Correction. That is, when fecPercent is 100, 2 packets are transmitted for every 1 packet encoded. To increase the likelihood that a packet will not be lost, the time between sending the first packet and its redundant packet is offset by fecOffset seconds.
Note: Using redundant packet offset require default buffers on Helix Server to be at least as large as the value of FEC Offset. A broadcast will still work when using redundant packet offset but any benefit from the additional data transmitted will be lost. See Adjusting Helix Server Receive Buffers below for more details.
Default:
0
Values:
Any integer 1-9999
Type:
uint
Example:
<fecOffset type="bool">false</fecOffset>
metadataResendInterval | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Number of seconds between re-sending header packets. This parameter indicates how often a header packet will be sent to the target Helix Server. A header packet is required for the Helix Server to begin to broadcast a new stream when using transport values of udp/unicast or udp/multicast which are connectionless transports. The metadataResendInterval parameter plays two roles. First, it determines how quickly a new stream will be made available to players once it reaches a Helix Server. Second, it determines how long it will take between when a stream gets dropped and when next the Helix Server will be able to re-start the stream. When transport is TCP, this setting is ignored.
Default:
30
Values:
Any integer 1-9999
Type:
uint
Example:
<metadataResendInterval type="uint">30</metadataResendInterval>
allowResends | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Option to accept/reject resend packet requests from server. This setting will allow or deny a resend request for a lost packets from a Helix Server. Packet resend is an additional level of defense against packet loss. If a packet cannot be reconstructed using FEC data sent with the stream, then the target Helix Server may request a resend of the packet. This setting is useful to prevent resends in order to maintain more control over total network bandwidth consumption. In order for this setting to work, the IP to which Producer will listen for resend requests must be passed in the listenAddress. The listenAddress defaults to the default IP address for the computer on which Producer is running, but may be set to any IP on that machine. If the listenAddress is not set or is invalid, the transmission will work properly but no packet resend requests made by the Helix Server will reach the encoder. Resends are never requested if the transport is set to udp/multicast. This setting is ignored if transport is tcp.
Default:
true
Values:
Any Boolean Value
Type:
bool
Example:
<allowResends type="bool">false</allowResends>
enableTCPReconnect | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Enable/Disable TCP Reconnects. If this setting is set to true and the transport is TCP, Producer will attempt to reconnect to the server if the connection drops.
Default:
true
Values:
Any Valid Boolean Value
Type:
bool
Example:
<enableTCPReconnect type="bool">false</enableTCPReconnect>
TCPReconnectInterval | [ job > parOutputs > output > destinations > destination (pushServer) ] |
TCP Reconnect Interval. The number of seconds Producer waits to attempt a reconnect after losing a connection with a Helix Server. Producer assumes a Server is disconnected after the TCP connection is torn down by the operating system. The operating system assumes a TCP connection is invalid if the server has not responded within a certain timeout period. Timeout is defined by the operating system and Producer has no control over this value. If the TCPReconnectInterval is greater than zero, the encoder will wait TCPReconnectInterval seconds before attempting to initiate a new connection with the Helix Server. The minimum value is 1 and a value of 0 is invalid.
Default:
10
Values:
Any integer from 1 to 3600
Type:
uint
Example:
<TCPReconnectInterval type="uint">30</TCPReconnectInterval>
statisticsUpdateInterval | [ job > parOutputs > output > destinations > destination (pushServer) ] |
Connection Statistics Update Interval. Number of seconds between Helix Server statistics updates. This property is only used when authType is account-based. This property is used to tell the Helix Server how often to send statistics to the Producer. This property is ignored for authType single-password.
Default:
2
Values:
Any integer between 1 and 604800
Type:
uint
Example:
<statisticsUpdateInterval type="uint">15</statisticsUpdateInterval>
Performing Push Broadcasting |
[ job > parOutputs > output > destinations > destination (pushServer) ] |
There are three steps in performing a broadcast. They are:
Each of these steps are described below in the respective sections.
As explained in above, there are three push broadcasting methods: account-based, single-password and multicast. Server configuration and job file settings differ for each of these methods as explained in the respective sub-sections.
This method of broadcast is compatible with RealNetworks' server version 8 or later. The method for configuring the Helix Server for this type of broadcast varies with the version of the server but always entail the following steps:
Adding a user account
For Account-based Push broadcasting, a user account must exist in the Helix Server SecureRBSEncoder authentication realm. Accounts can be created via the server administration interface. Refer to the server documentation to create new accounts. Briefly, the process is:
Note: The server administrator account is added to the Encoder Realm at installation of the Helix Server. Therefore, the administrator username and password can be used for testing without having to add additional accounts.
Note: The Legacy Push and Account-based Push broadcast methods do not share the same username/password database. When using the Account-based Push broadcast method, be sure the username and password are added to the correct realm on the Helix Server as follows:
Configure the RealNetworks Encoding settings
For Account-based Push broadcasting, default server configuration broadcast settings are generally acceptable for almost any installation. If desired, the port range allocated to inbound encoder connections can be configured. This port range is used to dynamically allocate inbound encoder ports to each encoder connection. By default there are 50 ports allocated which is sufficient for up to 50 inbound live streams. If desired, port settings can be modified as followed:
Collecting Information for Helix DNA Producer and RealOne Player
Some information is needed in order to configure Producer and link to the broadcast from a Player. Following is information that should be collected by the Helix Server Administrator for use by the Helix DNA Producer operator and the content author creating links to content:
IP ADDRESS | TYPE | DURATION | FILENAME |
encoder | 00:02:27 | live.rm | |
172.23.104.111 | player | 00:02:27 | encfs/servvar.set |
Both of these entries represents a single Account-based Push broadcast session.
This method of broadcast is compatible with RealNetworks' server version 8 or later. Further, the RealServer must be licensed for Broadcast Distribution (a.k.a. Splitting) to use the Single-password Push broadcast method in Helix DNA Producer. To confirm the Helix Servers licensed for Broadcast Distribution, click on the About link in the Helix Server Administration interface and look for an entry Broadcast Distribution with a value of 'yes' beside it.
The method for configuring the Helix Server for Single-password Push broadcasting is to create a Broadcast Receiver. The way to set up a Broadcast Receiver varies with the version of the server. Refer to the server documentation to create Broadcast Receivers. Briefly, the process is:
Collecting Information for Helix DNA Producer and RealOne Player
Some information is needed in order to configure Helix DNA Producer and link to the broadcast from a Player. Following is information that should be collected by the Helix Server Administrator for use by the Helix DNA Producer operator and the content author creating links to content:
This method of broadcast is compatible with RealNetworks' server version 8 or later. Further, the RealServer must be licensed for Broadcast Distribution (a.k.a. Splitting) to use the Multicast Push broadcast method in Helix DNA Producer. To confirm the Helix Servers licensed for Broadcast Distribution, click on the About link in the Helix Server Administration interface and look for an entry Broadcast Distribution with a value of 'yes' beside it.
The method for configuring the Helix Server for Single-password Push broadcasting is to create a Broadcast Receiver similar to the process defined above for Single-password Push except that the transport is set to 'udp/multicast' and a Multicast Address must be supplied as well. Refer to Single-password Push for information on setting up Multicast Push on the Helix Server.
Note: Multicast addresses must be in the range of 224.0.0.0 to 239.255.255.255. Additionally, this range may be even more limited by your Intranet administrator. On the public Internet, addresses from 224.0.0.0 to 224.0.0.255 are reserved, and cannot be used.
Helix DNA Producer uses a Server configuration file to store settings for broadcasting to RealNetworks servers. Alternatively, a job fie may be defined which contains the contents of a server configuration file as a sub-section of the job file. This is convenient when it is desired to share encoding settings along with the broadcast settings in a single file.
There are several methods to create server configuration files or job files containing server settings. They are:
The settings required for Push broadcasting vary according to which of the three Push broadcast methods (Account-based, Single-password and Multicast) are being used. Refer to Summary of Push Broadcast Settings for a full list of configuration properties for each of the three broadcast methods. The sub-sections below describe the most important settings needed to configure each of the three Push broadcast methods in Helix DNA Producer.
The required parameters for Account-based Push are address, port, username, and password. All other settings are automatically set to reasonable defaults if no values are specified. The following is a brief description of these properties:
Refer to Summary of Push Broadcast Settings for a full list of configuration properties
The required parameters for Single-password Push are address, port range (port and endPort), transport and password. All other settings are automatically set to reasonable defaults if no values are specified. The following is a brief description of these properties:
Refer to Summary of Push Broadcast Settings for a full list of configuration properties
The required parameters for Multicast Push are almost the same as Single-password Push except the multicastAddress property is used instead of address and the value of transport is 'udp/multicast'. All other settings are automatically set to reasonable defaults if no values are specified. The following is a brief description of these properties:
Refer to Summary of Push Broadcast Settings for a full list of configuration properties
The method to connect to a push broadcast is identical for all three push broadcast methods. The properties below are explained above in the sections Collecting Information for Helix DNA Producer and RealOne Player.
If you are typing a URL directly in a player the URL syntax is:
rtsp://<address>:<RTSP-server-port>/<server-broadcast-mount-point>/<path>/<streamname>
For example:
rtsp://realserver.yourcompany.com:554/broadcast/live.rm
To create a link to the broadcast in a web page, use the following syntax:
http://<address>:<HTTP-server-port>/ramgen/<server-broadcast-mount-point>/<path>/<streamname>
For example:
http://realserver.yourcompany.com:80/ramgen/broadcast/live.rm
Following are some tips that may help in troubleshooting problems with setting up a live broadcast:
Pull Server |
[ job > parOutputs > output > destinations > destination ] |
This section contains settings for pull server destination. This is an optional section that may be included one or more times within the destinations section. The outline below shows the structure for the pull server section.
The Pull server broadcast method enables the Helix DNA Producer to begin encoding packets and make those packets available to any server that requests a copy. Helix DNA Producer only begins broadcasting the packets once a player makes a request for the stream through a Helix Server. Thus, the Helix DNA Producer become a client to any Helix Server wishing to tap into a live stream as long as that server makes that request using the proper settings and password.
Refer to Performing Pull Broadcasting below for information on how to configure a Pull type Broadcast.
name | [ job > parOutputs > output > destinations > destination (pullServer) ] |
Name of a server definition within a job file. Each server defined within a job must have a unique name. The name element is only valid within job files. When a server is saved to a file, the name of the file is the name of the server.
Default:
Value of server address if not provided.
Values:
Any valid name.
Type:
string
Example:
<name type="string">My Server</name>
pluginName | [ job > parOutputs > output > destinations > destination (pullServer) ] |
A string that defines the name of the plug-in to load. The pluginName property is used to identify the formal plug-in name advertised by a given Helix DNA Producer plug-in. A plug-in name can be any string as long as it matches the string advertised by the intended plug-in but should comply with the recommended syntax for plug-in names as described in the Plug-in Names section.
Default:
rn-server-rbs
Values:
rn-server-rbs or a
valid plug-in name.
Type:
string
Example:
<pluginName type="string">rn-server-rbs</pluginName>
streamname | [ job > parOutputs > output > destinations > destination (pullServer) ] |
Broadcast Stream name. Name of live stream used to identify the broadcast. For example, 'live.rm'. This can include path information as well. Valid characters for a RealMedia URL include any of the upper or lower case letters a-z, numbers 0-9 and the underscore (_) and dash (-). Other characters may be accepted but may cause problems for RealNetworks players accessing the stream. The streamname property is required to run the job, but not required to open a job in the GUI application. The same streamname cannot be used twice on the same target server.
Default:
None
Values:
Any valid filename and
path.
Type:
string
Example:
<streamname type="string">live.rm</streamname>
<streamname type="string">channel9/telethon.rm</streamname>
path | [ job > parOutputs > output > destinations > destination (pullServer) ] |
Broadcast stream path. Additional Path information. This string is prepended to the filename specified by the user. This property is useful to filter specific live streams on the server for archiving, scalable multicast or other features that use path information to perform specific actions. See Helix Server documentation for details. Valid characters for a RealMedia URL include any of the upper or lower case letters a-z, numbers 0-9 and the underscore (_) and dash (-). Other characters may be accepted but may cause problems for RealNetworks players accessing the stream.
Default:
Empty String
Values:
Any valid stream path
Type:
string
Example:
<path type="string">/archive/</path>
<path type="string">/customer/day/year/month/event/</path>
If the path begins with a forward slash it is removed from the path before combining with the streamname (e.g. Change "/mypath" to "mypath").
If a filename begins with a forward slash it is removed from the filename before combining with the path (e.g. Change "/live.rm" to "live.rm").
When combining the path and streamname, a forward slash should be inserted if (and only if) it is not already included on the end of the path (e.g. Combine "mypath/" and "live.rm" as "mypath/live.rm" but NOT as "mypath//live.rm")
listenAddress | [ job > parOutputs > output > destinations > destination (pullServer) ] |
Encoder Listen Address. Address that Producer listens on for pull broadcast connection requests and resend requests from Helix Servers. This field will accept an IP address only; use of a domain name is invalid. A value of '0' will cause the default IP Address on the default network interface card to be used.
Default:
Default Network Interface IP Address
Values:
Any valid IP Address
Type:
string
Example:
<listenAddress type="string">207.34.234.3</listenAddress>
<listenAddress type="string">helixproducer.yourcompany.com</listenAddress>
<listenAddress type="string">0</listenAddress> (use
default NIC)
listenPort | [Top]
- [Top of Section]
[ job > parOutputs > output > destinations > destination (pullServer) ] |
Encoder Listen Port. Port that Producer listens on for connection requests from Helix Servers. This is the port to which the Server will attempt to connect. This port need not be unique (e.g. the same port may be used by other pull sessions on the same computer).
Default:
3031
Values:
Any integer 1-65535
Type:
uint
Example:
<listenPort type="uint">3031</listenPort>
password | [ job > parOutputs > output > destinations > destination (pullServer) ] |
Password used by the target Helix Server to initiate pull broadcast requests. This must match the Broadcast Distribution Pull Receiver password set in the target Helix Server.
Default:
Empty String
Values:
Any string
Type:
string
Example:
<password type="string">letmein</password>
savePassword | [ job > parOutputs > output > destinations > destination (pullServer) ] |
Option to enable/disable saving of password, to a job file.
Default:
false
Values:
Any valid Boolean Value
Type:
bool
Example:
<savePassword type="bool">false</savePassword>
serverTimeout | [ job > parOutputs > output > destinations > destination (pullServer) ] |
The number of seconds Producer will wait for a ping from a connected Helix Server before assuming no clients are connected to the stream and closing the connection. For pull broadcasts, each Helix Server sends regular pings to inform the Producer that clients are actively listening to the stream. When all clients have disconnected from a pull split stream, the Helix Server stops sending pings and thus the Producer stops broadcasting packets to that server.
Default:
30
Values:
Any integer from 0 to 86400
Type:
uint
Example:
<serverTimeout type="uint">60</serverTimeout>
Performing Pull Broadcasting |
[ job > parOutputs > output > destinations > destination (pullServer) ] |
There are three steps in performing a pull broadcast. They are:
Each of these steps are described below in the respective sections.
This method of broadcast is compatible with RealNetworks' server version 8 or later. Further, the RealServer must be licensed for Broadcast Distribution (a.k.a. Splitting) to use the Pull broadcast method in Helix DNA Producer. To confirm the Helix Servers licensed for Broadcast Distribution, click on the About link in the Helix Server Administration interface and look for an entry Broadcast Distribution with a value of 'yes' beside it.
The method for configuring the Helix Server for Pull broadcasting is to create a Pull Broadcast Receiver. The way to set up a Pull Broadcast Receiver varies with the version of the server. Refer to the server documentation to create Broadcast Receivers. Briefly, the process is:
Collecting Information for Helix DNA Producer and RealOne Player
Some information is needed in order to configure Helix DNA Producer and link to the broadcast from a Player. Following is information that should be collected by the Helix Server Administrator for use by the Helix DNA Producer operator and the content author creating links to content:
Helix DNA Producer uses a Server configuration file to store settings for broadcasting to RealNetworks servers. Alternatively, a job fie may be defined which contains the contents of a server configuration file as a sub-section of the job file. This is convenient when it is desired to share encoding settings along with the broadcast settings in a single file.
There are several methods to create server configuration files or job files containing server settings. They are:
The settings required for Pull broadcasting are listenAddress, listenPort, and password. All other settings required for establishing a connection to the server are automatically sent by the server at connection time. The following is a brief description of these properties:
password - The password corresponding to the Broadcast Receiver configuration defined above in Configuring Helix Server for Pull Broadcasting..
Refer to Pull Server Settings for a full list of configuration properties
Collecting Information for RealOne Player
Some information is needed in order to configure Helix DNA Producer and link to the broadcast from a Player. Following is information that should be collected by the Helix Server Administrator for use by the Helix DNA Producer operator and the content author creating links to content:
The method to connect to a pull broadcast is described below. The properties below are explained above in the sections Collecting Information for Helix DNA Producer and RealOne Player.
If you are typing a URL directly in a player the URL syntax is:
rtsp://<address>:<RTSP-server-port>/<server-broadcast-mount-point>/ <server-pull-mount-point>/<listenAddress>:<listenPort>/<path>/<streamname>
For example:
rtsp://realserver.yourcompany.com:554/broadcast/pull/172.23.104.190:3031/live.rm
To create a link to the broadcast in a web page, use the following syntax:
http://<address>:<HTTP-server-port>/ramgen/<server-broadcast-mount-point>/ <server-pull-mount-point>/<listenAddress>:<listenPort>/<path>/<streamname>
For example:
http://realserver.yourcompany.com:80/ramgen/broadcast/pull/172.23.104.190:3031/live.rm
Following are some tips that may help in troubleshooting problems with setting up a live broadcast:
Warning: Multicast protocol does not work as expected with pull broadcast method. The Helix DNA Producer is able to successfully respond to multicast connection requests from a Helix Server, but any subsequent requests from a different Helix Servers will incur an additional stream on the network. Thus, while pull broadcasts are able to be successfully established using multicast, there is no savings in bandwidth over using udp/unicast or tcp transport.
G2 Push Server |
[ job > parOutputs > output > destinations > destination ] |
This section contains settings for broadcasting to pre-Helix Servers from Helix DNA Producer. This is equivalent to the Legacy Push broadcast method in the GUI application. This is an optional section that may be included one or more times within the destinations section. The outline below shows the structure for the Legacy Push server section.
Refer to Performing G2 Push Broadcasting below for information on how to configure a G2 Push type Broadcast.
name | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Name of a server definition within a job file. Each server defined within a job must have a unique name. The name element is only valid within job files. When a server is saved to a file, the name of the file is the name of the server.
Default:
Value of server address if not provided.
Values:
Any valid name.
Type:
string
Example:
<name type="string">My Server</name>
pluginName | [Top] - [Top of Section] |
A string that defines the name of the plug-in to load. The pluginName property is used to identify the formal plug-in name advertised by a given Helix DNA Producer plug-in. A plug-in name can be any string as long as it matches the string advertised by the intended plug-in but should comply with the recommended syntax for plug-in names as described in the Plug-in Names section.
Default:
rn-server-g2
Values:
rn-server-g2 or a
valid plug-in name.
Type:
string
Example:
<pluginName type="string">rn-server-g2</pluginName>
streamname | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Broadcast Stream Name. Name of live stream that is sent to a Server. This property is required to run the job but not required to open a job in the GUI application.
Default:
None
Values:
Any valid filename and
path.
Type:
string
Example:
<streamname type="string">live.rm</streamname>
<streamname type="string">channel9/telethon.rm</streamname>
path | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Broadcast Stream Path. Additional Path information. This string is prepended to the filename specified by the user. This property is useful to filter specific live streams on the server for archiving, scalable multicast or other features that use path information to perform specific actions. See Server documentation for details. Valid characters for a RealMedia URL include any of the upper or lower case letters a-z, numbers 0-9 and the underscore (_) and dash (-). Other characters may be accepted but may cause problems for RealNetworks players accessing the stream.
Default:
Empty String
Values:
Any valid stream path
Type:
string
Example:
<path type="string">/archive/</path>
<path type="string">/customer/day/year/month/event/</path>
If the path begins with a forward slash it is removed from the path before combining with the streamname (e.g. Change "/mypath" to "mypath").
If a filename begins with a forward slash it is removed from the filename before combining with the path (e.g. Change "/live.rm" to "live.rm").
When combining the path and streamname, a forward slash should be inserted if (and only if) it is not already included on the end of the path (e.g. Combine "mypath/" and "live.rm" as "mypath/live.rm" but NOT as "mypath//live.rm").
address | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Destination Server Address. Address of the Server to which output is broadcast. Can be any valid IP address or domain name. The address property is required to run the job, but not required to open a job in the GUI application.
Default:
None
Values:
Any valid IP Address or domain
name
Type:
string
Example:
<address type="string">207.22.33.43</address>
<address type="string">helixserver.yourcompany.com</address>
port | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Destination Server Port. Port on Server where stream is broadcast. This should match the G2 to 8.5 Producer port setting in the Server (4040 by default).
Default:
4040
Values:
integer from 1-65535
Type:
uint
Example:
<port type="uint">804040</port>
username | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Username of a valid Server SecureEncoder realm account.
The Legacy Push and Account-based Push broadcast methods do not share the same username/password database. When using the Legacy Push broadcast method, be sure the username and password are added to the correct realm on the Helix Server as noted above.
Default:
Empty String
Values:
Any string
Type:
string
Example:
<username type="bool">yourname</username>
password | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Password of a valid Server SecureEncoder realm account. Must correspond to the username given above.
The Legacy Push and Account-based Push broadcast methods do not share the same username/password database. When using the Legacy Push broadcast method, be sure the username and password are added to the correct realm on the Helix Server as noted above.
Default:
Empty String
Values:
Any string
Type:
string
Example:
<password type="string">letmein</password>
savePassword | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Option to enable/disable saving of password, to a job file.
Default:
false
Values:
Any valid Boolean Value
Type:
bool
Example:
<savePassword type="bool">false</savePassword>
transport | [ job > parOutputs > output > destinations > destination (g2PushServer) ] |
Transport used for broadcasting to the Server. The value udp/unicast is ideal for most efficient delivery while tcp is helpful for encoding through firewalls where udp traffic is not permitted. With udp/unicast, packet resends are handled by the application and packets are only requested if there is enough time to receive the resent packet before it is required by a player. With tcp, the network is responsible for resending packets. tcp is not a time-sensitive protocol and thus may continue to request a packet long after it is needed. For this reason, tcp is less efficient than udp/unicast and tcp is preferred when allowed by network configurations.
Default:
udp/unicast
Values:
tcp or udp/unicast
Type:
string
Example:
<transport type="string">udp/unicast</transport>
Performing G2 Push Broadcasting |
[ job > parOutputs > output > destinations > destination (g2PushServer) ] |
There are three steps in performing a broadcast. They are:
Each of these steps are described below in the respective sections.
This method of broadcast is compatible with RealNetworks' server version G2 or later. The method for configuring the Helix Server for this type of broadcast varies with the version of the server but always entail the following steps:
Adding a user account
For G2 Push broadcasting, a user account must exist in the Helix Server SecureEncoder authentication realm. Accounts can be created via the server administration interface. Refer to the server documentation to create new accounts. Briefly, the process is:
Note: The server administrator account is added to the Encoder Realm at installation of the Helix Server. Therefore, the administrator username and password can be used for testing without having to add additional accounts.
Note: The Legacy Push and Account-based Push broadcast methods do not share the same username/password database. When using the Account-based Push broadcast method, be sure the username and password are added to the correct realm on the Helix Server as follows:
Configure the RealNetworks Encoding settings
For G2 Push broadcasting, default server configuration broadcast settings are generally acceptable for almost any installation. If desired, the port used for inbound encoder connections can be configured. By default this is 4040. The timeout used to determine if the encoder connection has been lost is also configurable. If desired, port or timeout settings can be modified as followed:
Collecting Information for Helix DNA Producer and RealOne Player
Some information is needed in order to configure Helix DNA Producer and link to the broadcast from a Player. Following is information that should be collected by the Helix Server Administrator for use by the Helix DNA Producer operator and the content author creating links to content:
Helix DNA Producer uses a Server configuration file to store settings for broadcasting to RealNetworks servers. Alternatively, a job fie may be defined which contains the contents of a server configuration file as a sub-section of the job file. This is convenient when it is desired to share encoding settings along with the broadcast settings in a single file.
There are several methods to create server configuration files or job files containing server settings. They are:
The settings required for Push broadcasting vary according to which of the three Push broadcast methods (Account-based, Single-password and Multicast) are being used. Refer to Summary of Push Broadcast Settings for a full list of configuration properties for each of the three broadcast methods. The sub-sections below describe the most important settings needed to configure each of the three Push broadcast methods in Helix DNA Producer.
The settings required for G2 Push are address, port, username, and password. All other settings are automatically set to reasonable defaults if no values are specified. The following is a brief description of these properties:
Refer to G2 Push Broadcast Settings for a full list of configuration properties
The method to connect to a G2 Push broadcast is described below. The properties below are explained above in the sections Collecting Information for Helix DNA Producer and RealOne Player.
If you are typing a URL directly in a player the URL syntax is:
rtsp://<address>:<RTSP-server-port>/<server-encoder-mount-point>/<path>/<streamname>
For example:
rtsp://realserver.yourcompany.com:554/encoder/live.rm
To create a link to the broadcast in a web page, use the following syntax:
http://<address>:<HTTP-server-port>/ramgen/<server-encoder-mount-point>/<path>/<streamname>
For example:
http://realserver.yourcompany.com:80/ramgen/encoder/live.rm
Following are some tips that may help in troubleshooting problems with setting up a live broadcast:
Reconnect Support |
[Back to Top] |
Reconnect is supported in the new broadcast methods but implemented differently in each. Reconnect is not supported for the Legacy broadcast method (G2 Push). Following is information on how to configure each server type for reconnect.
Because Account-based push always uses TCP for its authentication and monitoring control connection, only TCP reconnect settings apply for account-based push. To perform automatic reconnect with the account-based push method, use the enableTCPReconnect and TCPReconnectInterval settings.
The method for reconnect for Single-password push is dependent on the transport used. If TCP is used as a transport, the enableTCPReconnect and TCPReconnectInterval settings are used to define reconnect behavior. If UDP is used as a transport, then the metadataResendInterval is used to define reconnect behavior.
Because Push Multicast does not allow a TCP mode, the TCP reconnect settings do not apply. To enable reconnect behavior with Push Multicast, use the multicastResendInterval.
With the Pull broadcast method, reconnect is handled by the server and not by the encoder. If a stream is dropped while broadcasting in Pull mode, the server is responsible for re-establishing the stream. The server leaves it up to the player to perform a new reconnect request for the stream. In RealONE or later, the player has reconnect logic and attempts to reconnect without any interruption in user experience. For RealPlayer 8 and earlier, reconnect will occur when the user presses play after dropping the stream.
Adjusting Helix Server Receive Buffers |
[Back to Top] |
The buffer on the Helix Server defaults can be adjusted by manually editing the Helix Server server configuration file and adding either PushBufferingTime or PullBufferingTime depending on the type of broadcasting in use. The values for PushBufferingTime and PullBufferingTime are both 1 second by default. This means that only at higher bit rates or very high values of FEC will the FEC be effective. You can tell if the buffers are too low for the current settings of FEC and bit rate by observing the Helix Server log file and looking for the log mesasge "FECGeneratedPacket Too Late". If you get this error message you should increase the server buffers as described below or discontinue the use of FEC.
It should be noted that increasing the buffer on the Helix Server will increase the overall system latency. The latency is the difference between when a packet is encoded in Helix DNA Producer and when it is played back in RealONE Player. In some cases the overall system latency is unimportant but in other cases it is important that the user experience be as close to real-time as possible. It should also be noted that with Pull broadcasting, increasing the buffer time will increase the time it takes for the stream to start for the first client to connect by the amount of the buffer set. Thus, a 15 second buffer will cause the user to have to wait 15 seconds longer than the normal buffer time. Subsequent clients will not experience this additional delay.
To increase the buffer on the Helix Server set the PushBufferingTIme or PullBufferingTime properties in the broadcast receiver section in question as follows:
<List Name="BroadcastReceiver"> <List Name="Receivers"> <List Name="Producer_Feed1"> <Var PushBufferingTime="1"/> <Var PullBufferingTime="1"/> ....
The recommended buffer size on the Helix Server varies according to bit rate and FEC value. The following formula can be used to compute the necessary buffer size:
BufferTime = 1500 / (LowestBitRate) * 8 * (100/FEC)
Where the lowest bit rate should be the lowest of the audio or video bit rate in the stream being broadcast in bytes. You can refer to the Helix DNA Producer Statistics to identify this bit rate. Here we assume the max packet size is 1500 bytes. See below for a more accurate estimate of packet size.
Adding a value of 1 allows the server some additional time to collect each packet and reconstruct lost packets.
For example, the following computes the buffer time for a 56k and 350k SureStream with an FEC of 30%.
We observe the lowest bit rate is 6.5 kbps (Audio stream for 56k). We now compute buffer time using the formula above:
BufferTime = 1500/6500*8*(100/30) + 1 = 7.15
Thus, a value of 8 seconds is used for PushBufferTime or PullBufferTime.
If FEC is 100%, this is a special case and the buffer size should be driven by the value of FEC Offset, not FEC. Increasing the buffer size to a 1 or 2 seconds above the FEC Offset value will allow the server long enough to replace lost packets with duplicate error correcting packets when FEC is 100.
The network packet size of 1500 is actually larger than what might actually be used. If the value of maxPacketSize is not set in the Helix DNA Producer, packets might actually be smaller than 1500 bytes as defined below.
For audio, each flavor for each codec has a preset packet size. These packet sizes are chosen depending on the bit rate. Following are the packet sizes for different bit rate audio codecs:
For video, if the maxPacketSize is not set, there are 3 packet sizes depending on the bit rate
Copyright © 2004, RealNetworks Inc. All rights reserved.
Helix, RealAudio, RealNetworks, RealSystem, RealVideo, and SureStream are trademarks or registered trademarks of RealNetworks, Inc. All other companies or products listed herein are trademarks or registered trademarks of their respective owners. All rights reserved.