Khamis, 23 September 2010

Adobe Flex 3 Developer Guide

I really need an IPAD to red this 2000++ pages docs. Already fall in love with Action Script and Flex. Just downloaded 300mb Flex 4 Builder.

CDS-IS Built in FMS Server

Me and somebody from XXX tried to publish  LiveStream from Adobe Live Encoder 3.1 to built in FMS Server in Cisco CDS-IS and failed

Flex RIA

I'm reading these 2 books at the moment,
  • Sabex - Professional Flash Video ( AS2,AS2 )
  • O'Reilly Essential Action Script 3.0
My requirements is to develop a stream publisher with these capabilities

- RTMP auth
- Camera selector
- Publish / Unpublish stream

Rabu, 22 September 2010

Flash Streamer to Wowza Server

Imagine you create your own streamer using Action Script 3. After few hours of learning and testing AS2 and 3 now I'm able to publish live event from my webcam to Wowza Flash Server.

Selasa, 7 September 2010

Wowza Recording :: Managing files

Wowza records the stream and put it into $lib/content directory. With no database connection though. So I wrote a simple file manupulation class ( thanks CakePHP File Utils ), and user can view thier own recorded video streamed using rtmp :D

Wowza Stream Recording

Wowza supports live recording, which is pretty cool. Default format is in FLV. SO my plan for the system,

  1. User will have 2 streams type, Live and LiveRecord
  2. If user wants to record the live stream, just push to rtmp://x.x.x.x/live-record/streamname
  3. The VOD playback will be in RTMP format so we can force the user to view on the site
  4. Downloadable video is an option

Isnin, 6 September 2010

Beta Test : Stream Your Life

Register with Stream Your Life Portal

Read the Settings information, and download the necessary software

Adobe FMLE Encoder asking for Username/Password ( the one you register at the portal )

Realtime Statistics

Now you can see your streaming on the website.

The Technology
Streaming Service is a the new phenomenon nowdays. Youtube for example offering free Video On Demand Streaming based on user submitted contents using Flash technology. Now the streaming players have evolved to Live Streaming service. Realtime Streaming is possible using RTMP protocol used by Adobe Flash Media Server, Red5 and Wowza Streaming Server. So for this project the goal are :
  • User can self register to the portal
  • User download Adobe Media Live Encoder
  • User connecting to the portal from encoder by providing Username & Password
  • User start streaming and can share the stream to anyone
  • Every registered user will be given 1 stream name
  • Stream is viewable by PC, Mobile Phone using Flash Technology
  • Statistics for every stream

The Challenge For Integration
 Wowza is Java based and the API is in Java. The portal is written using CakePHP framework which is powered by PHP and the database is provided by MySQL.

A barebone Wowza doesn't have much protection
- everybody can publish to Wowza without authentication
- hotlinking from origin server ( imagine somebody stole your stream and put into their website )
- no MySQL based logs for every stream
- no limit on which encoder can publish to the server ( FMLE,Wirecast, Custom AS3 )

The most important thing is, how do I integrate my CakePHP User with Wowza and each user can only stream according to thier username only ( limit 1 stream per registered user )

After days of strolling the net ( especially in wowza media forums ), all the requirements above have been fulfilled even without proper Java knowledge :D

Skillsets Needed
To polish the system to enterprise level, I'll need the workhorses with these knowledges :
  •  Java Programming ( wowza modules development )
  •  Video/ Audio Format
  •  Wowza/ Flash Media Server
  •  Streaming Technology
  •  Mobile Phone Developer ( J2ME,Cocoa,Blackberry )
  •  Linux System Administration
  •  Web Development ( CakePHP,Ruby On Rails, Gearman, Ajax, Jquery )
  •  Flash Developer ( Action Script )
  •  MySQL Database logging / Shell Scripting
  •  Scalabity / HA / Load Balancing 

Target Clients & Possible Applications
  • Organization who want to do live streaming
  • Weddings Live Stream
  • Online TV Stations
Similar Competitors ( International )
  • Ustream
  • Flix
  • JustinTV
  • LiveStation
  • Qik

