Streaming dengan STREAMING SERVER NGINX dan CDN 3rd party.
Kofigurasi:
Case 1: Encoder (ffmpeg) ---- rtmp push ---- NGINX ---- rtmp --- jwplayer
Case 2: Encoder (ffmpeg) ---- rtmp push ---- NGINX ---- rtmp push --- CDN ---- rtmp ---- jwplayer
Case 1:
aa. FFMPEG streaming file as live streaming
ffmpeg -re -i https://s3-us-west-1.amazonaws.com/tfcvideos/rockfall.mov -vcodec libx264 -preset veryfast -maxrate 1500k -c:a aac -b:a 128k -ac 2 -ar 44100 -f flv rtmp://3.3.3.3:1935/live/livestream
bb. Setting RTMP streaming-server menggunakan NGINX
Misal IP Server NGINX adalah 3.3.3.3
Pada nginx.conf tambahkan:
rtmp {
server {
listen 1935;
chunk size: 8192;
application live {
live on;
allow publish all;
allow play all;
record all;
record_path /home/video_recordings;
}
}
}
cc. Setting html untuk jwplayer
file index.html
<html>
<head>
<script type="text/javastrict" src="jwplayer.js"></sript>
</head>
<body>
<div id="meElement"> loading player.....</div>
<script type=test/javascript">
jwplayer("myElement").setup({
file: "rtmp//3.3.3.3:1935/live/livestream",
height:720,
width:1280
});
</script>
</body>
</html>
Case 2:
aa. FFMPEG streaming file as live streaming
ffmpeg -re -i https://s3-us-west-1.amazonaws.com/tfcvideos/rockfall.mov -vcodec libx264 -preset veryfast -maxrate 1500k -c:a aac -b:a 128k -ac 2 -ar 44100 -f flv rtmp://3.3.3.3:1935/live/livestream
bb. NGINX sebagai RTMP Push dan Pull server
Ciri RTMP Pull server adalah ada port TCP yang listen biasanya 1935.
Apabila stream yann diterima ingin di kirim ke CDN Server, misalkan provider CDN nya adalah Twitch maka settingganya dijelaskan spt di bawah ini.
Pertama-tama tentu ambil paket langganan dari Twitch dulu, setelah itu akan mendapatkan URL untuk nantinya Encoder pusth RTMP ke ingest server Twitch. Dalam case ini URL yang didapat adalah: rtmp://live-jfk.twicth.tv/app/<stream-key>
rtmp {
server {
listen 1935;
chunk size: 8192;
application live {
live on;
allow publish all;
allow play all;
record all;
record_path /home/video_recordings;
push rtmp://live-jfk.twicth.tv/app/<stream-key>
}
}
}
dalam case diatas ffmpeg kirim stream ke NGINX, lalu NGINX push RTMP ke Ingest Server Twitch.
cc. Setting jwplayer
file index.html
<html>
<head>
<script type="text/javastrict" src="jwplayer.js"></sript>
</head>
<body>
<div id="meElement"> loading player.....</div>
<script type=test/javascript">
jwplayer("myElement").setup({
file: "rtmp//CDNServer:1935/live/<streamkey>",
height:720,
width:1280
});
</script>
</body>
</html>
CATATAN: sayangnya banyak player CDN ke depan akan stop support RTMP dengan berbagai alasan, antara lain (i) RTMP protokol yang sudah kuno, (ii) tidak di support oleh iOS (Apple), (iii) sering terkendala dengan firewall karena tidak menggunakan port 80, baca disini.
Referensi:
https://www.youtube.com/watch?v=n-83P2InwhU&list=WL&index=22
https://www.youtube.com/watch?v=IeAMsyyGja8
https://www.youtube.com/watch?v=eg69VD2VUo8&index=2&list=PLbr4egwqAlwB4vEbSwFuo0-FcSWnTtbI7
No comments:
Post a Comment