Dokumentasi dari anak cupu, jika ada kesalahan mohon sensei2 yang lebih ahli mengoreksi saya :)
CRTMPSERVER merupakan server untuk streaming yang menggunakan script dari bahasa C++. Di sini saya menggunakan linux dari distro centos dan untuk testing koneksi serta capture nya saya menggunakan Adobe flash media live encoder 3.2. Berikut dokumentasi langkah-langkah yang saya lakukan :
1. Install perl net ssleay
yum install perl-Net-SSLeay gcc gcc-c++ autoconf automake subversion make openssl-devel dstat
2. Install cmake, yaitu tool yang anda butuhkan untuk menjalankan c++ rtmp
sudo yum install cmake
3. Download C++ RTMP
sudo svn co –username anonymous –password "" https://svn.rtmpd.com/crtmpserver/branches/1.0 crtmpserver
choose yes to store password unencrypted
4. Masuk ke cmake directory
cd crtmpserver/builders/cmake
Lalu ketik command berikut
sudo cmake –DCRTMPSERVER_INSTALL_PREFIX=/usr/local .
Build files telah dibuat di directory /home/onyit/crtmpserver/builders/cmake
Lalu ketik make install command
sudo make install
5. Set the permission
chmod -R 755 /usr/local/sbin/crtmpserver
Lalu copy file crtmpserver.lua ke /usr/local/etc/
sudo cp crtmpserver/crtmpserver.lua /usr/local/etc/
6. Edit file crtmpserver.lua
Ubah tulisan “applications”
ke
/usr/local/lib/crtmpserver/applications
Kemudian mediaFolder, ubah ke directory yang telah anda sediakan untuk penyimpanan media anda.
7. Sebelum menjalankan server kita membutuhkan Self-Signed SSL Certificate
Apa itu? Secure socket layer digunakan untuk mengenkripsi web traffic agar tidak mudah di-intip oleh orang lain, karena pada umumnya traffic nya tidak dienkripsi. SSL ini akan mengenkripsi data stream antara web server dan client. SSL menerapkan asymmetric key atau Public Key Cryptography, jadi nantinya akan dibuat dua buah key yaitu public dan private, nah sebuah key yang dienkripsi hanya dapat didekripsi oleh key pasangannya, misal ada sebuah key private maka key ini hanya dapat didekripsi oleh key public yang sesuai dengannya. Lalu untuk apa sertifikatnya? Sertifikat ini lebih ke aturan proses komunikasi, sertifikat ini untuk memastikan bahwa pihak yang sedang berkomunikasi dengan kita adalah benar-benar pemegang sertifikat, jadi untuk menghindari serangan impersonation atau peniruan.
a. Generate a Private Key
Openssl digunakan untuk membuat RSA Private Key and CSR (Certificate Signing Request) yang digunakan untuk membuat self-signed certificate yang nantinya bisa digunakan untuk testing atau pemakaian internal.
Key RSA ini key 1024 bit yang dienkripsi menggunakan Triple DES dan disimpan dalam format PEM sehingga dapat dibaca sebagai teks ASCII. (nanti dibahas diartikel lain aja ya masalah kriptografi :) )
sudo openssl genrsa -des3 -out server.key 1024
Anda akan diminta password, ketik saja password apapun namun jangan lupa diingat untuk step
selanjutnya
b. Generate a Certificate Signing Request
sudo openssl req -new -key server.key -out server.csr
di sini nanti anda akan diminta memasukkan beberapa informasi seperti nama Negara, provisi, kota,
organisasi, nama domain dan email.
c. Remove Passphrase from Key, perintah ini digunakan agar apache tidak meminta pass-phrase tiap
kali web server start. Pertama, copy dulu file server.key ke server.key.org
sudo cp server.key server.key.org
command selanjutnya adalah
openssl rsa -in server.key.org -out server.key
jangan lupa mengetikkan password yang telah anda definisikan di step sebelumnya.
d. Generating a temporary self-signed certificate for 365 days
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
e. Copy file server.crt and server.key ke /usr/local/lib/crtmpserver/applications/appselector
sudo cp server.key /usr/local/lib/crtmpserver/applications/appselector sudo cp server.crt /usr/local/lib/crtmpserver/applications/appselector
f. Jalankan servernya
/usr/local/sbin/crtmpserver /usr/local/etc/crtmpserver.lua
Anda nanti akan mendapat hasil kira-kira seperti ini
Note : Jika anda sudah pernah menjalankan server lain sebelumnya, misalnya red5, stop dulu
servernya.jika tidak ada, ya tidak perlu :)
sudo /etc/init.d/red5 stop
8. Agar server secara otomatis jalan saat booting, langkahnya pertama-tama kita buat dulu file
crtmpserver di directory /etc/init.d/ ketikkan init script dari Brian Jones,
a. Masuk ke init.d directory
cd /etc/init.d
b. Buat crtmpserver file
vi crtmpserver
c. Lalu copy script di bawah ini
#!/bin/bash
#
# /etc/rc.d/init.d/crtmpserver
# crtmpserver This shell script takes care of starting and stopping
#
#### BEGIN INIT INFO
# Author: Brian Jones jonesy@cs.princeton.edu
#
# chkconfig: 2345 13 87
# description: crtmpserver is the C-RTMP-Server Service daemon.
### END INIT INFO
# Source function library.
. /etc/init.d/functions
ROOTDIR=/usr/local
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=crtmpserver
DAEMON_ARGS="--daemon /usr/local/etc/crtmpserver.lua"
NAME=crtmpserver
DESC=crtmpserver
PIDFILE=/var/run/$NAME.pid
start() {
echo -n "Starting crtmpserver Server: "
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
echo crtmpserver already running: $PID
exit 2;
else
daemon $DAEMON $DAEMON_ARGS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/crtmpserver
return $RETVAL
fi
}
stop() {
echo -n "Shutting down crtmpserver Server: "
#echo
killproc crtmpserver
echo
rm -f /var/lock/subsys/crtmpserver
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status crtmpserver
;;
restart)
stop
start
;;
*)
echo "Usage: {start|stop|status|restart}"
exit 1
;;
esac
exit $?
d. Start script nya
sudo /etc/init.d/crtmpserver start sudo /sbin/chkconfig crtmpserver on
9. Coba connect dengan by adobe flash live encoder, ganti tulisan localhost dengan ip server anda, klik
connect
Lalu start capture dengan mengklik start
see? video anda akan diencode, lalu dikirim ke server, lalu server akan mengirim ke client dan didecode di sisi client
Reference :