Possible Revenues
  • Advertisement by user channels
  • Advertisement preload before stream play
  • Premium stream plan ( recording, higher bitrate, HD, privacy options, more channels, statistics )
Impact To Society
  • There's no local free streaming in Malaysia. This streaming will cater user's in Malaysia and since it's located withing the country, faster streaming experience can be achieved
  • Streaming made easy with user friendly software and can be viewed using regular browser. No need special software to view the stream
  • No need to publish stream to foreign country as the same service can be done locally
The hard part ( integrations to portal, statistics, logging ,ACL permission ) have been done. Basically the framework is ready to cater more personalisation based on client's need. This technology potential is limitless. You can target both PC and Mobile user from single application.

Live demo :

Azril Nazli Alias

Sabtu, 4 September 2010

iStream.My Features

After weeks of playing WowZa, the goal of making my own user generated stream site is getting closer. So lets define what the site basic features :

1. Multiple user groups via ACL ( super, admin, user, suspended )
2. Integration with Wowza RTMP Authentication engine based on their username/password
3. Limit user's stream number/name/bitrate
4. Prevent hotlinking by only allow my server's IP in Domain Lock setting ( not embedable )
5. Statistics for each stream, number of viewers, list of active stream

Wowza RTMP Authentication and CakePHP

Adobe FMLE 3.1 asking Username/Password to Publish


I want to protect my stream to only authorized user ( registered users ). In order to do that, I'm using Wowza Media Security Module. After following the guide in PDF, my Adobe FMLE finally asking for username / password. The module is using plain text file to store the username/password pair and I'm intending to sync it with my CakePHP Users database. The plan will be

1. Write a wrapper class to manage users in wowza text file
2. User CakePHP callback function in Users Controller so when user registered with the system, it will sync with the flat file, so does when the user update or de-register from the site.

Rails 3 and Ruby 1.9 on Windows

Ruby on Rails 3

I'm PHP guy and i use CakePHP extensively in every project. I'm totally in love with CakePHP. But to extends my knowledge , I need to treat Ruby On Rails as my 2nd wife. Still in love hate relationship. Since Rails 3 just being release, I have new pet project now. I want to develop a mini streaming service using RoR and Wowza. The end product should enable registered users these features :
- live streaming path
- statistics for every stream
- embed code for for live streaming player
- index page listing current live streaming

RoR 3 Tutorial :

Jumaat, 3 September 2010

Khamis, 2 September 2010

Pet Project : GPS Tracking System using BlackBerry

My wife just bought me a present, a Blackberry Bold 9700 with 3G internet plan from Maxis. The phone got GPS and supports J2ME. I've written a simple J2ME code to grab GPS data and send over HTTP periodically, but that's for my Nokia E71.

For web based interface, I planned to use Sencha Touch ( )

Rabu, 1 September 2010

Buat sistem untuk import log ke dalam database

Alkisah nak dijadikan cerita, saya ada satu task untuk process semua logs ( apache style ). Ada beratus-ratus file dan dalam setiap file ada beribu ribu row data.

Jadi bagaimana nak
1. masukkan ke dalam MySQL database ?
2. jika run kali kedua, adakah sistem akan buat checking data telah masuk atau belum

Solutionnya, saya buat satu extractor and importer script menggunakan CakePHP CLI

Satria NEO memang champion

Nak dijadikan cerita, aku kena datang Kota Bharu untuk fetch wife balik ke Batu Pahat. So dari Tumpat aku drive ke Kuala Krai. Kuala Krai ke Gua Musang. Gua Musang ke Kuala Lipis. Kuala Lipis ke Raub. Raub ke Bentong. Bentong ke Karak. Karak ke Gombak. Gombak ke Putrajaya. Putrajaya ke Melaka. Melaka ke Batu Pahat.

Jarak perjalanan 750km
Waktu mula : 9am
Waktu sampai : 7pm

Web Application Development

Now the workload is getting heavy
  • Google Map for Base Stations and Subscribers
  • CCTV Management System
  • Video Management System
  • Wowza Log Management System and Wowza System Administration
  • CDS-IS CDN Log Management System
All these development is powered by CakePHP 1.3 & MySQL on Linux