Flash Player 10 Beta Released
Posted by Thijs Triemstra | Filed under flash
Today Adobe released the first beta version (10.0.1.218) of the upcoming Flash Player 10, code named 'Astro'. You can download the new player for Mac OS X, Linux and Windows from Adobe Labs (make sure you uninstall older players first). There are quite a few enhancements but unfortunately the documentation of the new APIs isn't available yet (will be released at a later date through Adobe's Livedocs system) so I haven't been able to play with them in Actionscript yet.
Content created with the open source Flex 3 SDK is designed to work with Flash Player 9 (188.8.131.52 and higher) and will continue to function as expected with Flash Player 10. To build Flex content that takes advantage of the new features, you need a Flex SDK 3.0.x nightly build which can target the Flash Player 10 Beta.
Some of the highlights in the new Player:
Speex Audio Codec
The open source Speex voice codec offers an alternative to the older, proprietary Nellymoser for audio that delivers the lowest-latency audio experience possible. Flash developers have requested an open source voice codec since the day Macromedia added Nellymoser to Flash Player 6, and it's great to finally see it happen at Adobe. Nellymoser audio can be decoded by FFmpeg but unfortunately it looks like Speex is one of the missing formats in the FFmpeg audio codecs list at the time of this writing. For Python there are the PySpeex bindings that allow you to create an audio stream object and encode and decode speech audio data. Other software that uses Speex are Asterisk, the open source PBX, the headsets in Microsoft's Xbox Live and the in-game VOIP function of Half-Life 1. Java developers might want to take a look at JSpeex, a port of Speex for the Java platform.
Real Time Media Flow Protocol (RTMFP)
RTMFP provides a UDP-based secure network transport alternative to RTMP-over-TCP. UDP (User Datagram Protocol) is an efficient and standardized Internet protocol for delivering media assets because of its support for lossy delivery, improving performance of real time communication. RTMFP is always encrypted which helps protect media delivery. With Speex it will be possible to take advantage of the new RTMFP partial-reliability feature to reduce network latency and it also works over the Flash Player's Real Time Messaging Protocol (RTMP). PyAMF was created for the AMF support in the RTMP protocol, which we’re trying to build for Python with Twisted in the RTMPy project. Adobe basically baked P2P into the Flash Player and creating applications like LimeWire or VOIP applications like Skype should be trivial.
Dynamic Sound Generation
In Flash Player 10 you will be able to dynamically create audio. The API is designed to provide a low level abstraction of the native sound driver, providing the most flexible platform to build your music applications on. Tinic Uro, one of the Flash Player engineers at Adobe, writes that "the API has one big compromise which I can't address without large infrastructural changes and that is latency. Latency is horrible to the point where some applications will simply not be possible. To improve latency will require profound changes in the Flash Player which I will tackle for the next major revision. But for now this simple API will likely change the way you think about sound in the Flash Player". He also mentions that extracting audio data from a microphone and extracting audio from a NetStream object is not possible for this release, but they're aware that it's a highly desirable feature. Keith Peters created a sample application that demonstrates the new API.
File Reference runtime access
Macromedia added the FileReference class in Flash Player 8 to give developers the ability to upload and download files using a native Flash Player API. With Flash Player 10 it's will be possible to save those files back to the local hard disk as well. Files can be accessed as a ByteArray or text using a API in ActionScript without round-tripping to the server. You no longer need to know a server language or have access to a server to load or save files at runtime.
Check out the Adobe Labs wiki for the complete feature list and release notes.