Monday, June 14, 2010

HTTP SMOOTH STREAMING AND FRAGMENTED MPEG-4































































































































  Microsoft
IIS Smooth Streaming
Adobe
Flash Dynamic Streaming
Apple
HTTP Adaptive Bitrate Streaming
Cost per Streaming Server Free download1 + $469 for OS2$45003 + OS cost4Cost of Web server5 + segmenter OS6
On-demand & Live Streaming
Live Streaming DVR7Pause & Seek
Streaming ProtocolHTTPRTMPHTTP
Scalability via HTTP Edge Caches 
Stateless Server Connection8 
Supported PlatformsSilverlight, Xbox 360, other Smooth Streaming-compatible players, and iPhone OS 3.09Flash Player 10, AIRiPhone OS 3.0, devices running QuickTime X
DRM Support for Live, VODPlayReadyNone10None
DRM ASP & Encoder ISV Support  
Interoperable DRM (DECE Approved)11  
Real-time Client and Server Logging12  
Programmable Client Side Switching Logic 
Live In-Stream Ad Integration   
Built-in Analytics Framework  
Delivery to Mobile Devices  
Native 64-bit Server Support  
Media ContainerMPEG 4 – Part 12 (Fragmented MP4)MPEG 4 – Part 12 (MP4), FLVMPEG-2 TS
Supported Video CodecsCodec Agnostic (currently supports VC-1 Advanced Profile & H.264 Baseline, Main, and High)H.264 Baseline, Main, and High; VP6H.264 Baseline Level 3.0
Supported Audio CodecsCodec Agnostic (currently supports WMA & AAC)AAC, MP3MP3, HE-AAC, AAC-LC
Maximum Bit RateNo limitNo limit1.6 Mbps
Default Fragment Length2 secondsn/a10 seconds
End-To-End LatencyAs low as 1.5 seconds (configurable)6 seconds30 seconds13
File Type on ServerContiguousContiguousFragmented
Client Programming PlatformMicrosoft .NET FrameworkAdobe ActionScriptObjective-C


Footnotes...
1 IIS Smooth Streaming is part of the free IIS Media Services download for Windows Server 2008 and Windows Server 2008 R2 .
2 Runs on any edition of Windows Server® 2008 or Windows Server 2008 R2 including Windows® Web Server, which has a list price of $469.
3 Assumes use of Adobe Flash Media Interactive Server to support Pause, Seek, Authentication, and higher scalability
4 Requires Windows Server 2003 SP2, Windows Server 2008, Red Hat® Enterprise Linux® 4, or Red Hat Enterprise Linux 5.2.
5 Runs on any Web server. Also requires the Apple streaming segmenter – see next note.
6 The Apple stream segmenter is a utility that receives encoded MPEG2-TS and breaks it into 10 second “chunks” for delivery. This free download requires an Intel-based Mac, with a Mac Pro or an XServe having two Ethernet network interfaces recommended.
7 Full DVR features include Pause, Seek, Fast Forward (e.g., 2x, 5x playback speeds), Fast Rewind, Go To Live, Instant Replay, and Slow Motion.
8 A stateless (non-persistent) connection between server and client increases scalability and allows seamless failover or rollover between load-balanced servers.
9 Support for adaptive streaming to the Apple iPhone from IIS Media Services 4 was announced on October 18th, 2009.
10 Future support was announced Sept. 10, 2009. Proposed availability is H1 CY10 for delivery to a future version of Adobe® Flash® Player and Adobe AIR™.
11 Digital Entertainment Content Ecosystem (DECE, LLC) is a consortium of major Hollywood studios, consumer electronics manufacturers and retailers, network hardware vendors, systems integrators and Digital Rights Management (DRM) vendors chartered to develop a set of standards for the digital distribution of premium Hollywood content.
12 Real-time logging for Silverlight applications using the IIS Advanced Logging extension.
13 Encoded live streams are processed by the Apple stream segmenter. This intermediate step results in increased latency for live delivery.

http://www.iis.net/download/SmoothStreaming
http://www.iis.net/download/SmoothFormatSDK



It's an adaptive streaming technology combining IIS and Silverlight. The core file format is fragmented MPEG-4, where each "chunk" of video is transmitted as a moof fragment starting with a Closed GOP, via a single HTTP request. A chunk will typically be 2-4 seconds long. Audio can be either muxed into the same chunk, or be provided in a parallel series of chunks to enable multilangauge audio or what have you.

The file format used is straight-up ISO fragmented MPEG-4, using XML and SMIL manifests to indicate what bitrates in the file set and where the fragments in those file are. We're not trying to make up a new file format here; just take advantage of existing technologies in a novel way.

Lots of other details to be had, including this roundup of links:
http://on10.net/blogs/benwagg/Beta-Release-of-Smooth-Streaming/

More importantly, zambelli had a great post showing how Microsoft is using the file format:
http://alexzambelli.com/blog/2009/02/10/smooth-streaming-architecture/

And we now have some sample files up that I encoded, including the media files and manifest files:
http://on10.net/blogs/benwagg/Big-Buck-Bunny-Smooth-Streaming-sample-for-download/

