Adobe's Emerging Rich Media Ecosystem, Part 2: Developing Live and Video on Demand Streaming Media Applications
H.264 Video and HE-AAC Audio Support
Adobe has moved beyond native Flash file formats to advanced standards like H.264 and HE-AAC. With Flash Media Server and Flash Player supporting H.264 video, there's no reason to use anything else. This is a move towards a more open, standards-based digital world, and I expect most online video will be using these formats by the end of 2008.
Flash Player 9 Update 3 and AIR support video and audio encoded in H.264 and HE-AAC from within MPEG-4 standard file formats, which stream high quality video at lower bit rates. Today, developers can leverage industry standard tools, including Adobe Premiere Pro and Adobe After Effects, to create and deliver compelling video content. All editions of Flash Media Server 3 can stream H.264 and HE-AAC content to Flash Player 9 Update 3 and AIR.
Note: The H.264 and HE-AAC standards provide support for up to 1080p HD. 1080p resolution—which equates to 1,920 x 1,080 pixels—is the latest HD Holy Grail. That's because 1080p monitors are theoretically capable of displaying every pixel of the highest-resolution HD broadcasts. On paper, they should offer more than twice the resolution of today's 1,280 x 720, or 720p, HDTVs. There is a growing selection of consumer televisions with support for both 1080p inputs and outputs.
The new Adobe Media Player, an AIR application, will also support H.264, HE-AAC, and encrypted video content using the new Flash Media Rights Management Server, which will be discussed in the next and final article of this three-part series.
H.264 is the same format used by Apple for their QuickTime videos and for BluRay DVDs. With H.264 now supported by Adobe as well, I wouldn't be surprised if one of the biggest changes in 2008/2009 is the death of proprietary video codecs.
Flash Media Server doesn't encode or decode audio and video information; it streams media that has already been encoded. To encode and stream media that has already been captured (in other words, media that is not live), use any codec that supports the version of Flash Player or AIR that you want to target.
To capture, encode, and stream live video, you can use either Flash Media Encoder or use ActionScript to build your own Flash Player or AIR client.
Factors Affecting Performance
This section explains how performance for Flash Media Server 3 is affected by different conditions. Measuring performance can be done by comparing the number of concurrent streams for a given CPU utilization. Knowing how many streams a server will support will help you understand how many servers you need to deploy.
The number of streams a server can deliver is dependent upon a number of conditions, including:
- Protocol: RTMP is the highest performing protocol, followed by RTMPE.
- Video bitrate (quality): The lower the bitrate of your video, the more concurrent streams can be delivered by your server.
- Platform: You can deliver more connections, as shown in Figure 7, with less CPU usage utilizing Red Hat Linux.
- Hardware: Hardware such as RAM, disk speed, CPU, and network speed will all influence the streaming capacity of Flash Media Server 3.
- Configuration: Flash Media Server 3 comes pre-configured for optimal streaming performance for most situations. Changing the configuration may improve your performance.
- Application complexity: If you deploy custom plug-ins or develop complex server-side application logic, your performance may increase or decrease. (Factors in Flash Media Interactive Server and Flash Media Development Server.)
- Usage: The way your users interact with your video will impact the server performance. Interactions could include connecting, disconnecting, seeking, or pausing.
The graphs in Figure 7 show the number of concurrent streams given different percent CPU utilization, protocol, and bitrate. Notice that with more percent CPU utilization, you can deliver more streams. The systems were limited to 1Gbps throughput (in other words, 1Gbps network adapter) and never reached 100% CPU. Higher data rates resulted in faster saturation; lower data rates used more CPU to deliver similar connections.
Figure 7: Measuring performance increases by comparing the number of concurrent streams for a given CPU utilization
The impact of RTMPE reduced the capacity by only 25% to 30% on average, given similar percent CPU usage. If you are deploying RTMPE, you can expect increased CPU usage, but you will still be able to saturate a 1Gbps network with less than 70% CPU.
Note: An understanding of these factors is essential when considering service level agreements (SLAs), one of the subjects of the next article, Part 3, in this series.
Note: I intentionally omitted stating the hardware and software platforms that were used for the measurements graphed in Figure 7. The point of Figure 7 is to illustrate concepts.
Page 4 of 7