V. KESIMPULAN DAN SARAN
5.2 Saran
1. Ketika melakukan percobaan, sebaiknya dilakukan pada ruangan yang bebas dari sinyal jaringan wireless lain, sehingga tidak mengganggu koneksi ad-hoc antar laptop ketika percobaan dilakukan.
2. Sebaiknya perangkat yang digunakan memiliki spesifikasi yang sama sehingga program simulasi pengiriman video dapat berjalan dengan maksimal.
3. Model matematis hanya digunakan sebagai acuan, sehingga akan lebih baik jika menggunakan eksperimen.
DAFTAR PUSTAKA
[1] C.-H. Lin, C.-H. Ke dan C.-K. Shieh, “A Study of MPEG Video Transmission in Lossy Wireless Networks,” Departement of Electrical Engineering, Taiwan.
[2] J. G. Apostolopoulos, W.-t. Tan dan S. J. Wee, “Video Streaming: Concepts, Algorithms, and Systems,” Hewlett-Packard Company, Palo Alto, CA, USA, 2002.
[3] C.-H. Lin dan N. K. Chilamkurti, “The Packet Loss Effect on MPEG Video Transmission in Wireless Networks,” Proceedings of the 20th International Conference on Advanced Information Networking and Applications
(AINA’06), 2006.
[4] H. Koumaras dan A. Kourtis, “End-to-End Prediction Model of Video Quality
and Decodable Frame Rate for MPEG Broadcasting Services,” International Journal On Advances in Networks and Services, vol. I, p. 19, 2008.
[5] Rabbit and Dynamic C, “An Introduction to Wi-Fi,” Digi International Inc.,
USA, 2008.
[6] LAN/MAN Committe of the IEEE Computer Society, “Wireless LAN
Medium Access Control (MAC) and Physical Layer (PHY) Specifications,”
The Institute of Electrical and Electronics Engineers, Inc., United States of America, 2007.
[7] B. A. Forouzan, Data Communication and Networking, New York: McGraw-Hill, 2007.
[8] W. Stallings, Wireless Communications And Networks, Upper Saddle River, NJ: Pearson Prentice Hall, 2005.
[9] “YUV CIF reference videos (lossless H.264 encoded),” [Online]. Available:
http://www2.tkn.tu-berlin.de/research/evalvid/cif.html. [Diakses Januari 2015].
LAMPIRAN
Lampiran I
Berikut ini adalah kode program transmisi video yang diinstall pada sisi user.
import java.io.*; import java.net.*;
class UDPSender {
public static void main(String args[]) throws Exception {// while(true){ int [] dataVideo = {15876, 1223, 1116, 937, 1163, 1168, 1079, 1234, 1290, 1388, 1230, 1383, 1727, 2016, 2387, 3010, 3526, 3753, 3946, 3897, 3644, 3300, 2789, 2589, 2693, 15972, 2341, 2909, 3210, 3332, 3530, 3382, 2901, 2758, 2863, 3144, 3062, 3210, 3146, 3069, 2991, 2682, 2374, 2166, 2321, 2424, 2615, 2792, 2608, 2232, 15720, 1337, 1737, 1976, 2239, 2319, 2237, 1736, 2459, 2549, 2671, 2726, 2502, 2455, 2356, 2288, 2766, 2765, 2963, 3265, 3501, 3721, 3551, 3340, 2431, 16039, 2528, 3128, 3341, 3389, 3362, 2842, 2484, 2367, 2598, 3100, 3227, 3086, 2946, 2969, 2837, 2889, 2903, 2840, 2906, 3069, 2908, 2585, 1939, 2137, 15854, 2075, 2082, 2266, 3021, 3207, 3105, 2759, 3022, 2975, 2649, 2626, 2694, 2477, 2514, 2386, 2080, 1863, 1510, 1284, 1246, 1547, 1936, 1803, 1782, 15721, 1947, 1818, 1926, 2366, 2263, 2422, 2312, 2140, 2410, 3180, 3467, 3386, 3129, 2779, 2929, 2575, 2293, 2094, 2134, 2182, 2020, 2088, 1895, 2071, 16002, 2279, 2653, 2690, 2772, 2738, 2934, 2950, 2707, 2728, 2422, 2513, 2694, 2659, 2464, 1983, 1758, 1848, 1876, 1699, 1649, 1646, 1513, 1285, 1234, 15859, 1662, 1981, 2216, 2243, 2110, 1898, 1952, 1802, 1636, 1603, 1701, 1992, 1981, 1753, 2121, 1595, 1353, 1258, 1458, 1636, 1528, 1707, 1992, 2030, 15761, 1759, 1961, 1878, 1794, 1827, 1943, 2398, 2685, 2619, 2545, 2667, 2691, 2846, 2889, 3043, 3042, 3033, 3055, 2997, 2961, 2787, 2787, 2705, 2713, 16075, 2249, 2192, 2414, 2170, 1914, 2120, 2178, 2208, 2514, 2795, 2929, 2811, 2866, 2532, 2367, 2776, 2861, 2610, 2559, 2647, 2466, 2514, 2621, 2837, 15921, 2378, 2668, 2728, 2559, 2338, 1816, 1941, 2589, 3033, 2864, 2856, 2754, 2566, 2008, 1560, 1869, 2154, 2165, 2004, 1936, 2010, 2006, 1956, 2133, 15895, 2510, 3269, 3357, 3239, 3101, 2946, 2764, 2743, 2770, 2740, 2717, 2456, 2209, 2399, 2646, 2650, 2347, 2080, 2291, 2569, 2567, 2124, 2127, 1880};
//Generate dummy bytes: 1024 bytes;
String s = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; int seq=0; try {
String serverHostname = new String ("169.254.145.14");
if (args.length > 0)
serverHostname = args[0];
DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName(serverHostname); System.out.println ("Attemping to connect to"+IPAddress+") via UDP port 9999");
byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; int jumlahPerulahan=5;
for(int j=0;j<jumlahPerulahan;j++){ for (int i=0; i<dataVideo.length;i++){
int packetNumber= (int)Math.ceil((double)dataVideo[i]/1024); for(int x=0;x<packetNumber;x++){
System.out.println("Sending packet: "+seq+" Frame: "+i); double time =System.currentTimeMillis();
String str= "Seq: "+seq+ "Frame: "+i+ "SendTime: "+time+""+s;
sendData = str.getBytes(); DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length,
IPAddress, 9999); clientSocket.send(sendPacket); seq++; } Thread.sleep(40); } } clientSocket.close(); }
catch (UnknownHostException ex) { System.err.println(ex);
}
catch (IOException ex) { System.err.println(ex); }
} }
Lampiran II
Berikut ini adalah kode pogram transmisi video yang diinstall pada sisi server.
import java.io.*; import java.net.*; class UDPReceiver {
public static void main(String args[]) throws Exception {
try {
DatagramSocket serverSocket = new DatagramSocket(9877); byte[] receiveData = new byte[1024];
while(true) {
double time =System.currentTimeMillis(); receiveData = new byte[1024];
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData()); System.out.println("RecTime: "+time+" "+sentence); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort();
} }
catch (SocketException ex) {
System.out.println("UDP Port 9877 is occupied."); System.exit(1);
} } }
Lampiran III
Langkah – langkah percobaan model transmisi Decodable Frame Rate pada jaringan 802.11g
1. Konfigurasi Jarigan 802.11g
Konfigurasi dilakukan untuk membuat salah satu laptop menjadi akses point atau server, untuk itu kita perlu mengetikan perintah berikut pada command prompt:
netsh wlan set hostednetwork mode=allow ssid=mulia key=qwerty1234 Perintah tersebut berfungsi untuk membuat access pointdengan nama “mulia”
dan security key adalah qwerty1234. Maka access point berhasil dibuat, sehingga muncul tampilan command prompt seperti pada Gambar 1.
Gambar 1 Pembuatan access point pada laptop server
Kemudian untuk mengaktifkan access point tersebut dapat dilakukan dengan mengetikan perintah:
netsh wlan start hostednetwork
Maka access point berhasil diaktifkan, sehingga muncul tampilan command prompt seperti pada Gambar 2.
Gambar 2 Aktifkan access point pada server
Setelah konfigurasi wireless berhasil dilakukan, setiap laptop user dapat dihubungkan ke server, seperti yang ditunjukan pada gambar 3
Gambar 3 Hubungkan seluruh user ke server
2. Install UDP Receiver pada sisi Server dan UDP Sender pada sisi User
Setelah semua user terhubung ke server, kemudian kita memasang program
streamer video UDP Receiver pada sisi server dan UDP Sender pada sisi
user.
Untuk UDP Sender kita menggunakan program pada Lampiran I dengan menggunakan NetBeans IDE, seperti pada Gambar 4a.
Gambar 4a UDP Sender pada sisi user
Untuk UDP Receiver kita menggunakan program pada Lampiran II dengan menggunakan NetBeans IDE, seperti pada Gambar 4b.
Gambar 4b UDP Reciver pada sisi server
3. Masukan Data Video ke Program Pengiriman Video pada sisi User
Data video kita peroleh dari video Akiyo_cif.yuv menggunakan Evalvid pada
Gambar 5 Direktori Evalvid pada command prompt
Setelah masuk ke dalam direktori Evalvid, ketikan perintah berikut:
xvid_encraw i akiyo_cif.yuv w 352 h 288 framerate 30
-max_key_interval 30 -o a01.m4v
(Untuk membagi video akiyo dengan lebar 32 dan panjang 288 dengan frame rate 30).
MP4Box -hint -mtu 1024 -fps 30 -add a01.m4v a01.mp4
(Menambahkan 1024 byte dengan 30 frame per sekon).
mp4trace -f -s 192.168.0.2 12346 a01.mp4 > st_a01
(Mengirimkan himted mp4 file udp/tcp ke host tujuan dan menghasilkan
data video dengan nama “st_a01” dalam bentuk .txt seperti yang
ditunjukan pada Gambar 6).
Gambar 6 Data video
Kemudian masukan data video (yang berada pada kotak merah) ke dalam program UDP sender seperti yang ditunjukkan pada Gambar 7.
Gambar 7 Masukan data video pada UDP sender 4. Jalankan program streamer video pada sisi Server dan pada sisi User
Untuk dapat menjalankan program streamer, terlebih dahulu harus memasukan alamat IP server dan port UDP yang digunakan masing – masing pada program UDP sender.
Setelah alamat IP dan port UDP ditentukan, maka kita dapat menjalankan program UDP receiver terlebih dahulu untuk membuka port UDP, agar user
dapat mengirimkan data video ke server. Hal ini dilakukan secara bertahap mulai dari skenario I hingga skenario VI.
5. Catat waktu kirim, waktu terima, urutan paket dan nomor Frame
Setelah kita menjalankan program streamer video tersebut, kita dapat memperoleh data berupa, waktu terima, waktu kirim, urutan paket dan juga nomor frame seperti pada Gambar 8
Lampiran IV
Berikut ini adalah dokumentasi proses percobaan yang dilakukan di Gedung Magister Teknik Elektro, Universitas Sumatera Utara.