(if you're curious how it was encoded)
http://on10.net/blogs/benwagg/Behind-the-Scenes-at-SmoothHDcom-Encoding-Big-Buck-Bunny/

The current samples are VC-1 and WMA 10 Pro, but we'll be supporting H.264 and AAC-LC payloads with the next version of Silverlight later in 2009.

So, if you start seeing these *.ismv files out there, just know that they're
Fragmented MPEG-4
With VC-1 or H.264 for video
WMA 10 Pro or AAC-LC for audio


For apple http streaming, a tool called mediastreamsegmenter will take an MPEG2 transport stream and split it into smaller size chunk. Mediastreamsegmenter documentation is available here

Tuesday, June 08, 2010

HTM5 Video Tag using QuickTime

Very Interesting article about HTML 5 VIDEO TAG using SAFARI

http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Note-to-Apple-Safari-%26-QuickTime-are-Not-Web-Standards-67645.aspx

Thursday, June 03, 2010

My First iPhone application

Here's what I have in the (default) login keychain:
• A valid intermediate CA: "Apple Worldwide Developer Relations Cerfitication Authority"
• A valid cert named "iPhone Developer: FirstName LastName" issued by the aforementioned CA
• A RSA 2048-bit private and public key, each named "FirstName iPhone Dev Key"
The keychain application is available through Application/Utilities/Keychain.app.
Once your certificate has been deployed you should see under My Certificate something like iPhone Developer: FirstName LastName.
So far, so good. Meanwhile, on the Program Portal, you need to:
• Registered your iPod touch
• Add an App ID (com.mycompany.myapp). I usually create one for each app keeping the com.mycompany the same.
• Create a Development Provisioning Profile for the aforementioned App ID, device and certificate.

A Provisioning Profile is a collection of digital entities that uniquely ties developers and devices to an authorized iPhone Development Team and enables a device to be used for testing. A Development Provisioning Profile must be installed on each device on which you wish to run your application code. Each Development Provisioning Profile will contain a set of iPhone Development Certificates, Unique Device Identifiers and an App ID.

Devices specified within the provisioning profile can be used for testing only by those individuals whose iPhone Development Certificates are included in the profile. A single device can contain multiple provisioning profiles.

Click here to access the Developer Portal and then
click on iPhone Provisioning Portal on the top right corner.
In the ‘Provisioning’ section of the Portal, click on iPhone Provisioning Portal. Team Admins should click 'Add' on the Development tab. Enter a name for the provisioning profile.
Specify which devices will be associated with the provisioning profile. You must specify a device in order for that device to utilize the provisioning profile. If a device's UDID is not included in the provisioning profile the profile and your application cannot be installed on that device.
Specify which iPhone Development Certificates will be associated with the provisioning profile. You must specify an iPhone Development Certificate in order for the application code signed with that same certificate to run on the device.
Specify a single App ID for the Development Provisioning Profile. Each Development Provisioning Profile can specify only ONE App ID, therefore, if you have applications requiring different Keychain access, you will need to create a separate Development Provisioning Profile for each of those applications. If you are installing a suite of applications with the same required Keychain access or have a set of applications not requiring access to the Keychain, use an App ID containing the wild-card asterisk character to build all of your applications.
Click ‘Submit’ to generate your Development Provisioning Profile.

NOTE: On the Portal, the Certificate only shows as "FirstName LastName" and not "iPhone Developer: FirstName LastName".

Installing a Development Provisioning Profile
All Team Agents, Admins and Members can download a Development Provisioning Profile from the ‘Provisioning’ section of the Portal after it has been created. Only those developers whose Apple device IDs and iPhone Development Certificates are included in the provisioning profile will be able to install and test their application on their device.

In the ‘Provisioning’ section of the Provisioning Portal, click the download button next to the desired provisioning profile.
Drag the downloaded file onto the Xcode application icon in the dock or into the ‘Organizer’ window within Xcode. This will automatically copy the .mobileprovision file to the proper directory. Alternatively, you can drag the .mobileprovision file onto the iTunes icon in the dock or copy the file to ‘~/Library/MobileDevice/Provisioning Profiles’. If the directory does not exist you will need to create it. Click on the ‘+’ button in the Provisioning section of the Organizer window to install your .mobileprovision file.
I recommend to create the Library/MobileDevice/Provisioning Profiles else after each download you will end up with all provisioning profile under you Download Folder.

Now, on to the home stretch! In Xcode 2.2.1, you must have:
• REMOVED my build directory (before launching Xcode with said project - OPTIONAL) or just perform a full project clean using XCode for the project in question .
• Docked/synced your iPod touch
• Dragged-and-dropped your downloaded provisioning profile into the appropriate spot in the Organizer. It's not grayed out, and the profile is also in your Library in the expected location.
• Chosen "iPhone Device 2.2.1" as the active SDK.
• Under Targets, select your app, then picked Get Info.
• Under the Build tab, verified Base SDK is set to "iPhone Device 2.2.1". For Code Signing Identity, Any iPhone OS Device, there is a value of "iPhone Developer" - fine.
• Under the Properties tab (right click on Targets then select Get Info, change the Identifier to match my App ID com.mycompany.myappid. Be careful not to add any extra leading space by mistakes (EG copy past from the web) Xcode is too stupid to remove spaces.... lame...

Thursday, May 13, 2010

RTMP PLAYER SERVER AND SWF2VIDEO

The most famous client RTMP is the Adobe Flash Player that can do streaming video and audio from RTMP servers.

Adobe Open Source Media Framework
http://opensource.adobe.com/wiki/display/osmf/Open+Source+Media+Framework

Moyea Web Player version 2. 0 with RTMP Stream Plugin supports playback of live video streaming and SMIL presentations and streaming video from RTMP servers.
http://www.moyeasoft.com/web-player/web-player-kits.html

JW Player
http://www.longtailvideo.com/

Flowplayer RTMP as well.
http://flowplayer.org/

Sublime Video Player
http://jilion.com/

RTMP server software

The only full RTMP server application is Adobe Flash Media Server, Onlinelib VCS Video Communication Server (including iPhone Support), Wowza media server and WebORB Integration Server (free of charge and available. NET, Java and ColdFusion), both commercial and closed source implementations. There is a reverse engineered open source project called Red5, which aims to produce a feature-complete written in Java. Finally my current favorite is C++ RTMP Server http://www.rtmpd.com/

SWF2Video

Moyea SWF to Video Converter V3.2
http://www.moyeasoft.com/news/update_081027.html

Wednesday, April 28, 2010

Software for 2D-3D conversion - Avatar follower

StereoTracer is designed for creating 3D image out of one 2D image by means of «depth-map». The depth-map (disparity image or Z-image) serves to convert a two-dimensional image into a three-dimensional one. In the depth-map the gray color gradation shows each pixel's distance from the viewer. The lighter area in the depth-map correspond to the areas nearer to the viewer, the darker ones correspond to more distant areas.

A «depth-map» can be created from source one 2D image or stereopair automatically in StereoTracer. "How to" is available here.



StereoTracer generates a number of images which all have a slightly different viewing angle. This process models shooting of a scene from different points across the horizontal line. Resultant series of images is used for creating 3D (stereo) image by method of anaglyph encoding or making multi-view 3D lenticular picture in Triaxes 3DMasterKit or other lenticular generating application. Also a series of frames can be exported into a movie clip (AVI or animated GIF) and used for presentation purposes.


http://triaxes.com/

Monday, April 26, 2010

Sublime HTML5 HD Video Player

All tests run on the following hardware:

Model Identifier: MacPro3,1
Processor Name: Quad-Core Intel Xeon
Processor Speed: 3 GHz
Number of Processors: 2
Total Number of Cores: 8
L2 Cache: 12 MB
Memory: 8 GB
Bus Speed: 1.6 GHz

For browsers, the latest release browser versions were used. For Flash Player, I used the latest labs release (Flash Player 10.1 Beta 3 : 10,1,51,95).

Mac OS X Versions
=================

Mac OS X 10.6.2
Google Chrome 5.0.307.9 beta
Safari 4.0.4 (6531.21.10)
Firefox 3.6
Flash Player MAC 10,1,51,95

Windows 7 Versions
==================

Windows 7 7600
Google Chrome 4.0.249.89 (38071)
Safari 4.0.4 (531.21.10)
Firefox 3.6
Internet Explorer 8.0.7600.16385
Flash Player WIN 10,1,51,95

Sublime HTML 5 HD Video Example
===============================

Mac Windows
Google Chrome 85% 24%
Safari 21% 104%
Firefox 85% 80%
Internet Explorer NA Did Not Work


http://jilion.com/sublime/video

An other interesting HTML5 Video Sample page (Opera)

http://annevankesteren.nl/2008/fronteers-html5-video

And Finally a future yet to be release HTML5 book

http://diveintohtml5.org/video.html

Other interesting benchmark

http://themaninblue.com/writing/perspective/2010/03/22/


Conclusion HTML5 is catching up...

Monday, April 05, 2010

Android WebView

WebView allows you to create your own window for viewing web pages (or even develop a complete browser). In this tutorial, you'll create a simple Activity that can view and navigate web pages.




1.Create a new project named HelloWebView.
2.Open the res/layout/main.xml file and insert the following:


android:layout_width="fill_parent"
android:layout_height="fill_parent"/>

3.Now open the HelloWebView.java file. At the top of the class, declare a WebView object:

WebView mWebView;

Then use the following code for the onCreate() method:

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("http://www.thomasyounsi.com");
}
This initializes the member WebView with the one from the Activity layout;
requests a WebSettings object with getSettings();
and enables JavaScript for the WebView with setJavaScriptEnabled(boolean).
Finally, an initial web page is loaded with loadUrl(String).

4.Because this application needs access to the Internet, you need to add the appropriate permissions to the Android manifest file.
Open the AndroidManifest.xml file and add the following as a child of the element:


What is very powerful with WebView is that you can use a two way communication between the content which is display in the web view and the Java application. This can be accomplished by using JavaScript running inside the WebView calling out Java code to get the updated fragment for the HTML div bloc that require to be use to update the content running inside the view. This means you can use HTML div to layout your content and expand/collapse a div based on user action. The content can come from a remote database, a web service or as a JSON Object.




http://www.youtube.com/watch?v=Ex7YsQ_YH2U

Apple iPad / Microsoft Surface

In 2007, Microsoft annonced Microsoft Surface

Microsoft Surface represents a new category of computing. With capabilities like direct interaction, multi-touch, multi-user, and object recognition, Microsoft Surface computing is a unique and cutting edge platform for application development.

The Microsoft Surface platform goes beyond the capabilities of its core operating system foundation running Windows Vista SP1, yet it keeps the development process simple. The Microsoft Surface SDK 1.0 SP1 provides all the controls a developer needs to create innovative experiences on Microsoft Surface. And with the new capabilities that come with Service Pack 1, application development is easier than ever with new WPF controls and API enhancements that give developers more control, flexibility, and efficiency in creating applications.

Plus, in order to enable a broad developer audience, Microsoft Surface is compatible with familiar programs and tools developers use today, such as:

Microsoft® Windows Presentation Foundation (WPF)
Microsoft® XNA™
Microsoft® Visual C#® 2008 Express Edition
Microsoft® Visual Studio® 2008 SP1
Microsoft® Expression® Studio 2
Microsoft® Expression Blend™ 2

http://www.microsoft.com/surface/en/us/Pages/Product/Platform.aspx

In 2010 Apple launched the iPad.

The sdk is the same than the sdk used by the Apple iPhone

http://developer.apple.com/ipad/sdk/

The specs have been posted on Apple's web site.

http://www.apple.com/ipad/specs/

Screen size = 1024x768 and my interest will go immediately for TV and video

Support for 1024 by 768 pixels with Dock Connector to VGA Adapter; 576p and 480p with Apple Component AV Cable; 576i and 480i with Apple Composite AV Cable
H.264 video up to 720p, 30 frames per second, Main Profile level 3.1 with AAC-LC audio up to 160 Kbps, 48kHz, stereo audio in .m4v, .mp4, and .mov file formats; MPEG-4 video, up to 2.5 Mbps, 640 by 480 pixels, 30 frames per second, Simple Profile with AAC-LC audio up to 160 Kbps, 48kHz, stereo audio in .m4v, .mp4, and .mov file formats; Motion JPEG (M-JPEG) up to 35 Mbps, 1280 by 720 pixels, 30 frames per second, audio in ulaw, PCM stereo audio in .avi file format.

iPad Price starting at 499$

It would be nice to see microsoft coming with a small tablet "surface capable" 1280x720 P resolution where people could put there camera or phone in place on top of the tablet running an application in "surface application mode" to exchange and share contents (picture/music/video).

A commercial Microsoft Surface unit is $12,500 (unit only), whereas a developer Microsoft Surface unit costs $15,000 and includes a developer unit, five seats and support. However, Microsoft said it expects prices to drop enough to make consumer versions feasible in 2010. Microsoft would have to come with a price 20x lower than the actual Microsoft Surface unit to compete with the iPad. I think it is time to come up with a product...

Thursday, March 18, 2010

how to Install Apache, PHP, MySQL and phpMyAdmin on Windows XP

This tutorial will show you step-by-step how to install:
Apache 2
PHP 5
MySQL 5
phpMyAdmin on Windows


For those who want to install an all in one solution on Windows I recommend
WampServer

http://www.wampserver.com/en/

The WampServer package is usually delivered with the latest
releases of Apache, MySQL and PHP.

Once WampServer is installed, you can add other releases by downloading them on this
website. They will then appear in the WampServer menu and you will be able to
switch releases with a simple click.

Each release of Apache, MySQL and PHP has its own settings and its own files (datas
for MySQL).

Using wampserver

The “www” directory will be automatically created (usually c:\wamp\www)

Create a subdirectory in “www” and put your PHP files inside.

Click on the “localhost” link in the WampSever menu or open your internet browser and
go to the URL : http://localhost



Et Voila!


Double click on the downloaded file and just follow the instructions. Everything is
automatic. The WampServer package is usually delivered with the latest
releases of Apache, MySQL and PHP.
Once WampServer is installed, you can add other releases by downloading them on this
website. They will then appear in the WampServer menu and you will be able to
switch releases with a simple click.
Each release of Apache, MySQL and PHP has its own settings and its own files (datas
for MySQL).
Using wampserver
The “www” directory will be automatically created (usually c:\wamp\www)
Create a subdirectory in “www” and put your PHP files inside.
Click on the “localhost” link in the WampSever menu or open your internet browser and
go to the URL : http://localhost

Et Voila!

or XAMPP

http://www.apachefriends.org/en/xampp-windows.html

The Apache Server combined with the power of PHP, MySQL, and phpMyAdmin, creates one of the best possible development environments for a web programmer. Getting everything properly configured can take 20-30 minutes. And it can work on a non expensive OS such as Windows XP or Windows 7 Home Edition.

Installing Apache:
Follow the steps carefully.

1 Go to http://httpd.apache.org/download.cgi and download "Win32 Binary (MSI Installer): apache_2.2.4-win32-x86-no_ssl.msi" to your desktop.

Note: Make sure that you download Apache version 2.2.4 (Win32 Binary MSI Installer)!

2 Double click "apache_2.2.4-win32-x86-no_ssl.msi", and if prompted, click "run".

3 An installation wizard will appear:



Click "Next".

4 The next page contains the terms of agreement. Select "I accept", and click "Next".

5 Read about the Apache Server, and click "Next"

6 The next screen will ask you for specific server information. Enter the values seen below:



Click "Next".

7 On the next screen, select "Typical Installation" and click "Next".

8 Click "Next".

9 Click "Install".

10 Open up Internet Explorer and type in "http://localhost". If you see a page that says "It works!" then the Apache server has been installed successfully.

Note that if you install Flash Media Server an other instance of Apache will be installed which could cause conflict on the following default Apache server. It would be nice if the FMS team could handle this nicely in their installer....



A few notes on your Apache Server Configuration:
Apache is installed by default in your "C:\Program Files\Apache Software Foundation\Apache2.2" directory.

Inside that directory there is a folder called "htdocs" (matching of your \www\ or \public_html\ directory on a unix system). You can develop your applications inside this folder and access them by going to http://localhost/my_file_name.html

The Apache Configuration settings are defined in a file named "httpd.conf" located in the "conf" directory. Do not attempt to change these settings unless you know what you're doing.

Installing PHP:

Next we will be installing PHP version 5. Follow the steps carefully.
1 Go to http://www.php.net/downloads.php and download the "PHP 5.2.0 zip package" to your desktop. (Be patient while it downloads, the ZIP file is over 9MB!)

Note: Make sure that you download the PHP 5.2.0 zip package! The rest of the tutorial is written using this version.

2 Create a new folder called "php" in your C Drive. Copy the "php-5.2.0-Win32.zip" file to there ("C:\php") and extract it using WinZIP or a similiar program.


3 Your "C:\php" directory should now look like:



4 Next copy the "php.ini-dist" file from "C:/php/" to "C:/WINDOWS" and rename it to "php.ini". This is your PHP configuration file. We'll come back to this later.

5 Now it's time to tell Apache that PHP exists. Open up your Apache configuration file ("C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf") in notepad and add these four lines to the bottom of the "LoadModule" section:

LoadModule php5_module "c:/php/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "c:/windows"

6 In your "htdocs" directory, create a file called "info.php". Open it in notepad and add this line of code to it:



7 Restart your Apache Server for the changes to take effect:

Start > All Programs > Apache HTTP Server 4.2.4 > Control Apache Server > Restart
or faster use the Apache Service Monitor seating in the tray icon bottom right bar on Windows XP

8 Open up Internet Explorer and type in: http://localhost/info.php. If your browser takes you to a page that looks like this, then PHP has been installed successfully!



Modifying your PHP Configuration File:

1 Your PHP configuration (php.ini) file is located in "C:/WINDOWS/php.ini". You can modify it with notepad or a similiar text editor. My favorite is Notepad++


2 Open it up and find the line that says:


extension_dir = "./"


and change it to


extension_dir = "C:\php\ext"


Find the line that says:


;session.save_path = "/tmp"


and change it to


session.save_path = "C:\WINDOWS\temp"


Installing MYSQL:

Next we will be installing MySQL version 5.
Follow the steps carefully.

1 Go to http://dev.mysql.com/downloads/mysql/5.0.html#downloads and download the "Windows (x86) ZIP/Setup.EXE (version 5.0.27)" to your desktop. (To do this you'll need to register an account with MySQL.)

2 Once "mysql-5.0.27-win32.zip" has finished downloading, you can extract it using WinZIP or a similiar program.

3 Once extracted, double click on the "Setup.exe" file. An installation wizard will appear.



Click "Next".

4 Select "Typical" Installation and click "Next".

5 Click "Install". (Be patient, this can take up to several minutes).

6 The next screen will ask you to "Sign Up". Select "Skip Sign-Up" for now.

7 The next screen will tell you that the installation wizard is complete. Make sure that the "Configure the MySQL Server now" field is checked before clicking "Finish".



8 The MySQL Server Instance Configuration Wizard should appear. Click "Next".

9 Select "Detailed Configuration" and click "Next".

10 Select "Developer Machine" and click "Next".

11 Select "Multifunctional Database" and click "Next".

12 Click "Next".

13 Select "Decision Support (DSS)/OLAP" and click "Next".

14 Select "Multifunctional Database" and click "Next".

15 Make sure "Enable TCP/IP Networking" is checked, the Port Number is set to "3306", and "Enable Strict Mode" is checked. Click "Next".

16 Select "Standard Character Set" and click "Next".

17 Check "Install As Windows Service", set the Service Name to "MySQL", and check "Launch the MySQL Server automatically". Make sure that the "Include Bin Directory in Windows Path" is NOT checked. Click "Next".

18 On the next screen, check the box that says "Modify Security Settings". Enter a password for the default "root" account, and confirm the password in the box below. Do NOT check the boxes "Enable root access from remote machines" or "Create An Anonymous Account". Click "Next".

19 Click "Execute". (This may take a few minutes. Be patient).

20 Click "Finish".

21 To test if MySQL was installed correct, go to: Start > All Programs > MySQL > MySQL Server 5.0 > MySQL Command Line Client. The MySQL Command Line Client will appear:



22 It will ask you for a password. Enter the password you created in step 18. (If you enter an incorrect password MySQL will automatically close the command line)

23 Next, type in the commands shown below: (shown in blue)



If you don't get any errors, and it returns the information shown above, then MySQL has been successfully installed! Next we will need to configure PHP to work with MySQL.

Configuring PHP to work with MySQL:

Now that both PHP and MySQL are installed, we have to configure them to work together.


1 Open up your php.ini file (C:/WINDOWS/php.ini) and find the line:


;extension=php_mysql.dll


To enable the MySQL extension, delete the semi-colon at the beginning of that line.


2 Next we must add the PHP directory to the Windows PATH. To do this, click: Start > My Computer > Properties > Advanced > Environment Variables. Under the second list (System Variables), there will be a variable called "Path". Select it and click "Edit". Add ";C:\php" to the very end of the string and click "OK".


3 Restart your computer for the changes to take effect.


4 Create a new file in your "htdocs" directory called "mysql_test.php".


5 Copy the following code into "mysql_test.php" and click save. (Make sure to replace the MYSQL_PASS constant with the MySQL Password you specified during the MySQL installation).




6 Open up Internet Explorer and type in "http://localhost/mysql_test.php". If the "mysql_test.php" page returns something similiar to:


ID: 1
Name: John


Then PHP & MySQL have been successfully configured to work together. Congratulations! The next and final step is to install phpMyAdmin.

Installing phpMyAdmin:

Now that both Apache, PHP and MySQL are installed, we can install phpMyAdmin, a tool that allows you to easily manage your MySQL databases.
1 Go to http://www.phpmyadmin.net/home_page/downloads.php and download "english.zip" under the phpMyAdmin 2.9.2 section to your desktop (I assume that since you are reading this article that you understand English).


2 Create a new folder called "phpmyadmin" in your "htdocs" directory. Extract the contents of the "phpMyAdmin-2.9.2-english.zip" ZIP file here. Your C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\phpmyadmin" directory should now look like:




3 Create a new file in the "phpMyAdmin" directory (above) called "config.inc.php". Place this code inside it and be sure to replace "YOUR_PASSWORD_HERE" (in both places below) with your MySQL Password:




4 phpMyAdmin has now been successfully installed! To use it, open up Internet Explorer and type in "http://localhost/phpmyadmin". This will bring you to the main phpMyAdmin page. Note is is always recommended not to install admin tool in default location if deployed on a server open to internet access for security reason.

Enjoy using Apache, PHP, MySQL, and phpMyAdmin!

Tuesday, March 16, 2010

My Favorites Flash AS3 Component/FLA Part II

3D BUSINESS CARD SLIDE SHOW AS3


This is a XML controlled 3D slideshow, very easy to use and very customizable. It uses the 3D functions of Flash Player 10 (you need to install it if you do not have it); you need Flash CS4 if you want to open the FLA file!

This component can be used as a simple image/product slideshow, a 3d banner rotator or a business card slide show.
Settings you will find in the XML file:
- component width and height and card holder width and height
- mask width and height (you can display one image at a time or multiple images at once)
- transition times and types
- space between the cards
- arrows positioning, description positioning and transparency and also description text (html text)

http://activeden.net/item/3d-business-card-slide-show-as3/91738



AMAZING TWO LEVELS ACCORDION MENU AS3

This is an AS3 vertical accordion menu, XML driven and resizable. It has a structure of two levels. Each main item can have a submenu or it can open a link. For each item you can set a title and a HTML formatted description.
XML Settings:
- component width and height
- main item width and minimum height
- animation time
- items title and description
- items thumbnail image (optional)
- items link and link target

http://activeden.net/item/amazing-two-levels-accordion-menu-as3/88453



HORIZONTAL RESIZABLE ULTRA MENU AS3

This amazing menu can host an virtually UNLIMITED number of items organized on an unlimited number of levels.

The menu can auto-hide or stay visible, all colors can easily be changed in the xml file and.

It also supports scrolling, so if you have a lot of menu items (on any level) they will be scrolled if they don’t fit inside the display area.

This menu is ideal for displaying a great amount of menu items in a well structured manner.

It can open urls or trigger actions in flash !

Each level can have a style (colors, spacing etc.) assigned by specifying the xml corresponding to the specific style !
Settings you can change in the XML file (35+):
- auto-hide on/off
- open sub menu on click or on mouse-over
- open direction down or up
- auto-hide wait time
- sub-level open speed, transition time and type (ex. easeOutQuad)
- sub-level close speed, transition time and type
- use temporary display bar for auto-hide on/off, bar height, hit zone height, bar text (ex. “Move over to open”), bar background color, text color, arrow color
- menu width (can be set to 0 in order to make it expand to the entire stage)
- horizontal item spacing
- menu alignment
* Each style has the following options (each level can have a style xml assigned) :
- background colors for normal, mouse over and selected states
- delimiter width
- delimiter color
- button height
- text padding
- text font size
- text colors for normal, mouse over and selected states
- alignment for the level (left/center/right)
* Each menu item has the following options :
- menu item text (display label)
- action type (link or actionscript)
- url and target for link
- gotoandstop/gotoandplay and frame label/number for action

http://activeden.net/item/horizontal-resizable-ultra-menu-as3/88606




AS3 BUTTON CLASS



* Item Details
* Discussion

3comments
AS3 Button Class

by Flactor

Very easy to use class! you just need to use the interface to make the button and copy the code provided with the interface, then open a new fla file and paste the code in the first frame actions panel and import the needed font in the library and finished! Using this class you could arrange unlimited number of buttons, horizontally or vertically in 3 styles (simple, gradient and web 2.0). Complete documentation with examples and interface are available in the source file.

Could be used both in “time line” and “document Class”.

http://activeden.net/item/as3-button-class/81946



iButton TOGGLE SLIDER

Update: the sliders can now be dragged ON or OFF using the mouse.

All 100% vector graphics.

Easy to implement into your flash file. Just copy & paste!

Customizable settings:

* the text displayed for the ON and OFF states
* the easing used for the sliding animation
* the duration of the sliding animation
* the default state (ON or OFF )
* a callback function to run when the button has been toggled.

Font used on button: Lucida Gr

http://activeden.net/item/ibutton-toggle-slider/78111



POWERFULL FLASH ACCORDION MENU UNLIMITED LEVELS V3

This flash component allows you to create accordion menu’s and combobox’s in a few minutes and customize every detail without opening the flash file, because everything is xml driven.

As it says in the title, using this component you can create accordion menu’s with as many levels as you set in the xml file, there is no limit. Also you can customize each level individually, allowing you to create complex menus and desings.

In this new version you can set 4 different actions for the button, such as launch a link, go to a frame, load an image/swf or call a function.

Also this menu includes some nice API features that allows you to manipulate/navigate the menu dynamically.

http://activeden.net/item/powerful-flash-accordion-menu-unlimited-levels-v3/75262




CLEAM MEDIA PLAYER BUTTONS

Simple and easy to use and modify.

A collection of media player buttons,clean and modern, glossy, completely resizable vectors.

Just copy/paste or drag the buttons into your own project. It’s that easy.

The Zip contains an CS4 Fla, CS3 Fla, CS AI file and CS EPS file. I have included the Illustrator vectors in the pack.

For additional help contact me here at Graphic River or you can find my email address in the help file that comes with this product.

Tags: media player, buttons, player, style, clean, glossy, gloss, play, pause, stop, next, previous, forward, backward, star

http://activeden.net/item/clean-media-player-buttons/69078




AS3 WEB 2.0 BUTTON CLASS


Features:

Label, Label Color, Label Size, Font name, Colors of button layers(up, over, down), Width, Height, x Margin, y Margin, corner curves, ButtonMode, dropShadow, Activeness.

Can be used both in Document Class and time line.

http://activeden.net/item/as3-web-20-button-class/63030



THE SPINE XML IMAGE MENU

The Spine XML Image Menu is an image based menu with lots of flexibility that is straight-forward and simple, but also fun and creative. It scales the menu image items on mouse over and you can also choose to have a tooltip. On click, the menu will link out to a URL . If the stage is wider than the menu, the menu will be centered, otherwise, if the menu is wider than the stage, it will scroll left to right on the mouse’s horizontal position. It works great as a products menu that would link out to the specific product page.
The menu is XML driven and you can set the following things in the XML file:
– the background color
– the width of the menu items
– the height of the menu items
– the thickness of the border on mouse over of the menu items
– the amount of scaling on mouse over of the menu items
– whether the tooltip is on or off
– the background color of the tooltip
– the background transparency of the tooltip
– the image/SWF path for each of the menu items
– the tooltip text for each of the menu items
– the link URL for the on click of each of the menu items
– the link target for the on click of each of the menu items
So you can have as many images/SWFs as you want and they can be any size you want!

http://activeden.net/item/the-spine-xml-image-menu/50142




XML VERTICAL ACCORDION

XML Accordion generated from XML .

Each item in the xml has a title and a content attribute, allowing the flash file to load external contents into each item. The example above loads .jpg images, but these can be .swf, .png, .gif. (Basically any format allowed by Loader.load())

* Easy do edit xml file
* add as many items as your site can handle
* change which item opens by default
* clearly labeled layers and symbols for easy editing

http://activeden.net/item/xml-accordion/36743




HORIZONTAL XML ACCORDION

XML Accordion generated from XML .

Each item in the xml has a title and a content attribute, allowing the flash file to load external contents into each item. The example above loads .jpg images, but these can be .swf, .png, .gif. (Basically any format allowed by Loader.load())

* Easy do edit xml file
* add as many items as your site can handle
* change which item opens by default
* clearly labeled layers and symbols for easy editing

http://activeden.net/item/horizontal-xml-accordion/43382





PREMIUM TWO LEVEL EXPANDING MENU

Premium Two Level Expanding Menu

This is an XML driven vertical expanding menu designed to be clean, functional, easy to implement, and very customizable. All graphics are vector, and all is editable incliding colors, sizes, fonts etc easily from Flash. Each button either expands to show a sub menu, or links out to a url (“_self” or “_blank” can be set). You can also call javascript functions with it as well.

http://activeden.net/item/premium-two-level-expanding-menu/23880




CIRCLE MENU


Highly customizable menu made in ActionScript 3.
Any number of items with own colors and selected colors are supported. Many editable properties which vary the look and feel a lot.

Properties :
innerRadius, radius, angle, radiusDecrement, angleDecrement, angleIncrement, motionType, motionTime

http://www.ultrashock.com/#/asset/39553/circle-menu.html




ODOMETER AS3

A number Odometer - will 'odo' to any number it's set to, up or down, from any number it was last set to. Useful for Game score displays, hit counters etc.

http://www.ultrashock.com/#/asset/43513/odometer-as3.html




FLASH TOOLTIP AS3 V1.0.3

The flashTooltip component allows you to easily add a descriptive window that appears when the user moves their mouse over Flash buttons or movie clips. The tooltip may contain text, images or SWF's. Includes 5 built-in opening and closing effects. Fully customizable. .

http://www.ultrashock.com/#/asset/42610/flashtooltip-as3-v1.0.3.html



PROP3D 60s TV

Prop3D is a unique interactive Papervision3D media player component which can be customized and preloaded with your original videos, images & audio. The player itself is a 3D object, and can auto spin or be mouse tracked in a 3D space.

Prop3D includes a Collada 3D model and an ActionScript 3 component that loads it in a specific position using the component inspector. The really impressive thing about this component is that it allows you to load videos, images and sounds (displaying an equalizer) over a canvas within the model via an XML playlist. Finally, being able to customize the png meshes which construct the 3D object, makes it the most complete Papervision3D based component on the market.

We've teamed up with Zero Fractal Studios (the makers of the popular Tree3D component) to bring you these premium quality, unique and exclusive UltraComponents. Stay tuned for more!

Additional features include:
* Great Memory and CPU Handling (this feature requires flash player 9.0.115 or higher).
* Data Driven - Prop3D loads information from XML objects so you can customize your play list according to your needs.
You can also modify the play list with the API.
* Customizable mouse interaction - You can set the prop to face the mouse vertically, horizontally or both, with the screen always visible, or configure it by simple API calls.
Auto Spin Spin Speed - You can set the prop to spin automatically and change its speed, even with mouse interaction.
* Model customization - You can create your own props or use the props adding elements to the scene.
* Customizable UI Settings - Developers can easily customize every possible aspect of the prop display: position, rotation, camera, and even mouse interaction. .

http://www.ultrashock.com/#/asset/45591/prop3d-60s-tv.html



PROP3D MACBOOK

rop3D is a unique interactive Papervision3D media player component which can be customized and preloaded with your original videos, images & audio. The player itself is a 3D object, and can auto spin or be mouse tracked in a 3D space.

Prop3D includes a Collada 3D model and an ActionScript 3 component that loads it in a specific position using the component inspector. The really impressive thing about this component is that it allows you to load videos, images and sounds (displaying an equalizer) over a canvas within the model via an XML playlist. Finally, being able to customize the png meshes which construct the 3D object, makes it the most complete Papervision3D based component on the market.

http://www.ultrashock.com/#/asset/45589/prop3d--macbook.html


LOADBAR

Very easy to implement, use, and customise. Loadbar can be used for any file loading process. The progress bar is resized using some simple tweening to produce a smooth animation.

http://www.ultrashock.com/#/asset/38155/loadbar.html


CUSTOMCURSOR

CustomCursor is an AS3 class that allows you to quickly and easily add custom cursors to your Flash movies. Custom cursors can be created from bitmap images or MovieClips, so there really is no limit to the custom cursor designs you want to create.

Setting up your custom cursors is effortless. You simply tell the CustomCursor class which custom cursor an interactive object should use, and the everything is taken care of for you. Adding a drop shadow to your custom cursors is as simple as passing a DropShadowFilter to the CustomCursor class.

If you want to get cursor creative, CustomCursor is probably the only class you will need.

http://www.ultrashock.com/#/asset/37933/customcursor.html
http://www.ultrashock.com/#/asset/38155/loadbar.html

Friday, February 26, 2010

Flash PLayer 10.1 on the Google Nexus One

Thibault Imbert and Michael Chaize demonstrate the power of the new Flash PLayer 10.1 on the Google Nexus One. http://vimeo.com/9596010 I apologize for my bad battery management shooting the video. For those who wants to see how the battery reacts playing Flash content on the Google Nexus One, please check that blog post: flashmobileblog.com/2010/02/24/battery-performance-with-flash-player-10-1-on-nexus-one/

Tuesday, February 09, 2010

Erik Natzke

Erik Natzke’s generative paintings are made using Flash, sometimes from sampled photos and video and other times from scratch. He controls very specifically the environment in which his creations thrive, leaving the artwork’s specificities to the whim of the code.




http://jot.eriknatzke.com/
http://vimeo.com/2090593
http://centripetalnotion.com/2007/11/30/03:35:23/

Wednesday, February 03, 2010

Android

The Applications layer hosts all Android and third-party applications, and several or more third-party applications can execute simultaneously. However, as noted, doing so can shorten battery life.

Beneath the Applications layer is the Android Frameworks layer. This layer consists of Java classes that provide application functions such as window management, window content display, application messaging, and handling phone calls. Obviously the interface Android presents at this level uses the Java programming language, and because the source code is available, you can modify these classes to extend their capabilities or over override their behavior. Note that some of the lower levels in the stack present C++ interfaces.

Next on the software stack comes the Libraries and Runtime layer. The libraries implement 2D and 3D graphics support, along with multimedia content decoding. This layer has engines to support application features, such as a SQLite database engine and WebKit, which handles web content rendering.

Like Java ME, Android strives for hardware independence by using a bytecode interpreter to execute Android applications. However, it doesn't use Sun's JVM, but instead uses its own Dalvik Virtual Machine (DVM). The advantage to Android's use of a different bytecode interpreter is that the DVM was designed so that multiple instances of it can run, each in their own protected memory space, and each executing an application. While this approach offers stability and a robust environment for running multiple applications, it does so at the expense of compatibility with Java ME applications.

The lowest layer of the stack is the Linux kernel. It provides preemptive multitasking and system services such as threads, networking services, and process management. It handles all low-level drivers and manages the device's power




My favorites device right now is the

Samsung Behold II which is now official. It is offered by T-Mobile and run on Android OS. Behold II is also known as SGH-t939 and is quite an impressive phone.

The device has a 3.2″ AMOLED touch-screen, supports 3G networks and T-Mobile promises it will be out before the holidays.

Samsung Behold II will be Samsung’s first Android-powered device with T-Mobile and will have an integrated GPS receiver
so you can take full advantage of Google Maps, and hundreds of others apps that uses location information.

Samsungs Touchwiz 2.0 and Cube Interface is pretty slick and is a great demonstration of what Open GL can deliver on handled handset



Samsung Behold II Feature list

Wednesday, January 27, 2010

How to retrieve XMP Data/Cuepoints using the FLVPlayback

Some users may wonder how they can retrieve the XMP data using the FLVplayback Component.

The best approach is based on the following article

http://www.adobe.com/devnet/flash/articles/flvplayback_fplayer9u3_04.html

and consist of implementing your own Custom callbacks via a custom client class


The FLVPlayback component automatically creates an instance of the class fl.video.VideoPlayerClient, assigns it to the NetStream's client property, and handles all callback messages that come through the NetStream. The default class fl.video.VideoPlayerClient handles only the callbacks onMetaData() and onCuePoint(). Both of these messages generate events (MetadataEvent.METADATE_RECEIVED and MetadataEvent.CUE_POINT) so that you do not need to register a custom class to handle these callbacks.

However, if you do wish to use custom callbacks, you must register a custom client class. You should extend fl.video.VideoPlayerClient to ensure that the onMetaData() and onCuePoint() handling supplied by VideoPlayer and FLVPlayback will continue to work properly.

The requirements for a custom client implementation are as follows:

* The constructor method must take an fl.video.VideoPlayer instance as its only parameter.
* The custom class must include a ready property which should be set to true when all messages expected at the very beginning of the NetStream have been received. This step is necessary because the VideoPlayer class initially hides the video and plays the beginning of the file to access the correct dimensions and duration of the video. It then quickly rewinds the video to the beginning and unhides it. If the rewind occurs before all messages at the very beginning of the file are received by VideoPlayer, there's a chance those messages may never be received.
* It is highly recommended that you declare the custom class as dynamic to avoid encountering runtime errors. Errors may appear if any callbacks are triggered that the class is not set up to handle.
* It is also recommended to extend fl.video.VideoPlayerClient to ensure proper onMetaData() and onCuePoint() handling.

1) Create a new extented Metadata EVENT

