More Books
Flash Communication Server
Flash Communication Server
Table of Contents
Copyright
About the Authors
Brian Lesser
Giacomo
Joey Lott
Robert Reinhardt
Justin Watkins
Foreword
Preface
What Does FlashCom Offer?
What's in This Book?
How to Use This Book
Audience
ActionScript 1.0 Versus ActionScript 2.0
Server-Side ActionScript
The flash-communications.net Site
Director, Breeze, and Other Options
Flash Video Options
Licensing and Hosting Options
Conventions Used in This Book
Voice
Using Code Examples
Safari Enabled
Comments and Questions
Acknowledgments
Part I:  FlashCom Foundation
Chapter 1.  Introducing the Flash Communication Server
Section 1.1.  Clients and Servers
Section 1.2.  Creating an Application
Section 1.3.  Real-Time Messaging Protocol
Section 1.4.  The Communication Classes
Section 1.5.  Communicating with Application Servers, Databases, and Directory Servers
Section 1.6.  Firewalls and Security
Section 1.7.  Getting Started
Section 1.8.  Hello Video!
Section 1.9.  Conclusion
Chapter 2.  Communication Components
Section 2.1.  Overview of Communication Components
Section 2.2.  Summary of Communication Components
Section 2.3.  Creating an Application that Monitorsa Connection
Section 2.4.  Building a Simple Chat Room
Section 2.5.  Adding Audio and Video to the Chat Room
Section 2.6.  Forgoing the SimpleConnect Component
Section 2.7.  Conclusion
Chapter 3.  Managing Connections
Section 3.1.  Making a Connection
Section 3.2.  Managing a Connection
Section 3.3.  Reusing a NetConnection Object
Section 3.4.  Multiple Simultaneous NetConnection Objects
Section 3.5.  Testing and Debugging Network Connections
Section 3.6.  Subclassing the NetConnection Class
Section 3.7.  Communication Components Without SimpleConnect
Section 3.8.  Conclusion
Chapter 4.  Applications, Instances, and Server-Side ActionScript
Section 4.1.  Scripting Application Instances
Section 4.2.  Differences Between Flash ActionScript and Server-Side ActionScript
Section 4.3.  The Life of an Application Instance
Section 4.4.  Running a Simple Hello World Test Script
Section 4.5.  A More Realistic Example
Section 4.6.  Instance-to-Instance Communications
Section 4.7.  Script Filenames and Locations in Detail
Section 4.8.  Testing and Debugging Server-SideScript Files
Section 4.9.  Designing Communication Applications
Section 4.10.  Conclusion
Part II:  Audio, Video, and Data Streams
Chapter 5.  Managing Streams
Section 5.1.  A Simple Publisher/Subscriber Example
Section 5.2.  Stream Names
Section 5.3.  Publishing Streams in Detail
Section 5.4.  Playing Streams in Detail
Section 5.5.  The Stream Class
Section 5.6.  Publishing and Playing ActionScript Data
Section 5.7.  Creating Synchronized Presentations
Section 5.8.  The NetStream and Stream Information Objects
Section 5.9.  Stream Enhancements and Limitations
Section 5.10.  Conclusion
Chapter 6.  Microphone and Camera
Section 6.1.  Working with Microphone/Audio Input
Section 6.2.  Working with Camera Input
Section 6.3.  Building a Message-Taking Application
Section 6.4.  Building a Surveillance Application
Section 6.5.  Conclusion
Chapter 7.  Media Preparation and Delivery
Section 7.1.  Audio and Video Compression
Section 7.2.  Converting Prerecorded Materialto FLV Format
Section 7.3.  Using Flash Pro's Media Components
Section 7.4.  Enabling Multiple Bit Rate FLVsWithin an Application
Section 7.5.  Streaming MP3 Audio
Section 7.6.  Conclusion
Part III:  Remote Connectivity and Communication
Chapter 8.  Shared Objects
Section 8.1.  Objects and Shared Objects
Section 8.2.  Getting a Shared Object in Flash
Section 8.3.  Updates and Frame Rates
Section 8.4.  Scripting Shared Objects on the Server
Section 8.5.  Temporary and Persistent Shared Objects
Section 8.6.  Proxied Shared Objects
Section 8.7.  Shared Objects and Custom Classes
Section 8.8.  Avoiding Collisions
Section 8.9.  Optimizing Shared Object Performance
Section 8.10.  Broadcasting Remote Method Callswith send( )
Section 8.11.  A Simple Video and Text Chat Application
Section 8.12.  Conclusion
Chapter 9.  Remote Methods
Section 9.1.  Why Use Calls?
Section 9.2.  The send( ) and call( ) Methods
Section 9.3.  Client-to-Server Calls
Section 9.4.  Server-to-Client Calls
Section 9.5.  Server-to-Server Calls
Section 9.6.  A Simple Lobby/Rooms Application
Section 9.7.  Debugging Calls
Section 9.8.  Advanced Topics
Section 9.9.  Conclusion
Chapter 10.  Server Management API
Section 10.1.  Connecting to the Admin Service
Section 10.2.  Using the Server Management API
Section 10.3.  Server Management API Uses
Section 10.4.  Conclusion
Chapter 11.  Flash Remoting
Section 11.1.  The Remoting Gateway
Section 11.2.  Remoting Basics
Section 11.3.  Role of Remoting in FlashCom Applications
Section 11.4.  Securing Access
Section 11.5.  Conclusion
Chapter 12.  ColdFusion MX and FlashCom
Section 12.1.  Understanding ColdFusion MXand Flash Remoting
Section 12.2.  Using Flash Remoting to Log Events
Section 12.3.  Getting a List of Streams
Section 12.4.  Using ColdFusion and FTP to Mirror Streams
Section 12.5.  Conclusion
Part IV:  Design and Deployment
Chapter 13.  Building Communication Components
Section 13.1.  Source Files
Section 13.2.  People Lists
Section 13.3.  A Simple People List
Section 13.4.  Listenable Shared Objects
Section 13.5.  Status and People List
Section 13.6.  Text Chat
Section 13.7.  Shared Text
Section 13.8.  Video Conference and Video Window
Section 13.9.  PeopleGrid
Section 13.10.  Summary
Section 13.11.  Conclusion
Chapter 14.  Understanding the Macromedia Component Framework
Section 14.1.  The Component Framework
Section 14.2.  Under the Hood of the Chat Component
Section 14.3.  Creating a Simple Component from Scratch: SharedTextInput
Section 14.4.  Creating a Container Component: SharedAddressForm
Section 14.5.  Creating an Authenticating Component
Section 14.6.  Integrating Components with Your Existing Applications
Section 14.7.  Understanding the Framework
Section 14.8.  Conclusion
Chapter 15.  Application Design Patterns and Best Practices
Section 15.1.  Shared Object Management
Section 15.2.  Moving Code to the Server
Section 15.3.  Building Façades on the Server
Section 15.4.  Server-Side Client Queues
Section 15.5.  A Framework for Recording and Playing Back Componentized Applications
Section 15.6.  Components and Component Frameworks
Section 15.7.  Conclusion
Chapter 16.  Building Scalable Applications
Section 16.1.  Coordinating Instances
Section 16.2.  Scalability and Load Balancing
Section 16.3.  Conclusion
Chapter 17.  Network Performance, Latency,and Concurrency
Section 17.1.  Latency
Section 17.2.  Bandwidth
Section 17.3.  Concurrency
Section 17.4.  Conclusion
Chapter 18.  Securing Applications
Section 18.1.  The Three A's: Authentication, Authorization, and Accounting
Section 18.2.  Authentication
Section 18.3.  Authorization
Section 18.4.  Accounting
Section 18.5.  Suggestions and References
Section 18.6.  Conclusion
Index
SYMBOL
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
R
S
T
U
V
W

