Kupas Tuntas Cara Membuat Live Streaming Linux NGINX - RTMP dan FFMPEG

Kupas Tuntas Cara Membuat Live Streaming Linux NGINX - RTMP dan FFMPEG

Cara Membuat Live Streaming Linux NGINX - RTMP dan FFMPEG
Engine X

Assalammualaikum,wr,wb.
Segala puji bagi allah tuhan semesta alam, yang memberikan saya kesempatan untuk membuat artikel ini, dan tidak lupa pula salawat beriring salam, kepada baginda Muhammad SAW, yang membawa rahmat bagi seluruh semesta alam.

Baiklah, saya akan memberikan sedikit Tutorial bagaimana membuat sebuah Server Streaming Menggunakan Nginx-RTMP dan FFmpeg. seperti yang kita ketahui, mungkin banyak server streaming dengan menggunakan Metode lain, dan Menggunakan Cara Lain,semoga cara yang saya lakukan ini, dapat memudahkan anda dalam membuat Streaming Server menggunakan Nginx-Rtmp, sebelum kita membahas lebih jauh, kita harus tau dulu Apa itu Streaming, Nginx-Rtmp, Ffmpeg.

Apa Itu Streaming ?

Di zaman yang sudah maju ini, kita sering kali mendengarkan kata streaming. Pasti di pikiran kita tertuju pada sebuah website yang sangat popular , yaitu youtube. Biasanya ketika sebuah internet service provider menawarkan produk paket internetnya terdapat “streaming no buffering”. Ketika kita membuka sebuah video melalui internet tanpa kita harus mendownloadnya, langsung diputar pada web yang menyediakan video tersebut, itulah yang dinamakan Streaming. Kita melalukan request terhadap web penyedia video dan kemudian web penyedia video tersebut melalukan request dengan server, dimana tempat video tersebut berada.  Sumber: Buku Hacking Streaming

Apa itu Nginx-RTMP ?

Nginx ( dibaca engine x ) adalah sebuah aplikasi http server yang saat ini mulai banyak digunakan untuk pembuatan webserver, bahkan dengan keamanan yang tinggi telah banyak layanan webserver menggunakan Nginx sebagai aplikasi http server nya. Namun ada yang menarik dari nginx ini yaitu, bahwa nginx ini dapat dijadikan server media streaming RTMP flash (Andri johandri)  .

Apa Itu FFmpeg ?

FFmpeg adalah program komputer yang dapat merekam, mengkonversikan dan streaming audio dan video digital dalam berbagai format. FFmpeg merupakan aplikasi command line yang terdiri dari kumpulan pustaka perangkat lunak bebas / open source. Termasuk libavcodec, library untuk audio codec / video codec yang digunakan oleh beberapa proyek lain, dan libavformat, library untuk audio / video mux kontainer dan demux container.  

Alat yang diperlukan untuk Membuat Server Streaming: 
  • Sistem Operasi Linux (Ubuntu/Debian/Raspbian)
  • Raspberry Pi
  • Kamera SLR / Smartphone
  • Access Point
  • 1 Unit Server (Ubuntu/Debian/Raspbian) 
Baiklah langsung saja kita ikuti langkah-langkah berikut ini:

Hal yang pertama kita lakukan adalah, menginstal Nginx dan Modul Nginx-RTMP
Buka Terminal Linux Anda (Ctrl+Alt+T)
 Lakukan Update pada linux kita
apt-get update
 Install depedencies yang diperlukan
apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
 sekarang kita dwonload Nginx dan Module Nginx-RTMP nya
wget http://nginx.org/download/nginx-1.4.2.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
 jika sudah selesai download, Extract File nya
tar -zxvf nginx-1.4.2.tar.gz
unzip master.zip
 setelah itu masuk kedirekori Nginx
cd nginx-1.4.2
 Sekarang kita Compile Nginx nya secara manual
./configure --add-module=../nginx-rtmp-module-master
make
make install
 jika sudah selesai dicompile, sekarang kita edit nginx.conf,  sesuaikan saja dengan yang ini, atau Copy Paste aja. nano /usr/local/nginx/conf/nginx.conf
#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 {
        #    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/;
        #}
    }
}
Setelah disamakan, kita jalankan Nginx
/usr/local/nginx/sbin/nginx
Cek Port Nginx dan Nginx-RTMP apabila Port 80 dan 1935 sudah ada, berarti Nginx anda sudah berhasil diinstal.

Sekarang kita Install FFmpeg

Kita buat dulu folder compile aplikasi FFMPEG.
mkdir ~/folderffmpeg
Sekarang, kita Compile library Audio Video (AV) yang dibutuhkan untuk FFMpeg, disini lumayan Banyak, jadi harap sabar dalam mengcompile library nya masing-masing.
YASM LIBRARY
 
cd ~/folderffmpeg
wget http://www.tortall.net/projects/yasm/releases/yasm-1.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 ~/folderffmpeg
wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master unzip fdk-aac.zip 
cd mstorsjo-fdk-aac* 
autoreconf -fiv 
./configure --disable-shared 
make 
sudo make install 
sudo make distclean
LIBMP3LAME UNTUK CODEC AUDIO MP3
sudo apt-get install nasm
cd ~/folderffmpeg  
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-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/opus-1.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 ~/folderffmpeg 
wget http://webm.googlecode.com/files/libvpx-v1.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="-ldl" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab 
make 
sudo make install 
sudo make distclean 
hash -r 
Selesai sudah kita mengcompile FFmpeg, yang begitu banyak Library yang harus kita compile. jika tidak ada error, maka kita sudah bisa menjalankan Live Streaming mau dari Smartphone (Android/Ios) atau PC. 

Untuk pengetesan, buatlah folder /var/live, kenapa di folder tersebut ? karena kita akan melakukan streaming live dengan inputan video, jadi kita masukan video ke dalam folder tersebut. untuk membuat folder, lakukan perintah berikut:

mkdir /var/live
masukan video kedalam folder live disini, saya memasukan video dengan format .mp4 ke dalam folder /var/live/

setelah video kita masukan, maka sekarang kita lakukan streaming menggunakan Ffmpeg

ffmpeg -re -i /var/live/tes.mp4 -c copy -f flv rtmp://localhost/live/mystream
sekarang kita jalankan menggunakan Ffplay

ffplay rtmp://localhost/live/mystream
maka akan muncul seperti ini:

Cara Membuat Live Streaming Linux NGINX - RTMP dan FFMPEG
Live Streaming Dengan Input Video

Selesai, Semoga Bermanfaat..

Thanks to:

Om Jo (Andri johandri) 
Babe Onno (Onno W Purbo)

0 Response to "Kupas Tuntas Cara Membuat Live Streaming Linux NGINX - RTMP dan FFMPEG"