|
Flash Media Server Resources |
Application.xml fileContents [Hide]The Application.xml file contains the settings for Flash Media Server applications. These settings include the size of the Server-Side Media ActionScript runtime engine, the location at which streams and shared objects are stored, and bandwidth limitations. The Application.xml file in the virtual host directory configures the default settings for all applications within the virtual host. If you want to have different settings for a particular application, copy an Application.xml file to the application’s registered application directory (/applications/app_name) and edit it to include the settings you want. In most cases, the settings in the Application.xml file in the application directory override settings in the Application.xml file in the virtual host directory, but not always. You can add an override attribute to certain elements in a virtual host’s Application.xml file, as in the following: <LoadOnStartup override="no">false</LoadOnStartup> The server uses the following rules when applying the override attribute:
Note: By default, the Bandwidth and BandwidthCap container
elements include an override parameter set to yes,
which allows the values for the ClientToServer and ServerToClient elements
nested in these sections to be overridden. The Client element
in this XML file includes an override="no" attribute
by default.
To see the element structure and default values, see the Application.xml file installed with Flash Media Server in the RootInstall/conf/_defaultRoot_/_defaultVhost_ directory. AccessContainer element. The Access plug‑in consists of the libconnect.dll file. It intercepts and examines each connection request to Flash Media Server to determine whether the connection should be accepted or rejected. Access (Logging)Container element. Contains elements that configure logging in the Access log. Contained elementsAccumulatedIFramesContainer element. The elements in this section specify the maximum size and duration of intermediate frames a live stream can hold in the buffer. AggregateMessages (Client)Specifies whether or not to send aggregate messages to clients. When the enabled attribute is set to true, the server will deliver aggregate messages to clients that support them. When this setting is disabled, aggregate messages are broken up into individual messages before being delivered to clients. The default is false. AggregateMessages (Queue)Container element; contains an element that control the size of the aggregate messages. This element also specifies, when queuing is enabled, whether messages in the queue can be combined to form aggregate messages. When the enabled attribute is set to true (the default value), the server creates aggregate messages. The server attempts to send aggregate messages to supported clients whenever possible. When this setting is disabled, aggregate messages are always broken up into individual messages before being delivered to clients. AllowSpecifies whether or not to allow the "following and Location:" header that is sent with redirection of an HTTP header. The default is true, allowing HTTP redirects. AllowDebugDefaultSpecifies the default value for application.allowDebug. This is an opening that allows debug connections on a per application basis. The default value is false. AllowHTTPTunnelThis element configures the server to allow HTTP tunnelling connections into this application. By default, Flash Player communicates with the server using the RTMP protocol over port 1935. If that fails, it will try again over ports 443 and 80 in an attempt to get around firewall settings, which prevents TCP/IP connections over nonstandard ports. In some cases, Flash Player has to negotiate a connection to Flash Media Server through an edge server, or use the HTTP protocol to transmit RTMP packets (called HTTP tunnelling) if there is a firewall that allows only HTTP content to be sent out to public servers. The values for this element are described in the following table.
AudioContainer element. The elements in this section specify the settings for audio streams on the server. AutoCloseIdleClientsContainer element. Contains elements that determine whether or not to close idle clients automatically. Set the enable attribute to true to close idle clients. If the enable attribute is omitted or set to false, the feature is disabled. The default value is false. A client is active when it is sending or receiving data. Use the AutoCloseIdleClients element to specify how often the server should check for idle clients. When a client has been idle longer than the maximum idle time (60 seconds by default), the server sends a status message to the NetConnectionobject (the client). The server closes the client connection to the server and writes a message to the access log. The server also writes a message such as “Client x has been idle for y seconds” in the core and event logs. To configure the closing of idle connections, you must enable the feature in the Server.xml file. Once you enable the feature in the Server.xml file, you can disable the feature for individual virtual hosts in the Vhost.xml files or for individual applications in Application.xml. The values defined in the Vhost.xml configuration file apply to all clients connected to the Vhost, unless values are defined in the Application.xml file. The Application.xml values override the Vhost.xml values. (Subsequently, the values defined in the Server.xml configuration file apply to all clients connected to the server, unless the values are defined in the Vhost.xml file. The Vhost.xml values override the Server.xml values. AudioSampleAccessAllows the client application to access the raw uncompressed audio data in a stream. By default, this element is disabled. To enable it, set the enable attribute to true. In the tag, specify a list of semicolon-delimited folders to which client applications have access. When this element is enabled, all clients can access the audio data in streams in the specified folders. To enable access to all audio data streamed by the server, specify / in the tag. The folder path is restricted to the application’s streams folder or folders, so do not use absolute paths in the list of folders. While you can also enable access through Server-Side ActionScript, this element allows access to the data without requiring Server-Side ActionScript. You can also override this element with the Access plug‑in or Server-Side ActionScript. AutoCommitSpecifies whether shared objects are automatically committed when they have been changed. Setting this element to false disables Flash Player function for all shared objects within this instance. Note: If the AutoCommit function
is disabled, the server-side script has to call the save function
or the SharedObject.commit command for the shared
object to persist; otherwise, all data will be lost when the application
is shut down.
BandwidthContainer element. The elements nested in this container specify the bandwidth settings for upstream (client-to-server) and downstream (server-to-client) data. By default, the Bandwidth element includes an override parameter set to yes, which allows the values for the ClientToServer and ServerToClient elements to be overridden as well. BandwidthCapContainer element. The elements in this section specify the bandwidth settings that a user can set. By default, this element includes an override parameter set to yes, which allows the values for the ClientToServer and ServerToClient elements nested in this section to be overridden, too. BandwidthDetectionContainer element. This element contains settings for how the server detects bandwidth. Set the enable attribute to true or false to turn this feature on or off. The server can detect client bandwidth in the core server code (native) or in a server-side script (script-based). Native bandwidth detection is enabled by default and is faster than script-based because the core server code is written in C and C++. The server detects bandwidth by sending a series of data chunks to the client, each larger than the last. You can configure the size of the data chunks, the rate at which they are sent, and the amount of time the server sends data to the client. The following table lists the values available for the BandwidthDetection element.
BitsCachePrefixSpecifies the cache prefix that is passed from the origin server to the edge server. This element is set on the origin server. The edge server uses the value of this element as a relative path to locate the cache file defined in the CacheDir element. The type attribute provides additional specification for the cache prefix. The type attribute can be set to path or sname. The default is path. Examples<CachePrefix type="path"></CachePrefix> When the attribute type is path, the server appends the physical path of the recorded stream to the prefix. <CachePrefix type="sname"></CachePrefix> When the attribute type is sname, the server appends the stream name to the prefix. The cache prefix is any text with or without preset parameters. The prefix can be any name without special characters, such as \, :, *, ?, ", <, >, |. All parameters are surrounded by “?”. The server substitutes the actual names for everything specified within the “?”. By default, the prefix is set to ?IP?.
You can include the IP address in the prefix to avoid file collision. For example, the edge server might be connecting to two different origin servers with the same file in c:\data\foo.flv. Adding the IP to the prefix for these files points each file to the appropriate server. If you want more than one origin server to share the cache file, do not include the IP as a parameter. Remember the cache prefix is a relative path used by the edge server to look up the cache stream file. ExamplesThe cache prefix creates a relative path in the edge’s CacheDir. All parameters are separated by \ or /. <CachePrefix type="path">c:\fms\flvs\foo.flv. data/?IP?</CacheDir> resolves to: data/xxx.xxx.xxx.xxx/c/fms/flvs/foo.flv <CachePrefix type="path">?APPINST?/data</CacheDir> resolves to: app1/inst1/data/c/fms/flvs/foo.flv <CachePrefix type="path">origin1/data/</CacheDir> resolves to: origin1/data/c/fms/flvs/foo.flv CacheUpdateIntervalThis element defines the wait interval for updating cache streaming in the edge server. The interval is defined in milliseconds. The default value is 10 minutes. The minimum interval is 10 seconds. The maximum interval is 24 hours. CheckpointsMany companies use statistics from the access log to bill customers. If your programming includes live events or 24/7 programming, the events you use to calculate billing might not occur within a billing cycle. To solve this problem, you can enable checkpoint events. Checkpoint events log bytes periodically during an event. The following are available as checkpoint events: connect-continue, play-continue, and publish-continue. Logging checkpoint events to the Access log is enabled in the Vhost.xml file by default. You can disable logging checkpoints for this application, or change the checkpoint interval of this application. If the checkpoint interval is not specified in the Application.xml file, or if the value is invalid, the server uses the value set in the Vhost.xml file. Contained elementsClientContainer element. The elements nested within this container configure the client. By default, the Client element includes an override="no" parameter. Individual applications cannot override how the elements in the Client section are configured. Contained elementsBandwidth, BandwidthCap, BandwidthDetection, MsgQueue, HTTPTunnel, MaxMessageSizeLosslessVideo, OutChunkSize, ClientToServer (Bandwidth)Specifies the bandwidth the client can use for sending data upstream to the server. The default bandwidth is 1,250,000 bytes per second. You can configure this value in the Bandwidth section of XML and in the BandwidthCap section of XML. The values in the Bandwidth section can be overridden, but the values in the BandwidthCap section are not. This allows ISPs to host applications for customers and ensure that no customer abuses the bandwidth limit. For example, a customer can set any bandwidth limit for their applications, but cannot exceed the caps set by the ISP. ClientToServer (BandwidthCap)Specifies the maximum bandwidth a client can send to the server. The default bandwidth is 100,000,000 bytes per second. You can configure this value in the Bandwidth section of XML and in the BandwidthCap section of XML. The values in the Bandwidth section can be overridden, but the values in the BandwidthCap section are not. This allows ISPs to host applications for customers and ensure that no customer abuses the bandwidth limit. For example, a customer can set any bandwidth limit for their applications, but cannot exceed the caps set by the ISP. CombineSamplesContainer element. The server conserves system resources by combining sound samples. This strategy saves the CPU and bandwidth overhead when transmitting individual audio packets only. Note: Use this strategy of combining sound samples
advisedly during periods of high CPU usage, as it can cause latency.
ConnectionsContainer element. The elements in this section configure the HTTP connections for this application. DataSizeSpecifies the amount of data in bytes that the server sends to the client. To detect the client’s bandwidth, the server attempts to send a series of random blocks of data to the client, each time sending this much more data. For example, x bytes are sent, followed by 2x bytes, followed by 3x bytes, and so on until MaxWait time has elapsed. DebugContainer element. The elements in this section configure debug connections, including the maximum number of connections and the value for application.allowDebug. DiagnosticSpecifies whether diagnostic logging for the message queue is enabled. The default value is false. See alsoDirLevelSWFScanSpecifies the number of levels of subfolders within a parent folder to scan for SWF files. The parent folder is specified in the SWFFolder element. Specifying a positive value scans that number of subfolder levels. Specifying zero scans the parent folder and no subfolders. Specifying a negative value scans all subfolder levels. The default value is 1, which means that the server scans only one subfolder level. See alsoDisallowedProtocolsSpecifies
which protocols cannot be used to connect to an application. You
can specify rtmp, rtmps, or rtmpe.
Specifying rtmp includes rtmp and rtmpt connections.
Specifying rtmpe includes rtmpe and rtmpte connections. Specify
protocols in a comma delimited list. Any protocol not specified
is allowed. For example, the following XML disallows rtmp and rtmps
and only allows clients to connect over rtmpe:
<DisallowedProtocols>rtmp,rtmps</DisallowedProtocols> The default value is blank, which allows all protocols to connect to the server. DistributeSpecifies how to distribute application instances to processes. The default value is insts, meaning each application instance runs in its own process. This tag contains a numprocs attribute, which specifies the maximum number of processes to run concurrently. The default value of the numprocs attribute is 3. This feature is turned on by default. To use this feature, the numprocs attribute must be set to a value higher than 0 or 1. With the default configuration, for all your applications and application instances under a single virtual host, three core processes will run. Each virtual host is allotted three core processes, so systems that use multiple virtual hosts will generate more running processes. Note: There is no limit to the value of the numprocs attribute,
but you should never need more than 40.
Scopes have an enclosing relationship with a strict ordering: adaptors contain virtual hosts, which contain applications, which contain instances, which contain clients. The value of the Distribute tag must be a scope that is lower in order than the value in the Scope tag. In other words, if the value of Scope is adaptor, the value of Distribute can be vhosts, apps, insts, or clients. If the value of Scope is app, the value of Distribute can be insts or clients. By default, the server uses the value immediately lower than the one specified in the Scope tag. The following table lists the values available for the Distribute element:
DuplicateDirThis is one of two DuplicateDir elements in the Application.xml file: one is in the SharedObjManager container and one is in the StreamManager container. Specifies the physical location where duplicate copies of shared objects or recorded streams are stored. This location serves as a backup for shared object files and recorded stream files. This location must already exist when a shared object is copied to it. DurationThis element instructs the server how long, in seconds, to wait before it notifies the client when the audio has stopped in the middle of a live or recorded audio stream. The default wait time is 3 seconds. The minimum wait time is 1 second. There is effectively no maximum value (the maximum is the maximum value of a 32-bit integer). EnabledSpecifies whether diagnostic logging for the message queue is enabled. The default value is false. See alsoEnhancedSeekThis element enables or disables fine-tuning of the seeking performance within streams by creating a keyframe. Keyframes improve the visual display of video files while seeking. When set to true, a new keyframe is dynamically generated to provide smooth seeking to that index point. Note: The server generates new keyframes for Sorenson
Spark-encoded FLV files. For On2 VP6, the new keyframe is calculated
and generated in Flash Player 9a or later. For H.264-encoded video,
the new keyframe is calculated and generated in Flash Player 9 Update
3 or later.
The default value is true. The server does not insert keyframes and all seeks begin at the nearest existing keyframe. EraseOnPublishWhen set to true, the server erases a recorded stream when a new publisher starts publishing. By default, this setting is disabled and the server does not erase a recorded stream. See alsoExceptionThis element indicates that a specific user agent is an exception to authentication. Use the from and to attributes to indicate the lowest and highest versions to except. This is a string comparison with editing to make all numeric fields equal length. For example, using a specific Flash Player will report WIN 9,0,28,0 as its UserAgent. Add To="WIN 9,0,28,0" and From="WIN 9,0,28,0" and only that version is an exception. FileObjectContainer element. The VirtualDirectory element nested within this container configures the JSEngine file object settings. FinalHashTimeoutThis element defines the maximum amount of time that a client can use to provide its final verification to the server. See alsoFirstHashTimeoutThis element defines the maximum amount of time that a client can use to provide its first verification to the server. See alsoFlushOnDataSpecifies whether the server flushes the message queue when a data message arrives. This element is important for streaming data-only messages, so the server can send out the messages immediately. The default is true. FolderAccessConfigures the level of permission that the Access plug-in can set for accessing streams and shared objects. This allows two levels of permissions: file-level access (a value of false), which allow access to a particular file only, and folder-level access (a value of true), which allows access to a particular directory. HiCPUThis element instructs the server to start combining samples when CPU utilization is higher than the specified percentage of CPU resources. The default percentage of utilization is 80. HTTPContainer element. The elements in this section configure the HTTP connection settings for this application. HTTP1_0This element determines whether or not the server can use the HTTP 1.0 protocol. The default is false, disallowing the use of the HTTP 1.0 protocol. HTTPTunnelContainer element. The elements nested within this container configure the parameters for HTTP tunnelling (sending RTMP packets through HTTP). The tunnelling protocol is based on the client continuously polling the server. The frequency of polling affects both network performance and the efficiency of the HTTP protocol. The IdleAckInterval and IdlePostInterval elements control the polling frequency on a per-client basis. Selecting too small a delay value for the above parameters will increase the polling frequency and reduce network performance and efficiency. Selecting too high values can adversely affect the interactivity of the application and the server. The Application.xml configuration file offers three settings for these parameters. The following table presents these settings.
IdleAckIntervalSpecifies the maximum time the server may wait before it sends back an ack (acknowledgement code) for an idle post sent by the client. The server may respond sooner than the value of this element if it has data to send back to the client or if some other client is being blocked by the current idle request. This interval implies that the client may not be able to reach the server for the selected duration. The interval cannot be set to a negative value. The default interval is 512 milliseconds. IdlePostIntervalSpecifies how long Flash Player should wait before sending an idle post to the server. Idle posts are sent when Flash Player has no data to send, but posting is necessary to provide the server with an opportunity to send data downstream to the client. The interval for an idle post ranges from 0 to 4064 milliseconds. If the IdlePostInterval element is set to a value that lies outside of this range, the default value of 512 milliseconds is used. Note: At times, the server will not be able to send
any data to the client for the selected duration.
InterfaceThis element defines the name to use as the outgoing network interface. The name can be an interface name, an IP address, or a host name. IntervalSpecifies the interval in milliseconds for sending silence messages when no audio is being published to a live stream. Silence messages are used to support older versions of Flash Player. The server only sends the silence message to clients specified in the UserAgent element in the Client section. Bit-flag 0x01 is used to control the silence message. The default interval is 3 seconds. Set this to 0 to disable silence message transmission. JSEngineContainer element. The elements nested within this container configure the JavaScript engine. In the server Application.xml configuration files, you can define properties for the server-side Application object. Defining properties in the default Application.xml file creates properties available for all applications on a virtual host. Defining properties in an Application.xml file in an application folder creates properties available for that application only. To define a property, create an XML tag. The property name corresponds to the tag’s name, and the property value corresponds to the tag’s contents. ExampleThe following XML fragment defines the properties user_name and dept_name, with the values jdoe and engineering, respectively: <JSEngine>
<config>
<user_name>jdoe</user_name>
<dept_name>engineering</dept_name>
</config>
</JSEngine>
To access the property in server-side code, use the syntax in either of these examples: application.config.prop_name application.config["prop_name"] Note: The
properties you define are accessible from application.config.property,
not from application.property.
Contained elementsRuntimeSize, MaxGCSkipCount, MaxTimeOut (JSEngine), ScriptLibPath, FileObject, XMLSocket, NetConnection KeyFrameIntervalThis element defines how often to generate and save keyframes in an FLV file. The initial value is 60000, which is the recommended value. However, if this tag is unspecified or set to a value out of range, the server uses a default value of 1000. Setting this element to a higher value than the initial value reduces the number of keyframes added to the FLV file and thus reduces the file size. Setting a higher value for the interval, however, reduces the seeking accuracy. The value of this element is defined in milliseconds. For example, a 15-second video with a file size of 76 KB is increased only to 89 KB when the KeyFrameInterval element is set to 5000, which is an increase of 13 KB, or 17%. The same video has a size of 109 KB with the KeyFrameInterval element set to 1000, which is an increase of 33 KB, or 43%. Note: Be aware of the correlation between file size
and accuracy of seeking when you set this value.
Live (StreamManager)Container element. The elements nested within this container configure the intermediate frames in a live stream and the message queue, and the amount of time the server waits before allowing another publisher to take over a live stream. Contained elementsAccumulatedIFrames, Queue, PublishTimeout, StartClockOnPublish, MaxLatency, EraseOnPublish LoadOnStartupThis element determines whether or not the server loads an application instance when the server starts. Having an application instance loaded at server start-up saves time when the first client connects to that application. The default value is false. If you set this element to true, an instance of each application on the server will be loaded at start-up. LockTimeoutSpecifies the timeout value before automatically unlocking a shared object if there is a client waiting for an update. The timeout value is specified in seconds. The default value is -1, which instructs the server to wait for an indefinite time. LoCPUThis element instructs the server to stop combining samples when CPU utilization is lower than the specified percentage of CPU resources. The default percentage of utilization is 60. MaxAggMsgSizeSpecifies the maximum size in bytes of the aggregate messages created from the message queue, when aggregate messages are enabled. The default value is 4096. MaxAppIdleTimeSpecifies the maximum time an application instance can remain idle with no clients connected before it is unloaded from the server’s memory. An application instance is evaluated as idle after all clients disconnect from it. If the application instance is loaded with no clients connected, it is not evaluated as idle. The maximum idle time is specified, in seconds. The default is 600 seconds (10 minutes). MaxAudioLatencySpecifies that live audio should be dropped if audio exceeds the time specified. Time is expressed in milliseconds. MaxBufferRetriesSpecifies the maximum number of attempts to start buffering stream data. This configuration tag prevents the server from indefinitely trying to buffer data that is never delivered by the origin server. It is only applicable in edge servers. The default value of 128 is sufficient in most cases. MaxCoresThe value of this element determines how many core processes can exist for an application. By default, the MaxCores function is disabled. The default value is zero. For more information on setting the maximum number of core processes, see Configure how applications are assigned to server processes. MaxDurationSpecifies the maximum duration, in seconds, of a recorded file. The value 0 disables recording. The value -1 means there is no maximum duration. The default value is -1. Set this parameter when you deploy a DVR application to prevent the disk from exceeding its capacity. Note: The F_STREAM_RECORD_MAXDURATION field in
the Authorization plug-in can override this value.
See alsoMaxDurationCapSpecifies the cap on the maximum duration (in seconds) of a recorded file. Values set in the MaxDuration element or in Server-Side ActionScript cannot exceed this value. Setting the value 0 disables recording. Setting the value -1 removes the maximum duration cap. The default value is -1. This element allows ISPs to host applications for customers and ensure that no customer abuses the MaxDuration limit. For example, a customer can set any MaxDuration for their applications, but cannot exceed the MaxDurationCap set by the ISP. Note: The F_STREAM_RECORD_MAXDURATION field in
the Authorization plug-in can override this value.
See alsoMaxGCSkipCountSpecifies the maximum number of times that the server will skip garbage collection (GC) when the JS engine is busy. This element determines the frequency of the garbage collection process. By default, the server only performs GC when the JS engine is not busy. However, the JS engine does not necessarily perform GC when it is busy, so in some cases you must force the server to perform GC regardless of the JS engine state. If MaxGCSkipCount is set to 0, the server forces a GC regardless of the JS engine state. If MaxGCSkipCount is set to a positive value, the server forces a GC when the skip count exceeds the value in MaxGCSkipCount. MaxFailuresThe value of this element determines the maximum number of core process failures that can occur before a core process is disabled. Once the core processes are disabled, the server does not launch a core process until some minimum recovery time has elapsed. Having a time lag for recovery avoids a denial-of-service action, which can happen when a faulty core consumes all CPU resources by repeatedly launching itself. MaxIdleTimeThe maximum time a client can be idle before the server closes the connection. This value is set in the Vhost.xml file by default. You can set the value in the Application.xml file to override the Vhost.xml setting for an application. See alsoMaxInitDelayThe maximum number of seconds used to process SWF files. The default value is 5 seconds. Example<MaxInitDelay>5</MaxInitDelay> ExampleMaxLatencyThe maximum latency, in milliseconds, of incoming messages in a live stream. When a server-side script injects a data message into a live stream, this setting determines the timestamp of the message. If the injection time is larger than MaxLatency, the server adds the time difference between the last message time and the injection time to the timestamp of the data message. Otherwise, the timestamp is the last message time. The default value is 500. The minimum value is 0. See alsoMaxPendingDebugConnectionsSpecifies the maximum number of pending debug connections. The default is 50. (If the number is set to 0, debugging connections are disabled.) Once the specified number is reached, the oldest pending debug connection is rejected to create space. MaxPropertySizeThe maximum size in bytes for each property of a shared object. To specify unlimited size, use -1. MaxQueueDelaySpecifies how often the server will flush the message queue, in milliseconds. The default value is 500 milliseconds. MaxQueueSizeSpecifies how often the server will flush the message queue, in bytes. A value of 0 disables queuing. The default value is 4096. MaxRateSpecifies the maximum rate in Kbps at which the server sends data to the client. The default value of -1 sends the data at whatever rate is necessary to measure bandwidth without throttling. MaxSamplesSpecifies how many sound samples can be combined into one message. The default number of samples is 4. MaxSize (AccumulatedIFrames)Specifies the maximum size, in kilobytes, of intermediate frames that a live stream can hold in the buffer. The buffer contains a history of the video messages up to the last keyframe. This enables clients to catch up to the latest message even if they join between keyframes. If the buffer size is larger than MaxSize, the server clears the messages. This setting prevents the buffer from growing too large and should be set larger than the total size of intermediate frames between keyframes. A default value of -1 means the size of intermediate frames is unlimited. MaxSize (Recording)Specifies the maximum size, in kilobytes, of a recorded file. The value -1 means there is no maximum size. The value 0 disables recording. The default value is -1. Set this parameter when you deploy a DVR application to prevent the disk from exceeding its capacity. Note: The F_STREAM_RECORD_MAXSIZE field in the
Authorization plug-in can override this value.
See alsoMaxSizeCapSpecifies the maximum size cap, in kilobytes, of a recorded file. The value -1 means there is no maximum size. The value 0 disables recording. The default value is -1. This element allows ISPs to host applications for customers and ensure that no customer abuses the MaxSize limit. For example, a customer can set any MaxSize for their applications, but cannot exceed the MaxSizeCap set by the ISP. Note: The F_STREAM_RECORD_MAXSIZE field in the
Authorization plug-in can override this value.
See alsoMaxStreamsBeforeGCSpecifies that garbage collection (GC) should be forced if the stream list grows over the set value. The default value is -1 (unlimited). GC occurs during the application GC interval. MaxTimeSpecifies the maximum duration, in seconds, of intermediate frames that a live stream can hold in the buffer. The buffer contains a history of the video messages up to the last keyframe. This enables clients to catch up to the latest message even if they join between keyframes. If the duration in the buffer is larger than the MaxTime, the server clears the messages. This setting prevents the buffer from growing too large and should be set larger than the keyframe interval. The default value of -1 means the duration is unlimited. MaxTimeOut (Connections)This element defines the maximum time for a transfer to be completed. The default time is 60 seconds. Operations such as DNS lock-ups may take more time. If the value of this element is too low, the risk of aborting correctly functioning operations increases. MaxTimeOut (JSEngine)The maximum time, in seconds, a script can take to execute a JavaScript (Server-Side ActionScript) function. If its execution takes longer than the maximum allowed time, then the script is evaluated as a runaway script and its execution is terminated. Setting a maximum time to execute a script prevents infinite looping in scripts. The default value is 0 and no checks are performed to detect runaway scripts. This setting may be useful in a debugging environment. In a production environment, after the applications and scripts have been thoroughly tested, you should set this element to a more realistic value that does not impose limits on the time scripts take to execute. MaxUnprocessedCharsSpecifies how much data can be received from an XML server (without receiving an end tag) before XMLSocket closes the connection. This can be overridden by each XMLSocket by specifying the property XML.maxUnprocessedChars, but that number cannot exceed the number specified in this element. MimeTypeSpecifies the default MIME (Multi-purpose Internet Mail Extensions) type header sent on tunnel responses. The server generally uses the MIME type specified by the incoming requests. The server will use the entry for the MIMEType element only when it is unable to determine the MIME type from the incoming requests. MinBufferTime (Live)Specifies the default buffer length in milliseconds for the live audio and video queue. MinBufferTime (Recorded)Specifies the default buffer length in milliseconds for audio and video. The value cannot be set below this by Flash Player. MinGoodVersionSpecifies the minimum accepted version of SWF verification allowed by the server. The default value is 0, which allows the current and all future versions. MinQueuedVideoThe minimum number of video messages to queue at the start of a stream. Streams that use H.264 or any other pipelined codec need messages to begin playback. This setting ensures that regardless of the buffer setting there are enough messages to begin playback quickly. Setting this value to less than 64 may cause content with a low FPS to delay before starting. The default value is 64. See alsoMsgQueueContainer element. The elements nested within this container configure live and recorded audio. NetConnectionContainer element. The element nested within this container specifies object encoding to use for SSAS NetConnection. NotifyAudioStopContainer element. The Duration element nested within this container determines whether or not the server is notified when an audio transmission ending on a stream is encountered. ObjectEncodingSpecifies the default object encoding to use for SSAS NetConnection. This can be AMF0 or AMF3. The default is AMF3. The default can be overridden for each individual NetConnection by setting the NetConnection.objectEncoding property to either 0 for AMF0 or 3 for AMF3. OutChunkSizeSpecifies the RTMP chunk size in bytes to use in all streams for this application. The server breaks stream content into chunks of this size. Larger values reduce CPU usage but cause larger writes that can delay other content on lower bandwidth connections. This can have a minimum value of 128 bytes and a maximum value of 65536 bytes. The default value is 4096. Note that older clients might not support chunk sizes larger than 1024 bytes. If the chunk setting is larger than these clients can support, the chunk setting is capped at 1024 bytes. OverridePublisherDeprecated; see the PublishTimeout element. Specifies whether a second client is able to take over the ownership of a live stream when the stream is already published by another client. The default value is false. If set to true, add application logic to avoid stream name collision. PrioritizationSpecifies whether outgoing messages are prioritized by message type when sending across a server-to-server connection. This setting is relevant for multi-point publishing. By default, prioritization is set to false, which is the correct setting to avoid possible latency when server-side NetStream objects are used to publish messages to remote servers. Messages are sent out through one channel and all messages have the same priority. If the value is set to true, the server sends messages through multiple channels and prioritizes messages based on the message type, as follows (where 1 has the highest priority):
ProcessContainer element. The elements nested within this container determine how a core process is managed. The following table lists descriptions of the contained elements.
PublishTimeoutSpecifies how long in milliseconds the server waits to receive a response from a publisher when another client tries to publish to the same stream. If a client tries to publish to the same live stream that is being published by another client, Flash Media Server pings the first publisher and waits to receive a response. If the first publisher fails to respond within the time specified in this tag, the server allows the second publisher to take over the live stream. The default value is 2000 milliseconds. To prevent the server from pinging the first client, disable this setting by setting the value of the tag to -1. This tag replaces the OverridePublisher tag. QualifiedStreamsMappingEnables mapping of virtual stream paths to different physical locations. This tag is applicable when using the Authorization plug‑in. When a client requests to play a stream, an E_FILENAME_TRANSFORM event occurs in the Authorization plug‑in. You can map the stream differently for each client in the F_STREAM_PATH property of your Authorization plug‑in code. For example, suppose client 1 and client 2 both request to play myStream.flv. You can remap the stream to c:\video1\myStream.flv for client 1 and c:\video2\myStream.flv for client 2. QueueContainer element; contains elements that configure the settings of the message queue. A message queue is used to buffer incoming messages from the publisher so that the server can send messages in chunks to the subscribers. You can disable queuing so that individual messages are immediately sent to subscribers. To disable queuing, set the enabled attribute to false. RecordedContainer element. The element nested within this container specifies the ratio of buffer length used by the server-side stream to the live buffer. RecordingContainer element. The elements nested within this container specify the duration and file size of files recorded by the server. Contained elementsMaxDuration, MaxDurationCap, MaxSize (Recording), MaxSizeCap RecoveryTimeSpecifies the recovery time for a core. The server will not launch a core process until some minimum recovery time has elapsed. The time lag for recovery can avoid a denial-of-service action, which happens when a faulty core process consumes all CPU time by repeatedly launching itself. The recovery time for a core process is specified, in seconds. A value of 0 disables any checking for process failures. Note: Loading an application with Flash Media Administration
Server tools or APIs bypasses this check.
RedirectContainer element. The elements nested within this container configure the settings for redirecting the HTTP connection. ResyncDepthThis element instructs the server to resynchronize a shared object file. The shared object is resynchronized when its version number is greater than the head version minus the current version. The default value of -1 sends a resynchronized version of the file with every connection. ReuseThis element configures whether or not the server explicitly closes the HTTP connection after each transfer. The default is to reuse connections. Set this to false to use a new connection after every transfer. RollOverSpecifies how many seconds a core process can be in use before the server creates a new core process. After the time limit for a core is reached, a new core is instantiated. All subsequent connections are directed to the new core. The rollover functionality is disabled by default. The default value is 0 (seconds). For more information on rollover processes, see Configure how applications are assigned to server processes. RuntimeSizeSpecifies the maximum size in kilobytes that a particular application instance can use to run Server-Side ActionScript code before the server removes unreferenced and unused JavaScript objects. The default size is 1024 kilobytes, which is the equivalent of 1 megabyte. The lower and upper limits on the size of the JavaScript engine are 10 kilobytes and 51200 kilobytes (50 megabytes). The default value applies when the engine size lies outside of these limits. If your application consumes a significant amount of memory, you must increase the engine size. If you create a new script object that will cause the runtime size of the application instance to exceed the value of this element, an out-of-memory error occurs and the application instance is shut down. In most cases, increasing the engine size to 30720 (30 MB) is sufficient to run intensive Server-Side ActionScript operations. ScopeThis element determines the level at which application instances are assigned to core processes. Starting Flash Media Server starts a process called FMSMaster.exe (Windows) or fmsmaster (Linux). Application instances run in processes called FMSCore.exe (Windows) fmscore (Linux). The master process is a monitor that starts core processes when necessary. Only one master process can run at a time, but many core processes can run at the same time. Settings in an Application.xml file in a virtual host folder apply to all applications running in that virtual host. Settings made in an Application.xml file in an application’s folder apply only to that application. The following table lists the values available for the Scope element.
ScriptLibPathThis element is a list of paths delimited by semicolons instructing the server where to look for server-side scripts loaded into a main.asc file with the load() method. These paths are used to resolve a script file that is loaded with the load API. The server first looks in the location where the main.asc or application_name.asc file is located. If the script file is not found there, the script engine searches, in sequence, the list of paths specified in this element. SendDuplicateOnMetaDataSpecifies whether an onMetaData message is sent at the beginning of video files when the play and seek commands are called. The default value is true. The following values are available:
SendDuplicateStartSpecifies whether status message NetStream.Play.Start is sent for all commands, including play, seek, and unpause. If set to false, only the play command receives the start message. SendSilenceContainer element. The Interval element nested within this container configures the settings for sending silent messages. ServerContainer element. Contains two elements: BufferRatio, which specifies the ratio of the buffer length used by the server-side stream to the live buffer, and Prioritization, which specifies whether to prioritize outgoing messages for server-to-server connections. ServerToClient (Bandwidth)Specifies the bandwidth in bytes per second that the server can use for sending data downstream to the client. The default bandwidth is 250,000 bytes per second. You can configure this value in the Bandwidth section of XML and in the BandwidthCap section of XML. The values in the Bandwidth section can be overridden, but the values in the BandwidthCap section are not. This allows ISPs to host applications for customers and ensure that no customer abuses the bandwidth limit. For example, a customer can set any bandwidth limit for their applications, but cannot exceed the caps set by the ISP. ServerToClient (BandwidthCap)Specifies the maximum bandwidth in bytes per second that the server can use for sending data downstream to the client. The default bandwidth is 10,000,000 bytes per second. You can configure this value in the Bandwidth section of XML and in the BandwidthCap section of XML. The values in the Bandwidth section can be overridden, but the values in the BandwidthCap section can not. This allows ISPs to host applications for customers and ensure that no customer abuses the bandwidth limit. For example, a customer can set any bandwidth limit for their applications, but cannot exceed the caps set by the ISP. SharedObjManagerContainer element. The elements nested within this container configure the Shared Object Manager setting of an application. Contained elementsStorageDir, DuplicateDir, ResyncDepth, LockTimeout, AutoCommit, MaxProperties, MaxPropertySize StartClockOnPublishSpecifies whether the stream time is sensitive to the difference between publish time and the arrival of the first stream message. The default value is false. To use dynamic, multibitrate streaming, leave this value false. See alsoStorageDirSpecifies the physical location where shared objects or streams are stored. By default the physical location is not set. Set this element only if the files for shared objects or recorded streams must be stored in a location other than the application directory. StreamManagerContainer element. The elements in this section configure the Stream Manager settings for this application. Contained elementsStorageDir, DuplicateDir, CachePrefix, CacheUpdateInterval, MaxBufferRetries, ThrottleBoundaryRequest, ThrottleLoads, ThrottleDisplayInterval, EnhancedSeek, KeyFrameInterval, MaxStreamsBeforeGC, Audio, Live (StreamManager), SendDuplicateStart, SendDuplicateOnMetaData, MaxSize (Recording), MaxSizeCap, MaxDuration, MaxDurationCap SubscribersThis element instructs the server to combine sound samples only if there are more than the default number of subscribers to that stream. The default number of subscribers is 8. SWFFolderSpecifies a single folder or a semicolon-delimited list of folders containing copies of client SWF files. The server compares these SWF files to client SWF files connecting to applications on the server. The default value of the SWFFolder element is the application's folder appended with /SWFs. Use a semicolon to separate multiple directories. SWF files located under an instance named folder can only connect to that specific instance. SWFVerificationContainer element. Specifies how the server verifies client SWF files before allowing the files to connect to an application. Verifying SWF files is a security measure that prevents someone from creating their own SWF files that can attempt to stream your resources. For more information, see Verify SWF files. Note: SWF files connecting to Flash Media Administration
Server cannot be verified.
Contained elementsSWFFolder, MinGoodVersion, DirLevelSWFScan, MaxInitDelay, FinalHashTimeout, FirstHashTimeout, UserAgentExceptions, Cache ThrottleBoundaryRequestControls the maximum number of concurrent boundary requests per recorded stream. When streaming through a proxy server, the boundary information about video segments are sent to the proxy server by request. The default value is 8. ThrottleDisplayIntervalControls the interval at which the server displays the throttle queue length. The default value is 64, which means the server displays the message 1 out of 64 times when the throttle queue is full. ThrottleLoadsControls the maximum number of concurrent segment loads per recorded stream. When streaming through a proxy server, video segments are sent to the proxy server by request. The default value is 8. TTLSpecifies in minutes how long each SWF file remains in the cache. The default value is 1440 minutes (24 hours). UnrestrictedAuthA Boolean value that determines whether or not to allow sending the user name/password combination with each HTTP redirect. Sending the user name/password combination is useful only if the Allow element permits redirections. The default setting is true. UserAgentContainer element. The settings for clients vary according to whether Flash Player platform is Windows or Macintosh. Setting the value 0x01 will configure the player and platform for silent messages. UserAgentExceptionsContainer element. Contains an element that specifies a user agent that should be an exception to authentication. Use the to and from attributes to indicate the lowest and highest versions to except. VerboseThis element determines whether or not the server outputs verbose information during HTTP operations. VideoSampleAccessAllows the client application to access the raw uncompressed video data in a stream. By default, this element is disabled. To enable it, set the enable attribute to true. In the tag, specify a list of semicolon-delimited folders to which client applications have access. When this element is enabled, all clients can access the video data in streams in the specified folders. To enable access to all video data streamed by the server, specify / in the tag. The folder path is restricted to the application’s streams folder or folders, so do not use absolute paths in the list of folders. While you can also enable access through Server-Side ActionScript, this element allows access to the data without requiring Server-Side ActionScript. You can also override this element with the Access plug‑in or Server-Side ActionScript. VirtualDirectorySpecifies virtual directory mappings for Server-Side ActionScript File objects. For more information, see comments in the Application.xml file and Mapping virtual directories to physical directories. WindowsPerAckControls how many messages can be sent before receiving an acknowledgement from the other end. Note: Adobe recommends that you do not change the value of this
element.
XMLSocketContainer element. Contains an element that specifies how much data can be received from the XML server (without receiving an end tag) before XMLSocket closes the connection. This can be overridden by each XMLSocket by specifying the property XML.maxUnprocessedChars, but that number cannot exceed the number specified in this element. |