This blog has moved!

http://blog.flashvideoexamples.com

RTMP specification now available

Kevin Towes, the Flash Media Server product manager, has just announced that the RTMP spec is available on adobe.com.

Configuring FMS with an SSL hardware accelerator

Flash Media Server supports SSL natively. For information see Configure SSL in the Flash Media Server docs. That said, you may choose to use an SSL hardware accelerator instead.

By default, when Flash Player connects to FMS, it scans the following ports in order: 1935, 443, 80, 80 (RTMP tunneling). To configure a secure port for an adaptor, specify a minus sign in front of the port number in the ADAPTOR.HOSTPORT parameter in the RootInstallationFolder/conf/fms.ini file, as follows:

ADAPTOR.HOSTPORT = :1935,-443

With this config, when Flash Player uses an RTMPS string to connect to FMS it uses port 443. FMS also returns data over port 443. To tell a Flash Player client to make an SSL connection to Flash Media Server, use an RTMPS string (“rtmps://domain/applicationname”) in the NetConnection.connect() call.   Any traffic with an RTMP string (“rtmp://domain/applicationname”) uses port 1935.

In other words, to configure SSL, you need to specify that a port is “secure” by specifying a minus sign in front of the port number in the fms.ini file. Then you specify an SSL connection by using the “rtmps” protocol specifier in the connection URI. If no port is specified, the default port for RTMPS is 443. If you configure any port other than 443 as secure, for example, -1935, you need to explicitly specify the port in the URI, for example, “rtmps://domain:1935/applicationname”.

Configure the hardware to listen externally on port 443 and forward unencrypted data to FMS on port 1935.

If you’re using hardware SSL, you don’t need to complete the configuration steps necessary for using native SSL, the hardware does all the hard work and simply forwards unencrypted RTMP to FMS.

Flash Media Server is a DVR

Adobe has released the Flash Media Server DVRCast application on the Flash Media Server Tools page. DVRCast is a server-side application that turns FMS 3.5 into a DVR. If you aren’t sure what a DVR is, think TiVo. You can pause a live show and start playing it again from where you paused. You can also join events late and rewind to watch from the beginning. DVRCast also gives publishers the ability to fine tune how they deliver DVR streams.

Actually, the DVR functionality is built into FMS 3.5. To publish a DVR stream, just record or append the stream as you publish it–NetStream.publish(“myvideo”, “record”) or NetStream.publish(“myvideo”, “append”). To view a DVR stream, use NetStream.play(“myvideo”, 0, -1). The “0” indicates that you want to play a recorded stream. When you play a live stream that’s being recorded, you’re really watching the recorded stream a hair behind.

Before DVRCast was released, you couldn’t record media captured with Flash Media Live Encoder 3.0. To create a DVR stream (one that viewers can pause, rewind, etc.), you have to record the stream. (OK, the server records the stream, but you tell the server to do it.) DVRCast lets you record media that you capture with FMLE 3.0 and FMLE 3.0 encodes media with better codecs than Flash Player. Ergo, DVRCast is good.

To build a client app that connects to the DVRCast app, you can use the FLVPlayback 2.5 component. (Both Flash and Flex support FLVPlayback 2.5.)  Download FLVPlayback 2.5 from the Flash Media Server Tools page as well. A new version (2.5.0.15) was released with the DVRCast app so you may need to upgrade. Oh, and the FLVPlayback 2.5 component also supports dynamic streaming.

For more information, see Kevin Towes’ blog.

Configuring Flash Media Server to support IPv6 and IPv4

By default, Flash Media Server is configured to support IPv4 only, even if the OS is configured for IPv6. However, one Flash Media Server can support both IPv6 and IPv4 addressing. Edit a config parameter in the Server.xml file to add support for IPv6. The Server.xml file is located in the fms/conf folder (Linux) or Flash Media Server 3.5\conf folder (Windows).

<NetworkingIPv6 enable="true" />

When IPv6 is enabled, if an IPv4 client connects, it has an IPv4 connection. If an IPv6 client connects, it has an IPv6 connection. The server listens for IPv4 and IPv6 addresses. You can see these connections in the server logs. To see an example in an edge log, see Configure IPv6 in the Flash Media Server docs.

Remember, you also have to configure the OS networking stack to support IPv6 and activate IPv6 on the nic– see the OS docs for instructions. Also, to use a numeric IPv6 address in a client-side script, server-side script, or in the server configuration files, enclose the address in brackets:

rtmp://[fd5e:624b:4c18:ffff:0:5efe:10.133.128.108]:1935/streamtest

For link-local addresses, specify the interface zone index:

rtmp://[fe80::204:23ff:fe14:da1c%4]:1935/streamtest