Copy IVPEvent.as from the source code of FLVplayback locally under your FLA project under fl\video sub folder

Use the code below to register a new extended event save it in a file ExtendedMetadataEvent.as


package fl.video {

import flash.events.Event;

/**
* Flash® Player dispatches a ExtentedMetadataEvent object when the user
* requests the FLV/F4V/H264 file's metadata information packet (NetStream.onXMPData)
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*/
public class ExtendedMetadataEvent extends fl.video.MetadataEvent {


/**
* Defines the value of the
* type property of a xmpDataReceived event object.
*
* @see FLVPlayback#event:xmpDataReceived xmpDataReceived event
* @eventType xmpDataReceived
* @langversion 3.0
* @playerversion Flash 10.0.0.0
*/
public static const XMPDATA_RECEIVED:String = "xmpDataReceived";


/**
* Creates an Event object that contains information about metadata events.
* Event objects are passed as parameters to event listeners.
*
* @param type The type of the event. Event listeners can access this information
* through the inherited type property. Possible values are MetadataEvent.XMPDATA_RECEIVED.
*
* @param bubbles Determines whether the Event object participates in the bubbling
* stage of the event flow. Event listeners can access this information through the
* inherited bubbles property.
*
* @param cancelable Determines whether the Event object can be canceled. Event listeners can
* access this information through the inherited cancelable property.
*
* @param info Determines the dynamic properties to add.
*
* @param vp Determines the index of the VideoPlayer object.
*
* @langversion 3.0
* @playerversion Flash 9.0.28.0
*
*/
public function ExtendedMetadataEvent( type:String, bubbles:Boolean=false, cancelable:Boolean=false,
info:Object=null, vp:uint=0) {
super(type, bubbles, cancelable);
super.info = info;
super.vp = vp;
}


/**
* @private
*/
override public function clone():Event
{
return new ExtendedMetadataEvent(type, bubbles, cancelable, info, vp);
}

} // class ExtendedMetadataEvent

} // package fl.video



