Anda di halaman 1dari 34

Laporan Praktikum

Keamanan Jaringan Komputer


Streaming Linux Dengan Menggunakan NGINX,
RTMP dan 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). Biasanya ketika
sebuah internet service provider menawarkan produk paket internetnya terdapat
streaming no buffering. Ketika 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 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 akan diputar akan lambat juga. Di sisi lain, server 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 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 protokolprotokol 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 decimal.
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!

Daftar Pustaka
[1] M. Rizal. Streaming Dengan FFMPEG dan NGINX. 17 Juni 2015.
http://rizalubuntu.blogspot.co.id/2015/06/streaming-dengan-ffmpeg-dan-nginx.html
[2] Jobs Team Project. Kupas Tuntas cara Membuat Live Streaming Linux NGINX - RTMP
dan FFMPEG
http://www.jobstreamproject.org/2015/10/kupas-tuntas-cara-membuat-live.html

Anda mungkin juga menyukai