Hướng dẫn live Stream sử dụng Nginx-RTMP và KURENTO

1. Cài đặt Nginx và Nginx-RTMP

– Cài đặt các gói thư viện cần thiết để biên dịch Nginx và Nginx-RTMP từ source
yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel
– Thư mục chứa source code mặc định là /usr/local/src
cd /usr/local/src
– Tải về mã nguồn Nginx và Nginx-RTMP
wget http://nginx.org/download/nginx-1.10.1.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
– Giải nén mã nguồn vừa tải về
tar zxf nginx-1.10.1.tar.gz
unzip master
– Chuyển vào thư mục chứa mã nguồn Nginx và tiến hành biên dịch
cd nginx-1.10.1
– Tạo Makefile để Nginx sẽ được biên dịch với module Nginx-RTMP
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
– Tiến hành biên dịch và cài đặt
make
make install
– Tạo Nginx init scripts
wget https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/# -O /etc/init.d/nginx
chmod +x /etc/init.d/nginx
– Khởi động Nginx
service nginx start

2. Cài đặt FFmpeg

– Tạo file repo /etc/yum.repos.d/dag.repo
vi /etc/yum.repos.d/dag.repo
– Thêm nội dung sau vào file sau đó lưu lại
[dag]

name=DAG RPM Repository

baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag

gpgcheck=1

enabled=1
– Để sử dụng DAG repository với công cụ yum, cần phải thêm DAG’s GPG key. Sử dụng lệnh sau để thêm GPG key cho DAG.
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
– Cài đặt FFmpeg
yum install ffmpeg ffmpeg-devel ffmpeg-libpostproc

3. Cấu hình Nginx-RTMP, FFmpeg và HLS

– Tạo các thư mục để chứa dữ liệu streaming và recording.
mkdir /home/HLS

mkdir /home/HLS/live              # Chứa dữ liệu HLS streaming cho desktop

mkdir /home/HLS/mobile            # Chứa dữ liệu HLS streaming cho mobile

mkdir /home/video_recordings      # Chứa video ghi hình
– Mở port trên firewall cho Nginx và RTMP
+ Mở file cấu hình iptables
vi /etc/sysconfig/iptables
+ Thêm nội dung sau vào file:
-A INPUT M state --state NEW m TCP P dport 80 J ACCEPT

-A INPUT M state --state NEW m TCP P dport 1935 J ACCEPT
+ Lưu lại. Dùng lệnh sau để nạp lại rule
service iptables save

3.1 Cấu hình Streaming Video

– Mở file cấu hình Nginx
vi /usr/local/nginx/conf/nginx.conf
– Thêm vào nội dung sau:
rtmp {

server {

listen 1935;                            # Port để Nginx chấp nhận kết nối RTMP

chunk_size 4096;                        # Kích thước chunk tối đa để ghép kênh stream

allow play all;

# Tạo một luồng HLS streaming là “live” dành cho desktop

application live {

allow play all;                         # Cho phép khách xem video

live on;                                # Bật luồng streaming “live”

record all;                             # Bật ghi hình video và audio streaming

record_path /home/video_recordings;     # Thư mục chứa các file ghi hình flv

record_unique on;   # Khi bật chế độ này sẽ thêm thời gian vào tên các file ghi hình

hls on;                                 # Bật HLS

hls_nested on;                          # Bật chế độ nested. Ở chế độ này một thư mục con sẽ được tạo ra cho mỗi luồng stream. Các HLS playlist và fragment sẽ được tạo ra trong thư mục con đó

hls_path /home/HLS/live;                # Thiết lập thư mục chứa HLS playlist và fragment

hls_fragment 10s                        # Thiết lập chiều dài HLS fragment

}

# Tạo một luồng HLS streaming là "mobile" dành cho mobile 

application mobile {

allow play all;                        # Cho phép chơi video

live on;                               # Bật chế độ live

hls on;                                # Bật chế độ HLS

hls_nested on;                      

hls_path /home/HLS/mobile;

hls_fragment 10s;

}

# Cho phép xem lại các video live streams đã được ghi hình bằng URL: rtmp:// 61.14.232.64:1935/vod/filename.flv

application vod {

play /home/video_recordings;

}

}

}

server {

listen 80;

server_name 61.14.232.64;

# Tạo một đường dẫn http cho HLS Streaming Video theo URL: "http:// 61.14.232.64/live/123host/index.m3u8"  

location /live {

types {

application/vnd.apple.mpegurl m3u8;

}

alias /home/HLS/live;

add_header Cache-Control no-cache;

}

location /mobile {

types {

application/vnd.apple.mpegurl m3u8;

}

alias /home/HLS/mobile;

add_header Cache-Control no-cache;

}   

location /stats {

stub_status;

}

location / {

root   html;

index  index.html index.htm;

}   

}

}

3.2 Cấu hình Encoding Video

– Mở file cấu hình nginx
vi /etc/nginx/nginx.conf
– Sử dụng module FFmpeg để encoding các live stream video về định dạng .flv và lưu ở thư mục /home/video_recordings. Ta có thể tùy chỉnh các thông số như bitrate video, bitrate audio và độ phân giải.
Định dạng như sau: rtmp://ip-server:port/application-name/stream-name
  • -i: địa chỉ ứng dụng streaming.
  • -b: v bitrate video
  • -c: v bộ mã hóa hình ảnh
  • -s: độ phân giải
  • -f: định dạng xuất
  • -bufsize: kích thước bộ đệm
– Thêm vào nội dung sau:
exec ffmpeg -i rtmp://61.14.232.64:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://61.14.232.64:1935/mobile/$;
– Cuối cùng khởi động lại Nginx
service nginx restart
– Kiểm tra xem nginx và module rtmp chạy chưa
netstat -nltp

Nhận xét

  1. sao ko thấy phần hướng dẫn cài đặt Kurento vậy bác

    Trả lờiXóa
  2. Copy thì ghi rõ nguồn nhé bạn. https://tailieu.123host.vn/kb/vps/huong-dan-cai-dat-nginx-rtmp-streaming.html

    Trả lờiXóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

Module ngx_http_hls_module

Hướng dẫn Config Nginx-RTMP + Adaptive Streams