2) Use the code below to register the custom client class:


package {

import fl.video.VideoPlayer;
import fl.video.VideoPlayerClient;
import fl.video.ExtendedMetadataEvent;

import flash.events.Event;
import flash.events.EventDispatcher;

import flash.display.Loader;
import flash.display.DisplayObjectContainer;
import flash.utils.ByteArray;


/**
* NetstreamDataVideoClient subclasses VideoPlayerClient, the default
* VideoPlayer.netStreamClientClass value. This way all
* the metadata and cue point handling built in the
* VideoPlayer works properly.
*
* The class is declared dynamic so if any other
* messages are received that we do not support in
* this class (onTextData(), other custom
* messages) no runtime errors will occur.
*/

dynamic public class NetstreamDataVideoClient extends VideoPlayerClient
{

/**
* This variable is set in onImageData and is used to help
* determine when the ready property should be true.
*/

protected var gotXMPData:Boolean;
protected var gotImageData:Boolean;
public var XMPString:String = "";
protected var verbose:Boolean = false;

/**
* The constructor must take a VideoPlayer as its
* only parameter. It needs to pass that argument
* along to the super constructor.
*/

public function NetstreamDataVideoClient(vp:VideoPlayer) {
super(vp);
gotImageData = false;
gotXMPData = false;
}

/**
* Handling for onImageData() message
* Loads the image bytes into a flash.display.Loader
* and adds the image to the
*/

public function onImageData(info:Object):void {
// Only handle onImageData() once. Any time we seek to the
// start of the file, the message will call this function
// again
trace("onImageData");
if (gotImageData)
return;
var loader:Loader = new Loader();
loader.loadBytes(info.data);
var parent:DisplayObjectContainer = _owner.root as DisplayObjectContainer;
if (parent) {
parent.addChildAt(loader, 0);
}
gotImageData = true;
}

public function onTextData(info:Object):void {
trace(info);
recurseTrace(info, "");
}


// FOR LOCAL FILE OR HTTP
public function onXMPData(info:Object):void {
if (gotXMPData)
return;

if (verbose)
trace("NetstreamDataVideoClient onXMPData");

// F4V/H264 uses data to pass raw XMP
if (info.data!= undefined)
{
if (verbose)
trace(info.data);
}
else
{
if (info.liveXML!= undefined)
{
// FLV uses liveXML to pass raw XMP
if (verbose)
trace(info.liveXML);
}
}

gotXMPData = true;

// for (var i in info)
// {
// trace(i + " is " + info[i]);
// }
// trace("####\n");

// XMP came from Adobe Media Encoder for Flash
if (info.data!= undefined)
{
XMPString = info.data;

_owner.dispatchEvent(new ExtendedMetadataEvent(ExtendedMetadataEvent.XMPDATA_RECEIVED, false, false, info));
}
else
{
if (info.liveXML!= undefined)
{
XMPString = info.liveXML;

_owner.dispatchEvent(new ExtendedMetadataEvent(ExtendedMetadataEvent.XMPDATA_RECEIVED, false, false, info));
}
}
}


private function recurseTrace(info:Object, indent:String):void
{
for (var i:* in info) {
if (typeof info[i] == "object") {
trace(indent + i + ":");
recurseTrace(info[i], indent + " ");
} else {
trace(indent + i + " : " + info[i]);
}
}
}

/**
* property that specifies whether early messages have been
* received so it is OK for the player to rewind back to the
* beginning. If we allow the VideoPlayer to rewind before
* all messages at the very beginning of the file are received,
* we may never receive them.
*
* The default class, VideoPlayerClient, only requires
* onMetaData() to be received before rewinding. onImageData()
* also appears at the beginning of the file, so we might miss
* that if we do not override this property and include a check
* for this data.
*/

override public function get ready():Boolean {
return (super.ready && gotImageData);
}

}
}


