BAB IV IMPLEMENTASI DAN PENGUJIAN
Pada bab ini akan dijelaskan tentang pengembangan aplikasi broadcaster pada server streaming, konfigurasi, implementasi dan serangkaian uji coba skala lab. 4.1 Implementasi Setelah melakukan analisis dan perancangan pada Bab III terhadap aplikasi broadcaster pada server streaming, tahapan selanjutnya adalah implementasi dan pengujian. 4.1.1
Implementasi Server Streaming Pada implementasi server streaming, berikut penjelasan konfigurasi
perangkat lunak yang digunakan pada sistem operasi Linux Ubuntu 7.0 : 1. Java Development Kit (JDK) Untuk memperoleh perangkat lunak Java Development Kit (JDK) dapat diperoleh
dengan
cara
mengunduh
di
situs
http://java.sun.com/downloads/index.jsp sesuai dengan versi dan sisteminsta operasi yang digunakan. Dalam hal ini penulis menggunakan java-6u2i586.bin. Dan berikut langkah-langkah yang dilakukan: [dedi@Desktop]$ sudo –s pass : [root@Desktop] #mv ./jdk.6u2-linux-i586.bin /usr/ [root@Desktop] #cd /usr [root@usr] #chmod 777 jdk.6u2-linux-i586.bin [root@usr] #./jdk.6u2-linux-i586.bin [root@usr] #................................................... ....................................................................... Do you agree to the above license term? (yes or no) Yes Unpacking....
30
31
........................................................................ ........................................................................ Done
2. Apache-ant Untuk memperoleh perangkat lunak Apache-ant dapat diperoleh dengan cara mengunduh di situs http://ant.apache.org/bindownload.cgi sesuai dengan tipe filenya. Dalam hal ini penulis menggunakan Apache-ant-1.7.0-bin.tar.gz dan berikut langkah-langkah yang dilakukan: [dedi@Desktop]$ sudo –s pass : [root@Desktop] # mv ./apache-ant-1.7.0.bin.tar gz /usr / [root@Desktop] #cd /usr [root@usr] #tar xzfv apache-ant-1.7.0.bin.tar gz [root@usr] #............................................... ................................................................... [root@usr] #mv apache-ant-1.7.0 ant
Setelah selesai melakukan instalasi JDK, berikutnya konfigurasi agar Java dan Ant dapat digunakan sebagai kompilator dan interprete. Berikut langkahlangkahnya : [root@usr] #export ANT_HOME=/usr/ant [root@usr] #export JAVA_HOME=/usr/java [root@usr] #export PATH=$PATH:$JAVA_HOME/bin: $ANT_HOME/bin [root@usr] #export CLASSPATH=.:$JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar
3. Red5 Untuk memperoleh perangkat lunak Red5 dapat diperoleh dengan cara mengunduh di situs http://www.osflash.org/red5/red5downloads. Dalam hal ini penulis menggunakan red5-0.6.3.tar.gz dan berikut langkah-langkah yang dilakukan untuk instalasinya: [dedi@Desktop]$ sudo –s pass : [root@Desktop] #mv red5-0-6-3.tar.gz /opt [root@Desktop] #cd /opt [root@opt] # tar xzfv red5-0-6-3.tar.gz [root@opt] #.........................................
32
............................................................. ............................................................. [root@opt] #mv red5-0.6.3 red5 [root@opt] #cd /red5 [root@red5] #ant [root@red5] #..................................... .......................................................... BUILD SUCCESSFUL Total time : 4 minute 16 second [root@red5] # cd /home/dedi/Desktop [root@Desktop] #unzip red5.zip Archive : red5.zip Inflating : ./red5
Berikut diperlukan mengkonfigurasi Red5 dengan cara menambahkan beberapa baris seperti di bawah ini: [root@Desktop] #vi red5 #!/bin/sh # # Startup script for Red5 flash streaming server # # chkconfig: 345 81 81 # description: RED5 by java # # processname: java (unfortunately) # pidfile: /var/run/red5.pid # config: /etc/red5.conf # Source function library. . /etc/rc.d/init.d/functions PID_FILE=/var/run/red5.pid PID=`ps ax |grep java|grep red5|awk '{print $1;}'` RETVAL=0 start() { echo -n $"Starting $DESCR: " # daemon java $OPTIONS > /dev/null 2>&1 & #Tambahkan 4 baris perintah seperti ini export ANT_HOME=/usr/ant export JAVA_HOME=/usr/java export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar exec $JAVA_HOME/bin/java -Djava.security.manager -Djava.security.policy=/opt/red5/conf/red5.policy -cp /opt/red5/red5.jar:conf:/opt/red5/conf org.red5.server.Standalone > /dev/null 2>&1 & RETVAL=$? [ $RETVAL = 0 ] && touch /var/lock/subsys/red5 && echo $!>$PID_FILE && echo_success echo return $RETVAL } stop() { echo -n $"Stopping $DESCR: " #killproc $PID_FILE [[ $PID != "" ]] && success && kill $PID || failure RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/red5 $PID_FILE }
33
Langkah berikut adalah melakukan konfigurasi dengan memanfaatkan 'chkconfig' agar Red5 langsung aktif setiap saat komputer server diaktifkan atau dihidupkan. [root@Desktop] #chmod 777 red5 [root@Desktop] #mv red5 /etc/init.d/red5 [root@Desktop] #cd /etc/init.d [
[email protected]] #whereis chkconfig Chkconfig : /sbin/chkconfig/usr/share/chkconfig.gz [
[email protected]] # /sbin/chkconfig/ --add red5 [
[email protected]] # /sbin/service red5 start Starting :--------------------------------------------[ ok ]
Setelah proses - proses yang dilakukan diatas selasai, berikutnya kita sudah dapat melakukan
pengujian
pada
browser
dapat
dibuka
http://localhost:5080/ . Berikut tampilan gambar Red5 pada server
Gambar 4.1 Tampilan Red5
dengan
alamat
34
4.1.2
Implementasi Aplikasi Broadcaster Pada implementasi halaman muka (interface) aplikasi broadcaster digunakan
perangkat lunak PHP, Macromedia Flash, XML, Java. Berikut adalah tampilan halaman utama aplikasi broadcaster.
Gambar 4.2 Halaman Utama Aplikasi Broadcaster Seperti terlihat pada Gambar 4.2 di atas, user (dalam hal ini user sebagai broadcaster) memanggil kelas utama (main class) seperti tergambar pada perancangan diagram kelas (class diagram) pada Bab III. Berikut potongan program dari kelas utama. [1 ] class org.red5.samples.livestream.broadcaster.Main extends MovieClip [2 ] { [3 ] var cam, mic, connector, stream, publish_video; [4 ] function Main() [5 ] { [6 ] super(); [7 ] com.blitzagency.xray.util.XrayLoader.loadConnector("xray.swf"); [8 ] } // End of the function [9 ] function onLoad() [10] {
35
[11] this.configUI(); [12] } // End of the function [13] function configUI() [14] { [15] com.neoarchaic.ui.Tooltip.__set__options({size: 10, font: "_sans", corner: 0}); [16] cam = Camera.get(); [17] cam.setMode(480, 320, 15); [18] cam.setQuality(0, 80); [19] mic = Microphone.get(); [20] connector.addEventListener("connectionChange", this); [21] org.red5.utils.Connector.red5URI = "rtmp://localhost/oflaDemo"; [22] connector.configUI(); [23] } // End of the function [24] function status(evtObj) [25] { [26] } // End of the function [27] [28] function error(evtObj) [29] { [30] } // End of the function [31] [32] function connectionChange(evtObj) [33] { [34] if (evtObj.connected) [35] { [36] stream = new org.red5.net.Stream(evtObj.connection); [37] stream.addEventListener("status", org.red5.utils.Delegate.create(this, status)); [38] stream.addEventListener("error", org.red5.utils.Delegate.create(this, error)); [39] stream.attachVideo(cam); [40] stream.attachAudio(mic); [41] stream.publish("red5StreamDemo", "live"); [42] publish_video.attachVideo(cam); [43] } [44] else [45] { [46] publish_video.attachVideo(null); [47] publish_video.clear(); [48] } // end else if [49] } // End of the function [50] [51] static var CLASS_REF = org.red5.samples.livestream.broadcaster.Main; [52] static var LINKAGE_ID = "org.red5.samples.livestream.broadcaster.Main"; [53] } // End of Class
Penjelasan : Baris [3] adalah deklarasi variabel utama dari program. Ada lima variabel global yang digunakan, yaitu cam (untuk kamera), mic (untuk microphone), connector
36
(untuk koneksi antara aplikasi dan port komunikasi), stream (untuk melakukan stream data), publish_video (untuk mempublikasikan data melalui server dengan memanfaatkan RTMP). Baris [4] sampai [8] adalah sebuah subprogram berupa fungsi utama. Berikutnya baris [9] sampai [12] adalah fungsi onLoad yang memanggil fungsi configUI yang tercantum pada baris [13] sampai [23]. Pada fungsi configUI
ini, langkah pertama yang dilakukan adalah menjalankan metode get [16]
untuk mengakses kamera, kemudian kamera dikonfigurasi [17] pada resolusi 480x320 dengan framerate 15 fps dengan kualitas 80%. Baris [19] adalah get microphone
agar dapat menangkap suara. Langkah selanjutnya, baris [20], adalah
mengaktifkan sebuah eventListener dalam rangka jika terjadi perubahan status terhubung atau terputus antara client (user) dan server. Baris [21] adalah baris yang tidak kalah penting, yaitu server membuat sebuah komunikasi data baru untuk mempublikasi hasil rekaman kamera dan microphone dengan membuat sebuah URL baru dengan memanfaatkan protokol RTMP, yaitu rtmp://localhost/oflaDemo. Sehingga user lain atau siapapun dapat melihat hasil streaming cukup mengacu ke URL tersebut langsung dari browser user masing-masing. Gambar 4.3 adalah kondisi aplikasi broadcaster ketika meminta persetujuan user untuk menggunakan kamera dan microphone.
37
Gambar 4.3 Aplikasi Broadcaster sedang meminta (get) kamera dan microphone
4.2 Pengujian Pengujian dilakukan di rumah penulis dengan hanya menggunakan 3 buah unit komputer. Hal ini dikarenakan keterbatasan alat dan waktu. Penulis menggunakan tiga buah komputer dan 1 buah router switch, berikut spesifikasinya: 1. Komputer Server Perangkat keras (hardware) dengan spesifikasi sebagai berikut: -
Motherboard Asus P333SX
-
Prosesor Intel 1,8 Ghz
-
Memory 1024 Mb
-
Hardisk 120 Gb
38
-
VGA Radeon 7200
-
Soundcard C-Media PCI CMI8738
-
LAN Card intel
-
Headphone
Perangkat Lunak (Software) yang digunakan adalah : -
Linux Ubuntu 7.10
-
Java Development Kit (JDK)
-
Sun JVM (Java Virtual Machine)
-
Sun JRE (Java Runtime Enviropment)
-
Apache-ant 1.7
-
Apache 2.2
-
Red5
-
Macromedia Flash Player
-
Mozila Firefox
-
Wireshark
2. Komputer Client1 Perangkat keras (hardware) dengan spesifikasi sebagai berikut: -
Motherboard Hewlett Packard (HP)
-
Prosesor intel Atom
-
Memory 1 GB
-
Hardisk 250 GB
-
VGA
-
SoundCard
-
LAN Card Intel(R)
39
-
Web Cam integrated
-
Headphone
3. Komputer Client2 Perangkat keras (hardware) dengan spesifikasi sebagai berikut: -
Matherboard Asus
-
Prosesor Intel 1,8 Ghz
-
Memory 256 Mb
-
Hardisk 40 Gb
-
VGA Radeon 7200
-
Soundcard soundmax
-
LAN Card intel
-
Headphone
4. 1 buah Router Switch D-Link
Pada ketiga komputer tersebut terhubung dalam dua jaringan Local Area Network dengan menggunakan dua router, seperti terlihat pada Gambar 4.4 dibawah ini: Switch
Client-1
Client-2
Gambar 4.4 Topologi Skema Pengujian
Server
40
Setelah ketiga komputer terhubung, maka akan dilakukan pengujian sebagai berikut : 1. Komputer Server -
Pada
komputer
server
ketikan
alamat
pada
browser
http://localhost/ dengan membuka port 5080, atau ketikan alamat pada browser http://localhost:5080/ untuk menjalankan Red5 sebagai Flash Media Server, pada Red5 port yang terbuka 1935. apabila berhasil akan muncul gambar 4.5
Gambar 4.5 Tampilan Red5 Test Page 2. Komputer Client1 -
Pada komputer Client-1 ketikan alamat pada browser Internet (misal Internet Explorer, Mozilla/Firefox, atau Opera) pada alamat URL seperti berikut rtmp://192.168.1.2/oflaDemo.
3. Komputer Client2 Langkah – langkahnya sama seperti yang dilakukan pada Client-1.
41
4.3 Skenario Pengujian Pada pengujian, dibuat beberapa skenario untuk mendapatkan data yang dibutuhkan demi menjawab permasalah yang dicantumkan pada Bab I. Berikut skenario pengujian yang dilakukan: -
melakukan koneksi hanya 1 user, yaitu komputer Client-1 mengakses ke server. Lalu dilakukan pengukuran dan monitoring terhadap penggunaan bandwidth selama 15 menit dengan frekwensi pengujian sebanyak 5 kali.
-
Melakukan koneksi dengan 2 user. Kali ini akan diaktifkan 2 user, Client-1 dan Client-2. Hal yang sama akan dilakukan kepada kedua user ini.
4.4 Analisa Hasil Pengujian Ketika melakukan analisa, penulis menggunakan perangkat lunak bantu, yaitu Wireshark (untuk sistem operasi Linux) dan Ethereal (untuk sistem operasi Windows). Pada analisa ini dibagi menjadi dua bagian yaitu analisa server ke client dan analisa client ke server.
4.4.1
Hasil dan Analisa Pada Server Pada subbab ini, penulis menggunakan perangkat lunak bantu untuk
memantau penggunaan bandwidth dan paket-paket yang lalu-lalang masuk atau keluar dari server. Tabel 4.1 adalah data pengujian dan pemantauan pada server selama 15 menit.
42
Tabel 4.1 Data Pengujian Monitoring Server Selama 15 Menit Uji ke-1
Gambar 4.6 Grafik Pada Server Selama 15 menit Uji ke-1 Tabel 4.2. Data Pengujian Monitoring Server Selama 15 Menit Uji ke-2
43
Gambar 4.7 Grafik Pada Server Selama 15 menit Uji ke-2
Rata – rata TCP pada Server Tabel 4.3. Rata – rata TCP pada server
Rata - rata =
9603,422 = 1600,57 byte/detik 6 Hasil rata – rata yang didapat untuk paket TCP adalah 1600,57 byte/detik
44
Rata – rata Paket HTTP Tabel 4.4. Rata – rata Paket HTTP
Rata – rata Paket HTTP =
978705,9 = 489352,9 byte/detik. 6 Hasil rata – rata yang didapat untuk paket HTTP adalah 489352,9 byte/detik. 4.4.2
Hasil dan Analisa Pada Client Berikut adalah data dan analisa hasil pengujian aplikasi broadcaster yang
dipantau dari sisi Client atau user. Tabel 4.5. Data Pengujian Monitoring Client Selama 15 Menit Uji ke-1
45
Gambar 4.8 Grafik Pada Client Selama 15 menit Uji ke-1 Tabel 4.6. Data Pengujian Monitoring Client Selama 15 Menit Uji ke-2
46
Gambar 4.9 Grafik Pada Client Selama 15 menit Uji ke-2
Tabel 4.7. Skema Pengujian 10 menit Client
47
Gambar 4.10 Grafik 10 menit Client-A
Tabel 4.8. Skema Pengujian 10 menit Client
Gambar 4.11 Grafik 10 menit Client-B
48
Rata – rata Paket TCP Tabel 4.9. Rata – rata TCP pada client
Rata – rata = 1764,634 = 352,9268 byte/detik 5 Hasil rata – rata yang didapat untuk paket TCP adalah 352,9268 byte/detik
Rata – rata Paket HTTP Tabel 4.10. Rata – rata HTTP pada client
Rata – rata = 8800,51 = 1760,03 byte/detik 5 Hasil rata – rata yang didapat untuk paket HTTP adalah 1760,03 byte/detik