Flash Video Options

Whether you need FlashCom for an application requiring video depends on how you are trying to serve your video, which depends on your application's requirements. For assistance in choosing the right technology based on the length of video clips, number of viewers, and so on, see the chart at:

http://www.macromedia.com/devnet/mx/flash/articles/video_primer.html

Currently, FlashCom is the only way to collect and redistribute live video from Flash movies as well as to stream recorded video to Flash movies.


This book assumes you've made the decision to use FlashCom (whether for video or other applications, such as chat).

However, there are other ways to play prerecorded video in Flash as described next.

For a feature comparison of FlashCom versus other Flash video alternatives, see:

http://www.macromedia.com/devnet/mx/flash/articles/video_primer_03.html

Embedded Video

Flash MX and later versions of the Flash authoring tool make it possible to import video files directly into a Flash movie. A Flash movie containing embedded video can be played in Flash Player 4 and later. Unfortunately, embedded video has severe limitations. The video is incorporated into the .fla file before it is converted to a .swf, meaning that the developer must republish the .swf whenever the video changes. Furthermore, the video makes the .swf very large and slow to download. Embedded video must be played at the same rate as the timeline and is limited to 16,000 frames. Furthermore, sound synchronization problems occur after about 2 minutes of video playback.

Progressive Download

Flash Player 7 added the ability to play FLV video files as they were downloaded from a web server. The feature is usually referred to as progressive download in order to distinguish it from streaming. All that is required to make an FLV available for progressive download is to post it on a web server and create a Flash movie that downloads and plays it. When a Flash movie requests an FLV file, the web server sends the file starting from the beginning of the file until either the entire file is downloaded or the browser and player disconnect. The file is held in cache so that the Player can seek to different parts of the video that have already been downloaded. The Player cannot seek ahead to sections of the video that have not been downloaded from the web server.