IMPORTANT: Don't try to parse the XMP data in the callback as it might be causing some timing issue and you want to give the hand back to the Netstream Object ASAP. Instead fire an event back to your client event listener and make sure you will interpret the data when the video will be in a READY to seek state.


3) Receive XMP Data using FLVPlayback

import NetstreamDataVideoClient;
import fl.video.ExtendedMetadataEvent;
import flash.events.*;
import fl.video.*;

VideoPlayer.netStreamClientClass = NetstreamDataVideoClient;

_playback = new FLVPlayback();
_playback.width = 1280;
_playback.height = 720;
_playback.autoRewind = false;
_playback.bufferingBarHidesAndDisablesOthers = true;
_playback.visible = true;
addChild(_playback);
_playback.addEventListener(MetadataEvent.METADATA_RECEIVED, metadataListener);
// the XMP one
_playback.addEventListener(ExtendedMetadataEvent.XMPDATA_RECEIVED,xmpListener);



private function xmpListener(inEvt:fl.video.ExtendedMetadataEvent):void {
var XMPString:String = "";
if (this.verbose)
trace("--- xmpListener ----");
if (this.verbose) {
if (inEvt.info.data!= undefined)
{
XMPString = inEvt.info.data;

trace("RECEIVED XMP DATA = " + XMPString);
// ready to parse
}
else
{
if (inEvt.info.liveXML!= undefined)
{
XMPString = inEvt.info.liveXML;

trace("RECEIVED XMP DATA = " + XMPString);
// ready to parse
}
}
}
}


