Jumaat, 27 Ogos 2010
Cisco Internet Streamer 2.5 with RTMP
Now I'm in the middle of nowhere, how to stream RTMP in CDS-IS ?
Ahad, 22 Ogos 2010
Live Streaming & On Demand Video
Add caption |
Wowza Server Console |
HD quality streaming over RTMP using Flowplayer |
CakePHP, WowZa VOD Demo |
Web 2.0 kini semakin canggih. Sudah berlalu zaman di mana melayari internet untuk membaca text dan melihat gambar. Melihat video melalui internet kini telah menjadi satu kebiasaan. Untuk itu, saya sedang melakukan research berkaitan :
1. Teknologi yang boleh stream Live Video melalui Webcam / HD Camera
2. Menggunakan Encoder percuma seperti Adobe FMLE 2.5 / 3.0
3. Media dalam bentuk FLV / MP4 dalam format H.264
4. Boleh dilihat menggunakan Browser dan Iphone/BB/ Mobile
Pada mulanya saya memilih Adobe Flash Media Server, tetapi setelah mencuba Wowza Flash Media Server versi 2.0, saya mungkin memilih solution dari Wowza untuk solution tetap.
Ciri-ciri Wowza yang saya suka
- Anti Hotlink
- Direct MySQL Logging
- h.264, mp4,f4v,mp3
- Allow Domain ( eg, only viewable at http://azrilnazli.com )
- supports live and vod
Seharian saya setup Wowza dalam Linux CentOS dan Windows 2003 Server dan namapknya kedua-keduanya berjalan dengan lancar kecuali server saya cuma mempunyai 1 CPU sahaja ( Wowza memerlukan 4 CPU )
Ujian yang saya jalankan
1. Stream dari webcam laptop over wifi ke server di IDC @ 200kbps ~ PASSED
2. HD Video On Demand Streaming guna format RTMP/MP4 ~ PASSED
3. MySQL Database log untuk usage ~ PASSED
4. CDN integration untuk VOD/LIVE RTMP ~ PASSED
5. Wirecasting ( VOD / Live Switch ) ~ PASSED
Statistik
Disebabkan sudah ada module untuk rekod log ke dalam MySQL database, membina statistik menjadi lebih mudah. Jadi saya boleh keluarkan data seperti berikut
- TOP 10 Video On Demand
- Volume used for VOD/LIVE
- Number of users
- Total volume served
Dengan menggunakan framework CakePHP dan digabungkan dengan FusionFreeCharts, saya boleh membina antara muka interaktif untuk paparkan kegunaan video secara live.
Auto Encoding on Upload
Membina transcoding engine adalah satu tugas yang sukar, bayangkan anda membuat sistem yang boleh menerima audio/video dari pengguna dan perlu proses setiap video yang diupload ke mp4 atau flv sebelum dipaparkan ke browser. FFMPEG adalah utility yang anda perlu kuasai dan juga GEARMAN
- FFMPEG ( transcoder )
- GEARMAN ( queue engine )
- SWFUPLOAD ( flash uploader dari browser )
- CAKEPHP
Anda mungkin boleh membina Youtube versi sendiri jika menguasai semua ilmu di atas.
Kos yang mungkin terlibat
1. RM3000 untuk Wowza 1 time license
2. RM3000 untuk Wirecast
3. RM7000 4U rack + 2mb dedicated @ IDC untuk setahun
4. RM15,000 1 X 1U 4 CPU 16 GB RAM server
7. RMXXX CDN subscription untuk local deliovery dan international delivery
Boleh tahan mahal untuk running media business :D
Sabtu, 21 Ogos 2010
Ebook : Panel Kawalan User menggunakan ACL/AUTH
Akhirnya setelah menulis dan membuat ujian selama lebih kurang 5 hari, Ebook Panel Kawalan User menggunakan Acl/Auth berjaya disiapkan.
Acl adalah satu komponen penting dalam Framework CakePHP , dan untuk menguasainya agak mengambil masa. Saya memerlukan beberapa percubaan untuk memahami konsep asal ACL dan AUTH. Jika anda seorang developer CakePHP, cuba ikuti tutorial ini.
ScribD: http://www.scribd.com/doc/36175172/CakePHPPanelKawalanACL-AzrilNazli
PDF : http://mamakspot.googlecode.com/files/CakePHPPanelKawalanACL-AzrilNazli.pdf
Jumaat, 20 Ogos 2010
Menulis Ebook Panel Kawalan
Sudah 45 mukasurat Ebook Membina Panel Kawalan ACL ditulis. Semalam dengan bantuan seorang tester, kami mencuba untuk test run sistem Panel Kawalan ACL dan alhamdulillah tiada major error, cuma tertinggal code. Hari ini saya menulis dan menguji kod untuk AccessComponent dan AccessHelper. Fungsinya untuk show/hide menu berdasarkan credentials user yang login ke dalam sistem. Sistem yang dibina cukup lengkap dengan
- User Registration,
- Login,
- Logout,
- Paparan data user yang login
- Show/Hide Menu berdasarkan ARO Permission
- Highlight Menu
- CSS Untuk menu
Countdown : Panel Kawalan ACL CakePHP
Muka Hadapan Ebook |
ACL atau Access Control List adalah satu tajuk yang agak sukar dikuasai, namun sangat berguna jika anda berjaya menguasainya. Nantikan penerbitan Ebook ini. Pihak kami sedang membuat testing ke atas kod yang dihasilkan dengan bantuan programmer-programmer CakePHP yang cukup terlatih.
Selasa, 17 Ogos 2010
Training Joomla 1.5
Hari ini pertama kali sejak menceburkan diri dalam bidang training, mengajar CMS Joomla versi 1.5. Training material saya gunakan buku Joomla For Dummies.
Peserta kebanyakkannya gabungan dari sektor swasta dan kerajaan dan kebanyakkannya adalah pengguna asas IT. Tidak sebelum student saya sebelum ini yang rata-rata mempunyai pengetahuan basic HTML/CSS/PHP dan MySQL, kali ini memang betul-betul end user.
Jadi cabaran-cabaran training kali ini ialah :
- Laptop mereka OS berlainan ( XP, Vista )
- ada antivirus block Port 80,3306 dan 443 ( skype guna port 80 )
- Laptop processing power yang sangat slow ( 10 saat untuk render page depan Joomla )
- Konsep CMS Joomla, ( Section - Category - Article )
- Apa itu PHP,MySQL,PHPMyADMIN dan XamppLite
So saya kena ikut pace setiap peserta. Kelas akan berlangsung selama 3 hari dan target utama setiap peserta dapat menggunakan Joomla 1.5 sebagai portal.
Peserta kebanyakkannya gabungan dari sektor swasta dan kerajaan dan kebanyakkannya adalah pengguna asas IT. Tidak sebelum student saya sebelum ini yang rata-rata mempunyai pengetahuan basic HTML/CSS/PHP dan MySQL, kali ini memang betul-betul end user.
Jadi cabaran-cabaran training kali ini ialah :
- Laptop mereka OS berlainan ( XP, Vista )
- ada antivirus block Port 80,3306 dan 443 ( skype guna port 80 )
- Laptop processing power yang sangat slow ( 10 saat untuk render page depan Joomla )
- Konsep CMS Joomla, ( Section - Category - Article )
- Apa itu PHP,MySQL,PHPMyADMIN dan XamppLite
So saya kena ikut pace setiap peserta. Kelas akan berlangsung selama 3 hari dan target utama setiap peserta dapat menggunakan Joomla 1.5 sebagai portal.
Ahad, 15 Ogos 2010
CakePHP & CCTV Motion Detection
Flowplayer integration |
Image Sequence |
Motion detection and database connectivity powered by Motion, http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome
Paparkan asset dalam folder
Semua fail video dan gambar CCTV, saya simpan dalam /tmp/motion. Saya menggunakan teknik PHP Gateway untuk paparkan semula imej dan video yang ditangkap menggunakan CCTV
$filename = basename($_GET['filename']);
$dir = '/tmp/motion/';
$path = $dir . $filename ;
$info = getimagesize( $path );
header( "Content-type: {$info['mime']}" );
@readfile( $path );
?>
Kemudian, saya boleh lihat kembali menerusi, alamat seperti gambar di bawah
$filename = basename($_GET['filename']);
$dir = '/tmp/motion/';
$path = $dir . $filename ;
$info = getimagesize( $path );
header( "Content-type: {$info['mime']}" );
@readfile( $path );
?>
Kemudian, saya boleh lihat kembali menerusi, alamat seperti gambar di bawah
Sabtu, 14 Ogos 2010
CakePHP beforeSave :: Automatic append user_id
I use this callback extensively, so need to hardcode user_id in every controller.
function beforeSave() {
App::import('Component', 'Session');
$Session = new SessionComponent();
$user = $Session->read('Auth.User');
$this->data[$this->alias]['user_id'] = $user['id'];
return true;
}
function beforeSave() {
App::import('Component', 'Session');
$Session = new SessionComponent();
$user = $Session->read('Auth.User');
$this->data[$this->alias]['user_id'] = $user['id'];
return true;
}
Jumaat, 13 Ogos 2010
Membina Panel Kawalan untuk ACL
Hampir 2 hari memahamkan Acl di dalam CakePHP.
Apa pentingnya Acl ?
Acl berfungsi untuk mengawal akses pengguna setelah berjaya login ke dalam sistem. Cotnohnya sistem anda mempunyai usergroup berikut
SuperUser
Admin
User
Suspended
dan anda mempunyai Controller/Action seperti berikut
Users/index
Users/add
Posts/index
Post/edit
dan anda ingin menghadkan akses setiap usergroup tersebut.
Pertama, saya bina satu panel kawalan untuk tambah/buang semua actions ke dalam sistem
Assign registered Acos ( Action ) to Aro ( Group ) |
ACL check in View |
Improved Security Access Page |
Cake CLI View Acos |
Cake CLI View AROS |
MySQL data structure |
Senarai semua actions dalam sistem |
Khamis, 12 Ogos 2010
Exxon Mobil Job Scammer
Too good to be true, Exxon Mobile offered me a job at UK ? After seconds, ahh a Job Scammer. Victim normally send their CV to the scammer and they will asking some amount of deposit ( at least RM5k ). So beware if you received an email like this
How do I know this is a scam ?
1. Exxon will not use Gmail
2. Typo errors
3. Google the sender/ HR
Rabu, 11 Ogos 2010
The Inceptions / Pengasasan
Antara movie terbaik untuk tahun 2010. The Inception berkisah mengenai teknologi penguasaan minda separa sedar oleh individu ke-3.
Log : Memahami CakePHP ACL & Auth
Ini adalah log
mkdir cds-is
cake bake project cds-is
cd cds-is
ls *
// test http://localhost/cds-is using Mozilla
// create a database with username and password
cake bake db_config # setup cakephp default database
cake schema generate
// edit APP/config/schema/schema.php and create users table using these schema
// create users database using schema
cake schema generate
// create user model
cake bake model user
// create user controller
cake bake controller users
// create users views directory
mkdir view/users
// Create basic auth system in and use Auth Components in UsersController
mkdir cds-is
cake bake project cds-is
cd cds-is
ls *
// test http://localhost/cds-is using Mozilla
// create a database with username and password
cake bake db_config # setup cakephp default database
cake schema generate
// edit APP/config/schema/schema.php and create users table using these schema
/* SVN FILE: $Id$ */ /* CdsIs schema generated on: 2010-08-11 09:08:38 : 1281491378*/ class CdsIsSchema extends CakeSchema { var $name = 'CdsIs'; function before($event = array()) { return true; } function after($event = array()) { } var $users = array( 'id' => array('type'=>'integer', 'null' => false, 'default' => NULL, 'length' => 10, 'key' => 'primary'), 'usename' => array('type'=>'string', 'null' => true, 'default' => NULL), 'password' => array('type'=>'string', 'null' => true, 'default' => NULL), 'description' => array('type'=>'text', 'null' => true, 'default' => NULL), 'created' => array('type'=>'datetime', 'null' => true, 'default' => NULL), 'modified' => array('type'=>'datetime', 'null' => true, 'default' => NULL), 'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1)) ); } ?>
// create users database using schema
cake schema generate
// create user model
cake bake model user
// create user controller
cake bake controller users
// create users views directory
mkdir view/users
// Create basic auth system in and use Auth Components in UsersController
Isnin, 9 Ogos 2010
Mengesan staff / pekerja / kekasih guna teknologi GPS
Saya ada membuat satu sistem pengesan GPS yang simple yang mempunyai ciri-ciri berikut :
1. Aplikasi GPS Tracking yang run dalam Nokia E71/E72/E75 ( Java App ) yang akan menghantar data GPS mengikut interval yang ditentukan menggunakan 3G ( HTTP Protokol )
2. Penerima data menggunakan CakePHP dan data yang diterima akan dimasukkan ke dalam database MySQL
3. View data menggunakan kordinat dari dalam database menggunakan Google MAP JS API
Untuk menggunakan SMS pun boleh tapi disebabkan kos yang tinggi, buat masa ini sistem ini hanya menggunakan HTTP update sahaja
Ahad, 8 Ogos 2010
Axis 2100 Ip Camera MJPEG stream to Wowza Server
So I have an Axis 2100 IP Camera running on the network and these are the specs :
1. 15 FPS max
2. JPG or MJPEG format
3. Direct URL will be http://10.0.0.5/cgi-bin/video640x480.mjpg
Planned Stream
1. Will be published to Wowza server using RTMP format, rtmp://x.x.x.x/live/axis.sdp
2. Will be published in FLV format
3. FFMPEG will transcode the input format in MJPEG and output in FLV
FFMPEG
1. Using Ubuntu Server Operating system
2. Network for OS will be same segment with Axis camera ( 10.0.0.X )
3. Compile FFMPEG with RTMP support
ffmpeg -f mjpeg -i http://10.0.0.5/cgi-bin/video320x240.mjpg -an -vcodec flv -b 100k -r 15 -f flv rtmp://x.x.x.x/live/axis.sdp
5. Grab back the video using your favorite player eg Flowplayer.
1. 15 FPS max
2. JPG or MJPEG format
3. Direct URL will be http://10.0.0.5/cgi-bin/video640x480.mjpg
Planned Stream
1. Will be published to Wowza server using RTMP format, rtmp://x.x.x.x/live/axis.sdp
2. Will be published in FLV format
3. FFMPEG will transcode the input format in MJPEG and output in FLV
FFMPEG
1. Using Ubuntu Server Operating system
2. Network for OS will be same segment with Axis camera ( 10.0.0.X )
3. Compile FFMPEG with RTMP support
- 3.1 sudo apt-get install libssl-dev
- 3.2 svn co svn://svn.mplayerhq.hu/rtmpdump/trunk rtmpdump
- 3.3 Configure;Make,Make Install rtmpdump then ldconfig
- 3.4. Download and compile latest FFMPEG with these options, ./configure --enable-gpl --enable-shared --enable-librtmp
ffmpeg -f mjpeg -i http://10.0.0.5/cgi-bin/video320x240.mjpg -an -vcodec flv -b 100k -r 15 -f flv rtmp://x.x.x.x/live/axis.sdp
5. Grab back the video using your favorite player eg Flowplayer.
Screenshots
Flowplayer RTMP streaming from Wowza Server |
FFMPEG transcoding result |
MJPEG from Axis Camera Web Server |
Jumaat, 6 Ogos 2010
Live Streaming menggunakan Wowza Media Server Centos
Alkisahnya, saya tengah research mengenai Wowza Media Server. Alternatif kepada Adobe Flash Media Server dan Microsoft Silverslight.
Saya mempunyai task di mana client ingin beralih dari Microsoft Media Server ke Flash. Keperluan client adalah seperti berikut :
1. HD quality streaming
2. End format in FLV
3. Smooth Streaming Technology
4. Adove Media Encoder compability mode
5. Variable streaming rate, bergantung kepada speed broadband user
Saya menggunakan VMWARE ESX virtual machine yang menggunakan CentOS 5.1 sebagai OS utama. Wowza memerlukan Java versi seperti di bawah :
[root@wowza azril]# java -version java version "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.6) (rhel-1.11.b16.el5-i386) OpenJDK Server VM (build 14.0-b16, mixed mode)
Download Wowza versi developer dalam bentuk RPM executables dan install. Kemudian isi no serial untuk developer ( percuma )
Pastikan port 1935 dan 8086 dibuka, dan run startup.sh yang terletak di dalam path /usr/local/WowzaMediaServer/bin
Wowza berjaya run |
Adobe Flash Media Live Encoder |
URL : rtmp://x.x.x.x/live
STREAM: wowza.sdp
Kemudian saya melihat log
Log dari startup.sh |
1. Adobe Flash Media Player
2. Flowplayer dengan plugin RTMP
Streaming Live dari Mozilla Firefox menggunakan player dari Adobe Flash |
Streaming Live menggunakan FLowplayer RTMP Plugin |
Business Model yang boleh dibuat dengan servis ini
===================================
1. Live streaming guna Web TV ala Youtube guna Flash. User tak perlu special player, memadai ada Flash
2. Harga berdasarkan jumlah maksimum Concurrent Users
3 Harga berdasarkan jumlah User yang boleh Akses
4. Harga berdasarkan kualiti stream ( 50kbps - 1.5mb )
5. Sokongan CDN seperti Akamai, Jaring Speed CDN dan sebagainya
6. Anda boleh cipta sendiri plan-plan tersebut
7. Harga berdasarkan jumlah live channel
Flow Untuk Business ( self streaming user )
===================================
Sinopsis : Business ini akan menganggap user mempunyai pengalaman sendiri . Target user ini ialah wartawan yang menggunakan internet, stesen TV/Radio, blogger profesional., event management, kolej yang menawarkan course jarak jauh.
1. User akan subscribe dengan salah satu plan anda
2. User akan diberi trial akaun dan boleh login ke Control Panel
3. User boleh create sendiri live channel mereka, eg http://x.x.x.x/user/live/channelname
4. User publish stream ke channel menggunakan Adobe FLME
5. Dalam control panel akan menunjukkan stream mereka beserta HTML embed code
6. Dalam control panel akan ada statistik penggunaan update setiap 1 jam
Flow Untuk Business ( corporate client )
===================================
Sinopsis: Client yang tiada equipment dan harapkan kita sediakan semua sekali dari A-Z
Peralatan wajib
1. Camera HD, Video Camera Digital
2. Channel Switcher seperti Wirecast
3. PC based encoder yang power ( 12GB ram, highend graphics card )
4. Internet connection yang stabil, mampu hantar video feed pada kelajuan 1mbps
5. Penyediaan website untuk paparkan feed.
Peralatan untuk Server ( minimum )
===================================
1. CPU: Single Dual Core, 3.00 GHz or better
2. RAM: 2GB
3. Disk: 2 or more in RAID 0 (striping)
4. Network: 1Gb Ethernet
OS yang disokong :
1. Windows (XP, Vista, 7, Server 2003 & 2008)
2. Linux (all distributions)
3. Solaris
4. Mac OS
5. Unix
Content Delivery Network ( ini sepatutnya ada sebab untuk kurangkan kos bandwidth video feed )
Skillsets yang diperlukan untuk System Admin
================================
1. Linux basic OS maintenance
2. Network troubleshooting
3. Wowza Server Administration
4. Zabbix Realtime Monitoring
Skillsets yang diperlukan untuk Web App Developer
=====================================
1. Log file manipulations ( apache style )
2. Wowza Configuration management ( XML )
3. Statistics Generation via Flash ( Fusion Chart Free )
4. Any RAD Frameworks
5. Paypal integration
How to Market this business ?
=====================================
1. Live streaming importance
2. Cost saving in longer run
3. Subscription based
4. Technical Supports for SLA
5. CDN as value added service
Issues dan masalah yang mendatang
=====================================
1. HTML Hotlinking ( kena prevent user dari embed HTML streaming code )
2. SWF Theft ( kena prevent SWF Player dari kena hotlinking ( boleh guna cara PHP gateway technique )
3. Limit siapa yang boleh publish ker server dan limit jenis encoder
Update 07 August 2010
===================
Saya berjaya buat testing untuk prevent Hotlinking menggunakan panduan dari ( http://www.wowzamedia.com/forums/showthread.php?t=5239 )
Untuk Package, saya menggunakan pre compiled edition dari, http://www.wowzamedia.com/forums/showthread.php?t=6565
Sample configuration
Contoh konfigurasi application/live/Application.xml |
Contoh log file menunukkan module HotlinkDenial |
Rabu, 4 Ogos 2010
Nasi Ayam Kampung Awan Besar
Ayam Kampung, Ikan Masin, Budu Kelantan |
Peha dan Kepak |
Tadi tekak terasa nak makan Ayam Kampung. Jadi , destinasi paling dekat, Restoran Hassan Nasi Ayam Kampung yang terletak di RnR Awan Besar. Seketul ayam kampung harga RM4, jadi saya pilih peha dan kepak. Lauk pulak ambil kuah daging, cecah budu dan teh O Ais. Semuanya RM12/=
Apa yang bestnya ayam kampung ?
- Ratah sampai tulang
- Dagingnya lembut dan lebih rasa
- Sedap dicecah sos budu yang ditumis dengan lada
- Makan seketul tak puas, mesti nak 2
Lokasi : http://wikimapia.org/84066/Rest-Area-Kesas-Highway-Awan-Besar
Isnin, 2 Ogos 2010
E39 Speed Sensor, Odometer stop functioning
Tengah drive tetiba perasan odometer dah mati. Nih sure speed sensor yg duduk kat area tayar belakang belah kiri.
1 sensor original dalam RM300, upah dalam RM100. Kopak jugaklaa RM400 karang.
Odometer tak jalan
Computer board tak boleh bagi reading
Mileag count tak jalan
PDC tak mati secara automatik
1 sensor original dalam RM300, upah dalam RM100. Kopak jugaklaa RM400 karang.
Odometer tak jalan
Computer board tak boleh bagi reading
Mileag count tak jalan
PDC tak mati secara automatik
Ahad, 1 Ogos 2010
Perodua Viva EZi on Sapura Leda Suspension
Kereta adik ipar. Software Engineer ( VOip) yg minat kereta. Baru pasang suspension Sapura Leda tadi @ Dengkil. Upah boleh tahan mahal, RM80 untuk pasang spring sahaja.
Mods
- Sapura Leda Suspension
- Ultra Racing 2 pt Strutbar
- Ultra Racing anti roll bar ( rear )
Mods
- Sapura Leda Suspension
- Ultra Racing 2 pt Strutbar
- Ultra Racing anti roll bar ( rear )
Nasi Beriyani Batu Pahat Salim
Peminat nasi beriyani seperti saya ini, memang agak cerewet kalau bab makan, lebih-lebih lagi makan nasi beriyani. Jadi saya mencuba nasi beriyani Hj Salim menggunakan tag Nasi Beriyani Batu Pahat. Lokasinya terletak di hadapan JPJ Bukit Katil Melaka,
Menu :
- Ayam
- Daging
- Kambing
Lokasi : Bukit Katil, Melaka
Harga : RM6 sepinggan
Contact : Hj Salim, 012 - 252 3870
Wikimapia: http://wikimapia.org/1368830/Jabatan-Pengangkutan-Jalan-Melaka
Tips : Hubungi Hj Salim dulu sebelum datang, takut beriyani dia habis cepat.
Langgan:
Catatan (Atom)