ubuntu 及 nginx 的安裝設定,請參考 https://mahaljsp.ddns.net/nginx/
RTMP設定
開啟 /etc/nginx/nginx.conf,新增藍色部份設定
events {
use epoll;
worker_connections 768;
# multi_accept on;
}
http{
client_max_body_size 20m;手動加入此段, 防止資料太大無法上傳
}
rtmp {
server {
listen 1935;
application live {
live on;
hls on;
wait_key on;
hls_path /data/video/live;
hls_fragment 1000ms;
hls_playlist_length 5000ms;
hls_continuous on;
hls_cleanup on;
hls_nested on;
allow publish all;
allow play all;
record all ;
record_path /data/video/record;
record_max_size 1000m;
record_suffix -%Y-%m-%d-%H.%M.%S.ts;
record_unique on;
}
}
}
/data/video/live 是直播影片的目錄,/data/video/record 是儲存影片的目錄。RTMP 預設是使用 1935 port,所以請記得 ip 分享器的 1935 需指向伺服器的 ip。
直播的內容是存放在 /data/video/live 目錄中,上述為了降低延遲,刻意把 hsl_fragment 設為 1000ms,也就是 1 秒的影片存成一個檔,然後保留 5 秒的內容。為了不要讓硬碟頻繁的運作,且此目錄也不需太大的空間,建議把 /data/video/live 放在 ramdisk 中。要改成 radmisk 其實很簡單,只要在 /etc/fstab 新增如下設定即可,設定好記得重新開機。
tmpfs /data/video/live tmpfs size=2G 0 0
靜態伺服器
連線到 RTMP 伺服器的網址如下 rtmp://ip/live,其中的 “/live” 是屬於靜態伺服器,指向 /data/video/live 目錄。請開啟 /etc/nginx/sites-available/default,新增如下藍色設定。
server{ listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/letsencrypt/live/mahaljsp.ddns.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mahaljsp.ddns.net/privkey.pem; server_name mahaljsp.ddns.net; root /server/wordpress; index index.php index.html; add_header X-Frame-Options SAMEORIGIN; location ~* \.(ico|css|js|gif|jpe?g|png|ogg|ogv|svg|svgz|eot|otf|woff)(\?.+)?$ { expires max; log_not_found off; } location / { try_files $uri $uri/ /index.php?$args; } location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location /live { alias /data/video/live; } location /record { alias /data/video/record; }
}
重啟Nginx
請執行如下指令
sudo systemctl restart nginx