Hope you enjoy this article !
Time to interpret the data now

http://younsi.blogspot.com/2008/12/interactive-video-in-flash-using-f4v.html

and store some useful XMP Data

http://www.actimus.com/

Free AS3 Interactive Video FLVPlayback component for FLASH CS5

http://shop.actimus.com/product_info.php?products_id=122

Tuesday, January 19, 2010

Urgence Haïti. Internet is finally up

Bill (woody) is an independant internet guru who is highly respected.

On Jan 18, 2010, at 3:46 PM, @…edu.ht wrote:
| > The Teleco Building where ns1.nic.ht and ns2.nic.ht are (were) is completely dust.
| > Thanks a lot for your time to keep .ht up and running well.
|
| Believe me, that's the least we could do.
| And please know that you have our deepest sympathy.
|
| In case you have time to look it over, here are the other things we've been focusing our effort on.
| I'd appreciate a sanity-check, and any help you might be able to give us in prioritizing,
| or letting us know when you know that someone else is already covering something:
|
| - Arranging US military deliveries of diesel to Reynold for the two generators at Boutilliers Hill.
|
| - Coordinating Columbus, Tyco, the Marine Research labs at the University of Puerto Rico, and the US Navy,
| to try to get a festoon cable run from Santo Domingo to Port au Prince, and/or an extension
| from the Columbus branching unit that lies between Port au Prince and Guantanamo.
| We're making sure that people understand that if this comes to fruition, ownership of anything
| that's been aid-funded needs to be divided among Haitian ISPs, not monopolized within Columbus.
|
| - Arranging delivery of SIP VoIP phones (again to Reynold) for the use of the ISPs, emergency responders,
| and Haitian government. Questions here: Are stand-alone phones preferred, or FXS ports on routers,
| with analog phones? How many? Is the local Haitian ISP community prepared to support them with
| an Asterisk or equivalent back-end? Is there anyone there who's prepared to configure each of
| a batch of stand-alone phones?
|
| - Helping coordinate international law enforcement and the technical community to shut down and prosecute
| con-artists who are setting up fake relief donation web sites and spamming to promote them.
|
| What else can we do to help you?
| -Bill


