Laporan Praktikum Keamanan Jaringan Komputer “Streaming Linux Dengan Menggunakan Menggunakan NGINX, RTMP dan FFMPEG” FFMPEG”
Fredy H. Manurung 13024139 6. Teknik Informatika . 1
Kementerian Riset Teknologi dan Pendidikan Tinggi Politeknik Negeri Manado 2016
TUJUAN PEMBELAJARAN
1.
Mengenalkan pada mahasiswa tentang konsep streaming dalam Linux
2.
Mahasiswa memahami konsep streaming (nginx, rtmp, ffmpeg) yang ada dalam linux
3.
Mahasiswa mampu melakukan konfigurasi dan analisa terhadap konsep streaming (nginx, rtmp, ffmpeg) yang ada dalam linux.
DASAR TEORI
Streaming
Di zaman yang sudah maju ini, kita sering kali mendengarkan kata streaming, yang terlintas di benak kita adalah sebuah website yang sangat populer, yang memungkingkan penggunanya untuk mengunggah video secara gratis, website yang tidak lain dan tidak bukan adalah YouTube (www.youtube.com). (www.youtube.com). Biasanya ketika sebuah internet service provider menawarkan produk paket internetnya terdapat “streaming no buffering”. Ketika Keti ka kita membuka sebuah video melalui internet tanpa kita harus mendownload-nya., langsung diputar pada web yang menyediakan video tersebut, itulah yang dinamakan streaming. Kita melakukan request terhadap web penyedia video dan kemudian web penyedia penyedia video tersebut melakukan request dengan server, dimana tempat video tersebut berada. Hal ini biasanya bergantung pada cepat lambatnya koneksi yang kita pakai. Semakin cepat koneksinya maka akan semakin cepat pula kita membuka video tersebut. Sebaliknya, jika koneksi kita lambat maka proses jalannya video yang yang akan diputar diputar akan lambat juga. Di sisi lain, server penyedia penyedia layanan video streaming tersebut harus memiliki kualitas yang rellable agar mampu menyokong beban request user secara bersamaan.
Gambar 1.1 Diagram Proses Streaming Berjalan Tahukah Anda mengenai server yang digunakan untuk layanan video streaming?
TUJUAN PEMBELAJARAN
1.
Mengenalkan pada mahasiswa tentang konsep streaming dalam Linux
2.
Mahasiswa memahami konsep streaming (nginx, rtmp, ffmpeg) yang ada dalam linux
3.
Mahasiswa mampu melakukan konfigurasi dan analisa terhadap konsep streaming (nginx, rtmp, ffmpeg) yang ada dalam linux.
DASAR TEORI
Streaming
Di zaman yang sudah maju ini, kita sering kali mendengarkan kata streaming, yang terlintas di benak kita adalah sebuah website yang sangat populer, yang memungkingkan penggunanya untuk mengunggah video secara gratis, website yang tidak lain dan tidak bukan adalah YouTube (www.youtube.com). (www.youtube.com). Biasanya ketika sebuah internet service provider menawarkan produk paket internetnya terdapat “streaming no buffering”. Ketika Keti ka kita membuka sebuah video melalui internet tanpa kita harus mendownload-nya., langsung diputar pada web yang menyediakan video tersebut, itulah yang dinamakan streaming. Kita melakukan request terhadap web penyedia video dan kemudian web penyedia penyedia video tersebut melakukan request dengan server, dimana tempat video tersebut berada. Hal ini biasanya bergantung pada cepat lambatnya koneksi yang kita pakai. Semakin cepat koneksinya maka akan semakin cepat pula kita membuka video tersebut. Sebaliknya, jika koneksi kita lambat maka proses jalannya video yang yang akan diputar diputar akan lambat juga. Di sisi lain, server penyedia penyedia layanan video streaming tersebut harus memiliki kualitas yang rellable agar mampu menyokong beban request user secara bersamaan.
Gambar 1.1 Diagram Proses Streaming Berjalan Tahukah Anda mengenai server yang digunakan untuk layanan video streaming?
Terdapat banyak sekali server streaming. Pada tutorial ini akan dijelaskan mengenai cara membangun sebuah server streaming secara gratis menggunakan sistem operasi linux. Berikut merupakan diagram mengenai proses pendistrbusian streaming yang terjadi, bisa digambarkan seperti dibawah ini.
Secara garis besar, alat-alat alat- alat yang dibutuhkan untuk membangun server streaming dengan gratis adalah : 1.
Sistem Operasi Linux (Ubuntu, Debian, dll (Pada tutorial kali ini menggunakan Debian 8 Jessie))
2.
PC Server (Rekomendasi Minimal Dual Core)
3.
PC Client (Linux, Windows, Smarthone)
Protokol Pendistribusian Pada Streaming
Sebelum kita belajar lebih jauh mengenai stremaing, adakalanya mengetahui protokol protokol yang digunakan pada proses pendristibusian streaming. Protokol yang biasa digunakan untuk proses pendistribusian streaming, yaitu :
RTSP (Real Time Streaming Protocol)
RTMP (Real Time Message Protocol)
HLS (HTTP Segmentation)
MMS (Microsoft Media Streaming)
RTP (Real-time Transport Protocol)
Macam-Macam Server Streaming
Selain itu, kita juga perlu tahu mengenal macam-macam server streaming. Server streaming sangat beragam di dunia ini, ada server streaming yang berbayar alias tidak gratis ada juga yang gratis. Biasanya server streaming yang berbayar dibuat oleh perusahan-perusahaan besar. Berikut akan saya ulas beberapa contoh server streaming yang berbayar :
Helix Server Streaming (RealNetwork, RTMP, RTSP, MMS, RTP, HLS)
Flash Media Server (Adobe, RTMP)
Wowza Server Streaming (Wowza, RTMP, RTSP, HLS)
Windows Media Server (Microsoft, MMS)
Untuk Anda yang inign belajar streaming, tidak usah khawatir harus mengeluarkan biaya yang mahal untuk membeli sebuah license, karena kita akan menggunakan yang gratis. Nah berikut adalah macam-macam server yang tidak berbayar alias gratis :
Red 5 Server (RTMP)
Darwin Server Streaming (RTSP dan RTP SDP Ondemand)
VLC
NGINX-RTMP (RMPT dan HLS)
FFMPEG Server (RTSP)
OpenRTSP
Shoutcast/Icecast
Encoder dan Decorder Pada Streaming
Di dalam streaming, kita juga akan mengenal encoder. Apa itu Encoder? Encoder adalah suatu program yang berfungsi untuk mengubah (kompresi) bentuk sinyal decimal menjadi biner. Macam-macam encoder akan saya ulas di bawah ini.
Helix Producer (RTSP, RTP)
VLC (RTSP, RTP UDP)
QT Broadcaster (RTP)
Flash Media Live Encoder (RTMP)
FFMPEG (RTSP, RTP, UDP, RTMP)
Wirecast (RTSP, RTMP)
Windows Media Encoder (MMS)
Kebalikan dari Encoder adalah Decoder. Apa itu Decoder? Decoder adalah suatu program yang berfungsi untuk mengubah (kompresi) bentuk sinyal biner menjadi deci mal. Macam-macam decoder akan saya ulas dibawah ini :
VLC Player
Real Player
Quick Time Player
FFPLAY - FFMPEG
Flash Player
Windows Media Player
Mengenal FFMPEG
Menggunakan FFMPEG Sebagai Aplikasi Encoder Live RTMP Kemampuan dari aplikasi open source tidak dapat diragukan lagi. Salah satunya adalah aplikasi FFMPEG yang dapat digunaan sebagai aplikasi encoder live untuk beberapa server media streaming berbasis RTMP (Real Time Messaging Protocol), sebuah protokol yang digagas dan diajukan penggunaanya oleh Adobe. Sebenarnya masih banyak kemampuan dari FFMPEG ini, namun disini hanya akan diberkan sedikit penjelasan menggunakan FFMPEG sebagai aplikasi encoder Live RTMP.
Saat ini Flash Player telah mampu memutar Codec Video H264 dan audio AAC sehingga pendistribusian yang dilakukan juga dapat menggunakan codec H264/AAC. Sebelum melakukan encode, Anda harus mengetahui kemampuan dari media server apa yang dapat mendistribusikan kedua codec ini. Bila Anda menggunakan aplikasi Red 5 Server yang open source, dukungan hanya tersedia untuk pendistribusian Video H264, sementara dukungan audio AAC tidak tersedia. Jadi, jika Anda ingin pendistribusian melalui Red 5 Server, maka codec yang didistrbiusikan adalah H264/MP3.
Server-server yang sanggup mendistribusikan Codec H264/AAC adalah :
1.
Flash Media Server
2.
Wowza Server
3.
Helix Media Universal Server
Mengenal Nginx-RTMP
Nginx (dibaca engine x) adalah sebuah aplikasi http server yang saat ini mulai banyak digunakan untuk pembuatan webserver, bahkan dengan kemanan yang tinggi telah banyak layanan webserver menggunakan Nginx sebagai aplikasi http servernya. Namun ada yang menarik dari nginx ini yaitu, bahwa nginx dapat dijadikan server media streaming RTMP flash (Andri Johandri)
Sebelum mulai membuat streaming server dengan ffmpeg dan nginx ada yang harus dijelaskan terlebih dahulu, diantaranya :
Bit rate : besar data sebuah file video, audio atau integrasi audio dan video dalam satu detik.
Frame rate : jumlah gambar (frame) sebuah video dalam satu detik.
Bitrate : berpengaruh pada kualitas gambar, yang berbanding lurus dengan jenis codecnya.
Codec : adalah sebuah coding (bahasa pemrograman) yang membentuk sebuah file videomisalnya, pada sebuah video DV PAL, dengan codec Mircosoft DV, bit ratenya 25 Mbps. Saat video tersebut di convert ke codec MPEG 2, hanya membuthkan 6Mbps untuk kualitas yang menyerupai (tidak sama persis) dengan kualitas DV. Karena setiap codec memiliki karakteristik kualitas gambar sendiri-sendiri (tergantung codingnya), maka kita tidak bisa bilang sama persis kualitasnya.
Sementara frame rate pada awalnya tergantung media dan lokasinya, dimana :
Film : 24 fps
PAL : 25 fps, sistem televisi yang digunakan di Eropa dan daerah bekas jajahannya (Indonesia, Australia, dsb)
NTSC : 29, 978 fps, sitem televisi yang digunakan oleh Amerika dan nega konsianya (Jepang, dsb)
Oke kita langsung saja masuk dalam Membuat Server Streaming, alat yang diperlukan untuk kita membuat server streaming :
VMware Workstation / Oracle Virtual Box
Linux Debian 8
Koneksi Internet
Pertama-tama kita install dahulu Debian 8 Jessie di VMware dengan mengikuti petunjuk gambar dibawah ini : 1.
Buka VMware, lalu klik New Virtual Machine ....
2.
Lalu klik Next >
3. Setelah itu pilih kaset installasi Debian 8 dengan cara menekan tombol Browse .. >>lalu klik Next >
4. Lalu beri nama Virtual Machine dan klik Next >
5. Lalu biarkan secara default dan klik Next >
6. Lalu Klik Finish, sampai disini kita telah berhasil membuat virtual Machine untuk Debian 8, dan selanjutnya tinggal tahap dalam penginstallan di dalam Linux Debian 8
7. Power on debian tadi yang telah di install >> Pilih Install lalu Enter
8. Pilih bahasa biarkan saja secara default (English) lalu tekan Enter
9. Biarkan saja secara default lalu Enter
10. Masukkan Hostname lalu Enter
11. Biarkan saja kosong lalu Enter
12. Masukkan password lalu tekan Enter
13. Masukkan password sekali lagi lalu tekan Enter
14. Masukkan nama lalu tekan Enter
15. Masukan username lalu tekan Enter
16. Masukkan password user lalu tekan Enter
17. Masukkan password sekali lagi lalu tekan Enter
18. Pilih yang paling atas lalu tekan Enter
19. Tekan Enter
20. Pilih opsi paling atas lalu tekan Enter
21. Pilih opsi paling bawah lalu tekan Enter
22. Pilih opsi Yes lalu tekan Enter
23. Pilih No lalu tekan Enter
24. Pilih No lalu tekan Enter
25. Biarkan secara default lalu tekan Enter
26.Pilih Opsi Yes lalu tekan Enter dan tunggu hingga proses selesai
27. Instalasi telah selesai
28. Tampilan awal debian yang telah kita install
29. Masukkan Password >> lalu tekan Unlock / Enter
30. Pilih menu Activities lalu Klik
31. Search kata kunci “terminal” lalu Klik
33. Masuk root (superuser)dengan cara mengetikkan perintah su dan masukkan Password
Nah disinilah kita akan mengonfigurasi hingga selesai (pastikan Virtual machine debian terkoneksi dengan internet)
34. Hal yang pertama kita lakukan ialah menginstall Nginx dan Modul Nginx-RTMP yaitu dengan cara update terlebih dahulu :
apt-get update
35. Install dependencies yang diperlukan
apt-get install build-essential libprece3 libpcre3-dev libssldev
36. sekarang kita download Nginx dan Module Nginx-RTMP nya
Wget http://nginx.org/download/nginx-1.4.2.tar.gz Wget https://github.com/arut/nginx-rtmpmodule/archive/master.zip
37. Jika sudah selesai mendownloadnya, extract file nya :
Tar -zxvf nginx-1.4.2.tar.gz Unzip master.zip
Sekarang kita compile Nginx nya secara manual
./configure --add-module=../nginx-rtmp-module-master Make Make install
38.
Jika
telah
selesai
mencompile,
sekarang
kita
edit
nginx.conf
/usr/local/nginx/conf/nginx.conf) sesuaikan saja dengan configurasi dibawah ini :
#user nobody; worker_processes 1; error_log logs/error.log debug;
events { worker_connections 1024; }
http { include
mime.types;
default_type application/octet-stream;
sendfile
on;
keepalive_timeout 65;
server { listen
8080;
server_name
localhost;
# sample handlers # location /on play {
sendfile
on;
keepalive_timeout 65;
server {
(nano
listen
8080;
server_name
localhost;
# sample handlers # location /on_play { # if ($arg_pageUrl ~* localhost) { #
return 201;
#
}
#
return 202;
# } # location /on_publish { #
return 201;
# }
# location /vod { # alias /var/myvideos; # }
# rtmp stat location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { # you can move stat.xsl to a different location root /usr/build/nginx-rtmp-module; }
# rtmp control location /control { rtmp_control all; }
error_page 500 502 503 504 /50x.html; location = /50x.html {
root
html;
} } }
rtmp { server { listen 1935; ping 30s; notify_method get;
application live { live on;
# sample play/publish handlers # on_play http://localhost:8080/on_play; # on_publish http://localhost:8080/on_publish;
# sample recorder # recorder rec1 { #
record all;
#
record_interval 30s;
#
record_path /tmp;
#
record_unique on;
# }
# sample HLS # hls on; # hls_path /tmp/hls; # hls_sync 100ms; }
# Video on demand # application vod {
#
play /var/Videos;
# }
# Video on demand over HTTP # application vod_http { #
play http://localhost:8080/vod/;
# } } }
39. Setelah itu, kita jalankan Nginx
/usr/local/nginx/sbin/nginx
40. Cek Port Nginx dan Nginx-RTMP apabila Port 80 dan 1935 sudah ada, berarti Nginx anda sudah berhasil diinstal.
41. Sekarang kita install Ffmpeg, kita buat dulu folder compile alikasi FFMPEG
mkdir ~/folderffmpeg
42. Sekarang, kita Compile library Audio Video ( AV) yang dibutuhkan untuk FFMpeg, disini lumayan banyak, jadi harap bersabar dalam mencompile librarynya masing-masing.
YASM LIBRARY :
cd ~/folderffmpeg wget http://www.tortall.net/projects/yasm/releases/yasm1.2.0.tar.gz tar xzvf yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure make sudo make install sudo make distclean
LIBX264 UNTUK VIDEO CODEC H264 :
cd ~/folderffmpeg wget http://download.videolan.org/pub/x264/snapshots/last_x264 .tar.bz2 tar xjvf last_x264.tar.bz2 cd x264-snapshot* ./configure --enable-static make sudo make install sudo make distclean
LIBFDK-AAC UNTUK CODEC AUDIO AAC :
cd ~/folder ffmpeg wget -O fdk-aac.zip https://github.com/mstorsjo/fdkaac/zipball/master unzip fdk-aac.zip cd mstorsjo-fdk-aac* autoreconf -flv ./configure --disable-shared make sudo make install sudo make distclean
LIBMP3LAME UNTUK CODEC AUDIO MP3 :
sudo apt-get install nasm cd ~/folderffmpeg wget http://download.sourceforge.net/project/lame/lame/3.99/la me-3.99.5.tar.gz tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5 ./configure --enable-nasm --disable-shared make sudo make install sudo make distclean
LIBOPUS UNTUK CODEC AUDIO OPUS :
cd ~/folderffmpeg wget http://downloads.xiph.org/releases/opus/opus1.1.tar.gz tar xzvf opus-1.1.tar.gz cd opus-1.1 ./configure --disable-shared make sudo make install sudo make distclean
LIBVPX UNTUK CODEC VIDEO WEBM (VP8/VP9) :
cd ~/folder/ffmpeg wget http://webm.googlecode.com/files/libvpxv1.3.0.tar.bz2 tar xjvf libvpx-v1.3.0.tar.bz2 cd libvpx-v1.3.0 ./configure --disable-examples make sudo make install sudo make clean
COMPILE FFMPEG :
cd ~/folderffmpeg wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2 cd ffmpeg ./configure --extra- libs=”-ld;” --enable-gpl --enablelibass --enable-libfdk-aac --enable-libfreetype --enablelibmp3lame --enable-libopus --enable-libtheora --enablelibvorbis --enable-libvpx --enable-libx264 --enablenonfree --enable-x11grab make sudo make install sudo make distclean hash -r
43. Selesai sudah kita mengompile FFMPEG, yang begitu banyak library yang harus kita compile. Jika tidak ada error, maka kita sudah bisa menjalankan Live Streaming, baik melalui Client linux, windows, ataupun Android. 44. Untuk pengujian, buatlah folder /var/live kenapa difolder tersebut? Karena kita akan melakukan streaming live dengan inputan video, jadi kita masukkan video ke dalam folder tersebut. Untuk membuat folder, lakukan perintah berikut :
mkdir /var/live 45. Lalu masukkan video kedalam folder live, disini saya memasukan video dengan format. .mp4 ke dalam /var/live. Setelah video kita masukan, maka sekarang kita lakukan streaming menggunakan FFMPEG
ffmpeg -re -i /var/live/serena.mp4 -c copy -f flv rtmp://localhost/live/mystream *NB serena.mp4 adalah nama video yang dalam direktori saya.
46. Sekarang kita buka l root terminal lagi dan jalankan menggunakan FFPLAY
ffplay rtmp://localhost/live/mystream Maka akan muncul seperti ini :
47. Lalu kita uji dari client debian, dengan membuat kloning debian tadi dan kita memutar video dari client tersebut dengan cara :
ffplay rtmp://192.168.148.144/live/mystream *NB 192.168.148.144 (ip server)
48. Lalu kita akan mengujinya dengan Client Windows pertama-tama pastikan debian telah terconect dengan windows, caranya yaitu dengan mengecek ping server debian dari command prompt windows seperti gambar dibawah ini :
49. Jika ada balasan seperti gambar diatas berarti debian anda telah terkoneksi dengan client windows, dan sekarang tinggal kita play dengan menggunakan aplikasi VLC Media Player 50. Buka VLC Media Player yang ada di Windows >> Media >> Open Network Stream lalu masukkan rtmp://192.168.148.144/live/mystream
51. Lalu klik Play
Sampai disini Pengujian Streaming 2 client (Linux dan Windows) telah Selesai.
Live Streaming Dengan Menggunakan Aplikasi Android “ArutCam” 1. Download ArutCam di PlayStore / Google Play
2. Pastikan hp android anda terconnect dengan server debian.
3. Setelah itu buka Server Debian anda di VMware lalu ketikkan perintah berikut :
ffplay rtmp://192.168.148.144/live/mystream
4. Lalu akan muncul seperti gambar dibawah ini :
5. Selanjutnya buka aplikasi “Arutcam” di android lalu pilih Settings >> Common >> Output Url isikan rtmp://192.168.148.144/live/mystream 6. Lalu back >> Video >> Centang Enabled >> Size pilih 640x480 >> Bit Rate pilih 512k dan Frame rate biarkan secara default 7. Lalu kembali ke Arutcam dan tekan publish
8. Dan pada server akan muncul gambar seperti berikut :
Demikian tutorial sederharana mengenai streaming dengan linux. Semoga bermanfaat!