Fredy H. Manurung
13024139
6. Teknik Informatika . 1
TUJUAN PEMBELAJARAN
1.
2.
Mahasiswa memahami konsep streaming (nginx, rtmp, ffmpeg) yang ada dalam linux
3.
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.
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.
3.
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)
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
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
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.
1.
2.
Wowza Server
3.
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 :
Linux Debian 8
Koneksi Internet
Pertama-tama kita install dahulu Debian 8 Jessie di VMware dengan mengikuti petunjuk
gambar dibawah ini :
1.
2.
3. Setelah itu pilih kaset installasi Debian 8 dengan cara menekan tombol Browse .. >>lalu 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
26.Pilih Opsi Yes lalu tekan Enter dan tunggu hingga proses selesai
33. Masuk root (superuser)dengan cara mengetikkan perintah su dan masukkan Password
34. Hal yang pertama kita lakukan ialah menginstall Nginx dan Modul Nginx-RTMP yaitu
dengan cara update terlebih dahulu :
apt-get update
38.
Jika
telah
selesai
mencompile,
sekarang
kita
edit
nginx.conf
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/;
# }
}
}
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
cd lame-3.99.5
./configure --enable-nasm --disable-shared
make
sudo make install
sudo make distclean
COMPILE FFMPEG :
cd ~/folderffmpeg
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
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
Sampai disini Pengujian Streaming 2 client (Linux dan Windows) telah Selesai.
3. Setelah itu buka Server Debian anda di VMware lalu ketikkan perintah berikut :
ffplay rtmp://192.168.148.144/live/mystream
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
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