I'm sure other people involved in the relief work can suggest other things, but a few comments from my point of view:

- Communications capability underpins the ability of other relief workers to do their jobs effectively, so although we, as a community, aren't feeding people or tending to their medical needs, we are helping those who are doing those crucial jobs by allowing them to focus on their work.

- In the short-term, the equipment that's been requested by people on the ground has either already been delivered, is onboard a ship that left Jacksonville about twelve hours ago, or is being containerized to load on a ship that's leaving from Port Everglades tomorrow.

- Also in the short-term, keep an eye out for con-artists who are trying to lure people in to fake aid-donation web sites with spam. Law enforcement is coordinating internationally to take those offline as promptly as possible.

- In the mid-term, what our community needs to do is to make sure that backhaul infrastructure gets into place to move traffic in the 1Gbps-10Gbps range from Port au Prince to Miami. There are several cable systems which land in Santo Domingo, and Columbus has a branching unit off Guantanamo, so our main efforts have been focused on getting a festoon cable run around from the Santo Domingo landing (the University of Puerto Rico Marine Research labs have committed their cable-laying ship, crew, and divers, but we're still looking for an appropriate spool of armored singlemode in the 12-24 core range (more certainly wouldn't hurt, as this would be unrepeatered), and on finding funding to get Columbus to run the spur in from their BU. BTC apparently has fiber already existing or in process of turn-up between Port au Prince and the Bahamas, but nobody's been able to get a response from them yet about its status.