Although video starts playing immediately with progressive download, this approach doesn't support live video nor does it support all the features of FlashCom such as total control over seeking. Another limitation is that the entire video is downloaded to the user's cache, which is undesirable when dealing with copyrighted material.

The new Macromedia Video Kit is a utility for Dreamweaver developers that includes Squeeze Lite to compress video in FLV format. The utility allows HTML developers to easily embed Flash video in a web page by automatically creating the .swf file to play the video without the need for the Flash authoring environment. The Flash video plays using progressive download, as can also be accomplished using Flash MX 2004 or Flash Pro. For full details, see:

http://www.macromedia.com/software/studio/flashvideokit

For streaming video from Dreamweaver, see the Flash Video Streaming Service Lite as described at:

http://www.macromedia.com/software/flashcom/fvss
http://www.macromedia.com/devnet/mx/flash/articles/video_primer_04.html#authordwfl

Streaming Video with FlashCom

Unlike embedded video and progressive download, a Flash movie can ask the FlashCom Server to stream any part of a prerecorded video at any time. FlashCom will locate the video file, find the part of the video to send, and start streaming from that point. Whenever it is important to be able to quickly seek to any portion of a large video file, FlashCom provides an important advantage over progressive download and embedded video.

FlashCom also makes it possible to seamlessly adapt to each client's bandwidth. You can script a bandwidth test that will estimate the bandwidth available to the client and then select an appropriate size video to stream. See Chapter 17 for more on bandwidth detection.

Macromedia maintains a video section on its DevNet site:

http://www.macromedia.com/devnet/mx/flash/video.html

Macromedia has also published a video primer that provides a good summary comparing different ways to deliver prerecorded video using Flash:

http://www.macromedia.com/devnet/mx/flash/articles/video_primer_print.html

FlashCom offers a persistent connection, allowing you to implement many features with streaming not supported by progressive download. It also offers the most robust and consistent delivery platform, especially for large videos and large numbers of users. Most notably, FlashCom streaming video allows you to:

  • Deliver live video and audio, whether from a web cam or digital video camera

  • Enable multiuser video conferencing and similar applications

  • Start video playing as soon as possible

  • Implement bandwidth detection to optimize video serving

  • Monitor quality of service and provide logging, tracking, and reporting statistics

  • Maintain full scripting control of streams for detailed interactive control of the video experience

  • Easily change content by updating external videos (this also applies to progressive download)

  • Use less client memory and disk space (especially true for large videos)

  • Minimize the network load because only the portion of the video that is viewed needs to be downloaded

  • Securely deliver copyrighted material without its being saved to the user's cache

See also Chapter 5 and Chapter 7 in this book for details on streaming.