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
sao ko thấy phần hướng dẫn cài đặt Kurento vậy bác
Trả lờiXóaCopy 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