- More generally, as a community, we do good when we make sure that places like this, places that may not have large or lucrative markets, are still served by diverse fiber, rather than by a single fragile monopoly, or not at all, as in Haiti's case. There are many countries as vulnerable as Haiti, and many of them have no fiber. Most humanitarian disasters happen in poor countries and these are generally the countries our community currently has the least capacity to serve. We can think a little more broadly than that, looking to a future when people in poor countries have more smartphones, and students and small businesses are getting online. We don't need to wait for markets to develop... we can invest in those markets, and _cause_ them to develop. Then they won't be as vulnerable to disasters like this.

- Thinking to the longer term... The majority of people who die in humanitarian disasters die of second-order effects like starvation and disease that come in the wake of an earthquake or flood or whatever. That's just beginning now in Haiti, and will continue for some time. The people who died in the earthquake itself will be far outnumbered by those who will die as a result of insufficiently prepared emergency response. PCH and Cisco have been trying for _years_ to get donors to support a ready-to-go emergency communications team for disaster response, but it's been impossible to get donors to fund _preparedness_ rather than after-the-fact response. But immediately after an emergency is the _most expensive_ time to acquire generators and fuel and solar panels and wind generators and batteries and satphones and fiber and space-segments and so forth. All of that can be _much more cheaply_ purchased or contracted for beforehand, and delivered on-site weeks earlier. A!
and those weeks are the weeks of effective response that reduce second-order deaths in the wake of an emergency. People who think they're being helpful with a donation now should understand that the donation would have saved ten times as many lives if it had been made a year ago, than if it's made now. If your companies have charitable foundations, please get them to think about that.

-Bill

Monday, January 18, 2010

avatar vs roger dean

Did Prog Rock's Greatest Artist Inspire Avatar? All Signs Point To Yes

James Cameron spent years creating Avatar's floating islands and crazy dragons, and then an army of concept artists brought them to life. But maybe they had some inspiration from somewhere else? Like classic album-cover artist Roger Dean? Behold the evidence.

Chances are, if you've looked at a weirdshistic record cover by Yes, Asia or other bands, you've admired Roger Dean's paintings of surreal landscapes. If you've ever seen all good people turn their heads each day, then you're already a Dean fan.

Connor Freff Cochran, founder of Conlan Press (which is busy putting out a bunch of Peter S. Beagle books, hosting Beagle's 52/50 poetry subscription service, and putting out art books) contacted us and suggested that Avatar's lush moon might have gained some inspiration from Dean. And when you look at Dean's artwork and compare it to the concept art we posted the other day, it's hard not to see the resemblance.

All of this makes me want to rent Avatar (when it's released on DVD) and see if I can sync it up with YesSongs.

Original Post

http://io9.com/5426120/did-prog-rocks-greatest-artist-inspire-avatar-all-signs-point-to-yes/

Other post

http://blog.signalnoise.com/2010/01/06/avatar-vs-roger-dean/
http://www.yannicklejeune.com/2010/01/avatar-roger-dean.html

Wednesday, December 02, 2009

Web Analytics

With the recent news on Yahoo Finance regarding Omniture-Adobe acquisition, I was curious to know a bit more about Web Analytics and provide pointers to anyone reading my blog. I posted an article some time ago on how to add Google Web Analytics to a SWF. Anyhow, here is a very great blog that I found at Tealium.com for those interested in Web Analytics. The blog is really well written by web Analytics Experts. Former Web Side Story, Visual Science and Omniture folks...


http://www.tealium.com/blog/