Hướng dẫn cài đặt Streaming server Media với Nginx và nginx-rtmp module trên centos 7
RTMP (Real Time Messaging Protocol) là giao thức không công khai do Adobe phát triển và giữ bản quyền, được thiết kế cho ứng dụng thời gian thực, cho phép ứng dụng sử dùng video hay còn gọi streaming media và âm thanh với tốc độ nhanh, hạn chế bị giật hình hoặc méo tiếng.
Mô hình triển khai Streaming
Ngày nay, Công nghệ streaming video online không còn là chuyện xa lạ nữa, mà phổ biến đến từng ngõ ngách của xã hội và đặc biệt mạng xã hội như google, youtube, facebook,…và các kênh live stream bóng đá, truyền hình số,…rất nhiều.
Tạo một thư mục chứ các file download về
Ta giải nén chúng ra

Truy cập vào thư mục nginx vừa giải nén được
Chạy lênh sau để thêm module Nginx-RTMP
Cài đặt bằng lệnh sau
Sau khi cài đặt xong khi bạn chạy lệnh
Để sửa lỗi này chúng ta phải cấu hình Nginx init script
Thêm nginx ‘user’
Tạo 1 file nginx trong init.d
Chép nội dung sau vào
Phân quyền thực thi cho tập tin nginx
Ta chạy lại lệnh
Để nginx khởi động cùng hệ thống
Cài đặt kho Nux Dextop trên centos 7 với lệnh rpm như sau :
Theo tác giả, Nux Dextop được biết là gây xung đột với các hợp đồng mua RPM của bên thứ ba khác như Repoforge và ATrpms . Vì vậy, nếu bạn kích hoạt bất cứ Repos bên thứ ba nào khác hơn EPEL ,thì nên tắt kho Nux Dextop theo mạc định
Tìm dòng
Thay số 1 thành số 0
Sau đó, bất cứ khi nào bạn muốn cài đặt một gói phần mềm từ Nux Dextop repo, cho phép một cách rõ ràng repo như sau.
Chạy lệnh sau để cài đặt ffmpeg
4.Cấu hình Nginx-RTMP và FFmpeg
Mở file cấu hình của ngix
Thêm nội dung sau vào
Khởi động lại dịch vụ nginx
# service nginx restart
Theo maxserver

Streaming server là gì?
Streaming server là nơi Livestream hay streaming video để lưu trữ và truyền tải nội dung video đến người dùng, nó được ứng dụng phổ biên nhất vào bán hàng online trên các nền tảng thương mại điện tử TMDT Nhưng để có được một hệ thống phục vụ live straeming không phải chuyện dễ dàng. Bạn phải đầu tư hạ tấng máy chủ, phổ biến nhất hiện nay là công nghệ cloud server hay thuê cloud server với băng thông ổn định tốc độ cao, ổ cứng phải dụng SSD nhanh nhất, kèm với đó là chi phí cao. Sau đâu mình sẽ hướng dẫn các bạn về cách cài đặt RTMP với nginxI.Chuẩn bị
Cần có 1 vps hay máy chủ ảo .Link thuê vps SSD giá rẻ nhất tại https://cloudviet.com.vn/ Mở port 80
1 2 |
# firewall-cmd --permanent --zone=public --add-port=80/tcp # firewall-cmd --reload |

II.Tiến hành
1.Cài đặt một số công cụ cần thiết
1 2 |
# yum install unzip -y # yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel git |
1 2 |
# mkdir /download # cd /download/ |

2.Cài đặt Nginx và Nginx-RTMP
Ta download các code nginx và nginx-RTMP về
1 2 |
# wget https://github.com/arut/nginx-rtmp-module/archive/master.zip # wget http://nginx.org/download/nginx-1.9.8.tar.gz |

1 2 |
# tar -xvf nginx-1.9.8.tar.gz # unzip master.zip |


1 |
# cd nginx-1.9.8 |
1 |
# ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master |
1 2 |
# make # make install |

1 |
# service nginx restart |
nó sẽ xuất hiện lỗi như sau
1 |
[root@Nginx-RTMP]# service nginx restart |
1 2 |
Redirecting to /bin/systemctl restart nginx.service Failed to restart nginx.service: Unit nginx.service failed to load: No such file or directory. |
1 |
# useradd -r nginx |
1 |
# vi /etc/init.d/nginx |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
#!/bin/sh # # nginx - this script starts and stops the nginx daemin # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /usr/local/nginx/conf/nginx.conf # pidfile: /usr/local/nginx/logs/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" lockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac |

1 |
# chmod +x /etc/init.d/nginx |
1 |
# service nginx restart |
1 2 3 |
[root@Nginx-RTMP]# service nginx restart Reloading systemd: [ OK ] Restarting nginx (via systemctl): [ OK ] |
1 |
# chkconfig nginx on |
3.Cài đặt FFmpeg
Nux Dextop là một kho lưu trữ RPM của bên thứ ba Là bước đầu tiên, nhập khóa GPG chính thức của kho Nux Dextop:
1 |
# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro |
1 |
# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm |
1 |
# vi /etc/yum.repos.d/nux-dextop.repo |
1 |
enabled = 1 |
1 |
enabled = 0 |
1 |
# yum --enablerepo=nux-dextop install tên package |
1 |
# yum --enablerepo=nux-dextop install ffmpeg |
1 |
# vi /usr/local/nginx/conf/nginx.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
} rtmp { server { listen 1935; chunk_size 4096; application live { live on; record off; exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name; } application live360p { live on; record off; } } } |