## 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)
<destination xsi:type="pushServer"> <name> <pluginName> <authType> <streamname> <path> <address> <port> <endPort> <username> <password> <savePassword> <transport> <listenAddress> <multicastAddress> <multicastTTL> <fecPercent> <fecOffset> <metadataResendInterval> <allowResends> <enableTCPReconnect> <TCPReconnectInterval> <statisticsUpdateInterval> | <destination xsi:type="pushServer"> <name> <pluginName> <streamname> <path> <listenAddress> <listenPort> <password> <savePassword> <serverTimeout> | <destination xsi:type="pushServer"> <name> <pluginName> <streamname> <path> <address> <port> <username> <password> <savePassword> <transport>

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">
. . .
</destination>

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.

## Attributes

The server tag contains four attributes:

- xmlns
- xmlns:xsi
- xsi:type
- xsi:schemaLocation

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:

- pushServer
- pullServer
- g2PushServer

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.

- <destination xsi:type="pushServer" xmlns="http://ns.real.com/tools/server.2.0"
  xsi:schemaLocation="http://ns.real.com/tools/server.2.0 http://ns.real.com/tools/server.2.0.xsd">
  - <name>
  - <pluginName>
  - <authType>
  - <streamname>
  - <path>
  - <address>
  - <port>
  - <endPort>
  - <username>
  - <password>
  - <savePassword>
  - <transport>
  - <listenAddress>
  - <multicastAddress>
  - <multicastTTL>
  - <fecPercent>
  - <fecOffset>
  - <metadataResendInterval>
  - <allowResends>
  - <enableTCPReconnect>
  - <TCPReconnectInterval>
  - <statisticsUpdateInterval>

Refer to Performing a Push Broadcast below for information on how to configure a Push type Broadcast.

## Push Broadcast Types

There are three different variations on the Push broadcast. They are:

- Push account-based login
- Push single-password login
- Push multicast transport

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.

### Push using Account-based login

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.

### Push using Single-password Login

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.

### Push using Multicast Transport

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.

### Summary of Push Broadcast Settings

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 | S ingle-password Push Properties | Multicast Push Properties
<destination xsi:type="pushServer"> <name> <pluginName> <authType> <streamname> <path> <address> <port> <username> <password> <savePassword> <transport> <listenAddress> <fecPercent> <fecOffset> <allowResends> <enableTCPReconnect> <TCPReconnectInterval> <statisticsUpdateInterval> | <destination xsi:type="pushServer"> <name> <pluginName> <authType> <streamname> <path> <address> <port> <endPort> <password> <savePassword> <transport> <listenAddress> <fecPercent> <fecOffset> <metadataResendInterval> <allowResends> <enableTCPReconnect> <TCPReconnectInterval> | <destination xsi:type="pushServer"> <name> <pluginName> <streamname> <path> <multicastAddress> <port> <endPort> <password> <savePassword> <transport> <multicastTTL> <fecPercent> <fecOffset> <metadataResendInterval>

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.

## Push Server Properties

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) ]

The type of authentication that will be performed for the push broadcast. If set to account-based username and password are required. If set to single-password only password is required.

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>

1. 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").

2. 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").

3. 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) ]

Port on the server to which the broadcast is directed.

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 account-based authType this is the password of a valid account on the target Helix Server's SecureRBSEncoder authentication realm user database. It must correspond to the username given above.

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) ]

Transport used for broadcasting to the target Helix Server.

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:

- Configure Helix Server
- Choose Job File Settings
- Linking to a broadcast

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.

### Configuring Helix Server for Push Broadcasting

#### Account-based Push

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:

1. Add a user account to the SecureRBSEncoder encoder realm
2. Confirm that the 9.0 Producer settings are correct.

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:

1. Open the RealNetworks Server Administrator interface in a web browser (e.g. http://<server-ip>:<server-port>/admin/index.html).
2. Go to the Broadcasting > RealNetworks Encoding page.
3. Click on the link to Create user names and passwords under the 9.0 Producer section.
4. Select the SecureRBSEncoder Authentication Realm.
5. Click Add User to Realm
6. Complete and submit the Add User form.

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:

- For the Account-based Push broadcast method, users should be added to the Helix Server SecureRBSEncoder realm.
- For the Legacy Push broadcast method, users should be added to the Helix Server SecureEncoder realm.

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:

1. Open the RealNetworks Server Administrator interface in a web browser (e.g. http://<server-ip>:<server-port>/admin/index.html).
2. Go to the Broadcasting > RealNetworks Encoding page.
3. Modify the Port Range in the 9.0 Producer section.

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:

1. Note the following for use in Helix DNA Producer:
   - IP Address or domain name of the Helix Server
   - HTTP Port of the Helix Server (80 by default. See the Server Setup > Ports in the Helix Server administration interface)
   - Username and corresponding password for an account in the Helix Server SecureRBSEncoder realm.
2. Note the following for use in creating links to the broadcast::
   - Mount Point ( 'broadcast' by default)

Warning: When using the Account-based Push broadcast method with Helix Server 9, you may experience problems making new Account-based Push connections if the Helix Server Administrator is used to reconfigure the Helix Server while existing Account-based Push encodes are running. To avoid this problem, do not reconfigure the Helix Server while Account-based Push encodes are active. You can identify Account-based Push encodes by looking for pairs of entries as follows in the Helix Server Monitor:

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.

#### Single-password Push

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:

1. Open the RealNetworks Server Administrator interface in a web browser (e.g. http://<server-ip>:<server-port>/admin/index.html).
2. Go to the Broadcast Distribution > Receiver page.
3. Add an entry to the Broadcast Transmitters list.
4. Enter the following properties for the Broadcast Transmitter.
   - Transmitter Name - A descriptive string used only by the server
   - Transmitter Address - The Address of the machine running Helix DNA Producer. A value of '0.0.0.0' (and a corresponding netmask of 0.0.0.0) will allow connections from IP address (the password is still required to establish a connection).
   - Port Range - The range of ports the server will listen on. This is used to distribute the load across many ports. For encoding, this can be anywhere from 2-10 ports where the total bandwidth across any one port should be no more 1 Mbps (divide the total bandwidth from all encoders by the number of ports to determine the bandwidth through each port).
   - Transport - Use udp/unicast or tcp for single-password push broadcasts
   - Security Type - Set this to 'Basic' in order to require the encoder to supply a password.
5. Apply the changes (No server restart is required)

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:

1. Note the following for use in Helix DNA Producer:
   - IP Address or domain name of the Helix Server
   - Port Range
   - Transport
   - Password (Only required for security type 'Basic')
2. Note the following for use in creating links to the broadcast::
   - Mount Point ( 'broadcast' by default)

#### Multicast Push

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.

### Choosing Job File Settings for Push Broadcasting

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:

- Use the default server templates shipped with Helix DNA Producer as a template and edit as needed
  - See the 'samples/servers' directory of the Helix DNA Producer application for sample server files
- The Helix DNA Producer command line application can create job files from command line input using the -cj option. Use this method to generate a job file which can be edited and subsequently run using the -j command line option.
- The Helix DNA Producer graphical user interface allows server files to be created as a template from the Edit > Server Templates menu or created in a job file from the File > Add Server Destination menu item.

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.

#### Account-based Push

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:

- address - The IP address or domain name of the Helix Server. This information should be provided by the Helix server administrator.
- port - The HTTP listen port of the Helix Server. This information should be provided by the Helix server administrator.
- username - The username of a valid Account-based Push user account.
- password - The password corresponding to the username above.

Refer to Summary of Push Broadcast Settings for a full list of configuration properties

#### Single-password Push

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:

- address - The IP address or domain name of the Helix Server. This information should be provided by the Helix server administrator.
- port range (port and endPort) - The start and end ports corresponding to the Broadcast Receiver configuration referred to by the address property. This information should be provided by the Helix server administrator.
- transport - The transport corresponding to the Broadcast Receiver configuration referred to by the address property. This is either 'udp/unicast' or 'tcp'. This information should be provided by the Helix server administrator.
- password - The password corresponding to the Broadcast Receiver configuration referred to by the address property. This information should be provided by the Helix server administrator.

Refer to Summary of Push Broadcast Settings for a full list of configuration properties

#### Multicast Push

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:

- address - The Multicast IP address assigned in the Broadcast Receiver configuration on the Helix Server. Multicast addresses must be in the range of 224.0.0.0 to 239.255.255.255. This information should be provided by the Helix server administrator.
- port range (port and endPort) - The start and end ports corresponding to the Broadcast Receiver configuration referred to by the address property. This information should be provided by the Helix server administrator.
- transport - The transport corresponding to the Broadcast Receiver configuration referred to by the address property. This must be 'udp/multicast' for Multicast Push.
- password - The password corresponding to the Broadcast Receiver configuration referred to by the address property. This information should be provided by the Helix server administrator.

Refer to Summary of Push Broadcast Settings for a full list of configuration properties

### Linking to a Push broadcast

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

### Push Broadcast Troubleshooting Tips

Following are some tips that may help in troubleshooting problems with setting up a live broadcast:

1. To confirm that the stream has reached the server, check that the stream appears in the Server Monitor's Connections tab. You should see an entry of Type 'encoder' along with the proper filename. The Helix Server Monitor is accessible through the Helix Server Administration interface or directly by typing: http://<server-address>:<server-admin-port>/admin/mongraph.nc.html
2. Ensure that you have the correct URL for the Push broadcast method. For example: rtsp://yourserver.yourcompany.com:554/broadcast/live.rm
3. If you are broadcasting through a firewall performing network address translation (NAT), set the Listen Address property in Helix DNA Producer to the IP Address of the firewall or the value 0.0.0.0. The value of 0.0.0.0 will tell the server to allow an encoder connection from any IP address but still requires the encoder know the password.
4. If broadcasting through other firewall types, check the Helix DNA Producer or Helix Server documentation for port configuration requirements on the firewall.

# 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.

- <destination xsi:type="pullServer" xmlns="http://ns.real.com/tools/server.2.0" xsi:schemaLocation="http://ns.real.com/tools/server.2.0 http://ns.real.com/tools/server.2.0.xsd">
  - <name>
  - <pluginName>
  - <streamname>
  - <path>
  - <listenAddress>
  - <listenPort>
  - <password>
  - <savePassword>
  - <serverTimeout>

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.

## Pull Server Properties

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>

1. 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").

2. 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").

3. 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:

- Configure Helix Server
- Choose Job File Settings
- Linking to a broadcast

Each of these steps are described below in the respective sections.

### Configuring Helix Server for Pull Broadcasting

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:

1. Open the RealNetworks Server Administrator interface in a web browser (e.g. http://<server-ip>:<server-port>/admin/index.html).
2. Go to the Broadcast Distribution > Receiver page.
3. Add an entry to the Broadcast Transmitters list.
4. Enter the following properties for the Broadcast Transmitter.
   - Transmitter Name - A descriptive string used only by the server
   - Transmitter Address - The Address of the machine running Helix DNA Producer. A value of '0.0.0.0' (and a corresponding netmask of 0.0.0.0) will allow connections from IP address (the password is still required to establish a connection).
   - Port Range - The range of ports the server will listen on. This is used to distribute the load across many ports. For encoding, this can be anywhere from 2-10 ports where the total bandwidth across any one port should be no more 1 Mbps (divide the total bandwidth from all encoders by the number of ports to determine the bandwidth through each port).
   - Transport - Use udp/unicast or tcp for single-password push broadcasts
   - Security Type - Set this to 'Basic' in order to require the encoder to supply a password.
5. Enable Pull by choosing 'Yes' to the Enable Pull Splitting Requests dropdown list.
6. Type a Pull Splitting Virtual Path. By default this is '/pull/'
7. Apply the changes (No server restart is required)

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:

1. Note the following for use in Helix DNA Producer:
   - Password (Only required for security type 'Basic')
2. Note the following for use in creating links to the broadcast::
   - IP Address or domain name of the Helix Server
   - Mount Point ( 'broadcast/pull' by default)
   - The IP and listen port for the Helix DNA Producer configuration will also be required for creating links to a Pull Broadcast. See Choosing Job File Settings for Pull Broadcasting below for more details.

### Choosing Job File Settings for Pull Broadcasting

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:

- Use the default server templates shipped with Helix DNA Producer as a template and edit as needed
  - See the 'samples/servers' directory of the Helix DNA Producer application for sample server files
- The Helix DNA Producer command line application can create job files from command line input using the -cj option. Use this method to generate a job file which can be edited and subsequently run using the -j command line option.
- The Helix DNA Producer graphical user interface allows server files to be created as a template from the Edit > Server Templates menu or created in a job file from the File > Add Server Destination menu item.

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:

- listenAddress - The IP address of the Helix DNA Producer. If set to 0, the IP of the primary network interface on that machine is used.
- listenPort - The port that the Helix DNA Producer will listen for requests from a Helix Server on. By default this is 3031.

- 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:

1. Note the following for use in creating links to the broadcast::
   - listenAddress
   - listenPort

### Linking to a Push broadcast

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

### Pull Broadcast Troubleshooting Tips

Following are some tips that may help in troubleshooting problems with setting up a live broadcast:

1. To confirm that the stream has reached the server, check that the stream appears in the Server Monitor's Connections tab. You should see an entry of Type 'encoder' along with the proper filename. The Helix Server Monitor is accessible through the Helix Server Administration interface or directly by typing: http://<server-address>:<server-admin-port>/admin/mongraph.nc.html
2. Ensure that you have the correct URL for the Pull broadcast method. For example: rtsp://yourserver.yourcompany.com:554/broadcast/pull/live.rm
3. If you are broadcasting through a firewall, check the Helix DNA Producer or Helix Server documentation for port configuration requirements on the firewall or try using TCP as the transport method.

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.

- <destination xsi:type="g2PushServer" xmlns="http://ns.real.com/tools/server.2.0" xsi:schemaLocation="http://ns.real.com/tools/server.2.0 http://ns.real.com/tools/server.2.0.xsd">
  - <name>
  - <pluginName>
  - <streamname>
  - <path>
  - <address>
  - <port>
  - <username>
  - <password>
  - <savePassword>
  - <transport>

Refer to Performing G2 Push Broadcasting below for information on how to configure a G2 Push type Broadcast.

## G2 Push Server Properties

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>

1. 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").

2. 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").

3. 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:

- Configure Helix Server
- Choose Job File Settings
- Linking to a broadcast

Each of these steps are described below in the respective sections.

### Configuring Helix Server for G2 Push Broadcasting

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:

1. Add a user account to the SecureEncoder encoder realm
2. Confirm that the G2 to 8.5 Producer settings are correct.

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:

1. Open the RealNetworks Server Administrator interface in a web browser (e.g. http://<server-ip>:<server-port>/admin/index.html).
2. Go to the Broadcasting > RealNetworks Encoding page.
3. Click on the link to Create user names and passwords under the G2 to 8.5 Producer section.
4. Select the SecureEncoder Authentication Realm.
5. Click Add User to Realm
6. Complete and submit the Add User form.

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:

- For the Account-based Push broadcast method, users should be added to the Helix Server SecureRBSEncoder realm.
- For the Legacy Push broadcast method, users should be added to the Helix Server SecureEncoder realm.

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:

1. Open the RealNetworks Server Administrator interface in a web browser (e.g. http://<server-ip>:<server-port>/admin/index.html).
2. Go to the Broadcasting > RealNetworks Encoding page.
3. Modify the Port or Timeout in the G2 to 8.5 Producer section.

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:

1. Note the following for use in Helix DNA Producer:
   - IP Address or domain name of the Helix Server
   - Legacy Encoder Port of the Helix Server (4040 by default)
   - Username and corresponding password for an account in the Helix Server SecureEncoder realm.
2. Note the following for use in creating links to the broadcast::
   - Mount Point ( 'encoder' by default)

### Choosing Job File Settings for G2 Push Broadcasting

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:

- Use the default server templates shipped with Helix DNA Producer as a template and edit as needed
  - See the 'samples/servers' directory of the Helix DNA Producer application for sample server files
- The Helix DNA Producer command line application can create job files from command line input using the -cj option. Use this method to generate a job file which can be edited and subsequently run using the -j command line option.
- The Helix DNA Producer graphical user interface allows server files to be created as a template from the Edit > Server Templates menu or created in a job file from the File > Add Server Destination menu item.

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.

#### Account-based Push

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:

- address - The IP address or domain name of the Helix Server. This information should be provided by the Helix server administrator.
- port - The HTTP listen port of the Helix Server. This information should be provided by the Helix server administrator.
- username - The username of a valid G2 Push user account.
- password - The password corresponding to the username above.

Refer to G2 Push Broadcast Settings for a full list of configuration properties

### Linking to a G2 Push broadcast

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

### G2 Push Troubleshooting Tips

Following are some tips that may help in troubleshooting problems with setting up a live broadcast:

1. To confirm that the stream has reached the server, check that the stream appears in the Server Monitor's Connections tab. You should see an entry of Type 'encoder' along with the proper filename. The Helix Server Monitor is accessible through the Helix Server Administration interface or directly by typing: http://<server-address>:<server-admin-port>/admin/mongraph.nc.html
2. Ensure that you have the correct URL for the G2 Push broadcast method. For example: rtsp://yourserver.yourcompany.com:554/encoder/live.rm
3. If you are broadcasting through a firewall, refer to the Helix Server documentation for port configuration requirements on the firewall or try using TCP as the transport.

# 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.

### Push Account-Based

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.

### Push Single-password

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.

### Push Multicast

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.

### Pull

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"/>
        ....

### Recommended Buffer Size

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.

### Maximum Packet Size

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:

- If bitrate < 20 kbps Then maxPacketSize = 300 Bytes/Packet
- If bitrate < 64 kbps Then maxPacketSize = 600 Bytes/Packet
- Else 900 Bytes/Packet

For video, if the maxPacketSize is not set, there are 3 packet sizes depending on the bit rate

- If avgBitrate > 256000 Then maxPacketSize = 1400 Bytes/Packet
- If avgBitrate > 128000 Then maxPacketSize = 1000 Bytes/Packet
- Else maxPacketSize = 600 Bytes/Packet

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.