基础服务
- 安装nginx(下面是包管理器安装,比较推荐源码安装)
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
mac上安装nginx+live
brew tap homebrew/nginx
# 如果被墙了的话也可以用下面的
# brew tap denji/nginx
查看信息,配置文件位置
brew info nginx-full
nginx: [emerg] "rtmp" directive is not allowed here
- 最简配置
* 在`nginx.conf`的http节点下面(也就是文件的尾部)加上rtmp配置,注意不能是别的文件,
rtmp {
server {
listen 1935;
application live {
live on;
record off;
}
}
}
- 重启
reload 可能不起作用,要重启
nginx -s restart
- 最终配置
- nginx推流配置
rtmp {
server {
listen 1935;
application live {
live on;
access_log off;
hls on;
hls_type live;
hls_fragment 3s;
hls_playlist_length 15s;
hls_nested on;
hls_path /Users/mahaiqiang/Downloads/stream;
record all;
record_unique off;
record_interval 5m;
record_suffix .mp4;
record_path /Users/mahaiqiang/Downloads/hls;
}
}
}
- nginx拉流配置
# mahaiqiang @ mahaiqiangdeMacBook-Air in /opt/homebrew/etc/nginx on git:stable o [23:22:48]
$ cat servers/live.conf
server {
listen 80;
server_name localhost;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /Users/mahaiqiang/Downloads/stream;
add_header 'Cache-Control' 'no-cache'; #添加额外的HTTP头
}
}
- 推流测试
ffmpeg -re -i /Users/mahaiqiang/Downloads/iShot.mp4 -vcodec copy -f flv rtmp://localhost:1935/live/room
- 拉流
拉流地址
rtmp://localhost:1935/live/room
使用ffplay测试
ffplay rtmp://127.0.0.1:1935/live/room
- http浏览器拉流地址
http://localhost/hls/room1/index.m3u8
也可以使用VLC媒体播放器测试。
ubuntu20.4上配置nginx+live
跟ubuntn版本肯定是没有区别的,不过我的环境是20.4
sudo apt install libnginx-mod-rtmp
root@im:/etc/nginx# ll modules-enabled/
total 16
drwxr-xr-x 2 root root 4096 Nov 17 21:33 ./
drwxr-xr-x 10 root root 4096 Nov 22 13:41 ../
lrwxrwxrwx 1 root root 61 Aug 25 17:59 50-mod-http-image-filter.conf -> /usr/share/nginx/modules-available/mod-http-image-filter.conf
lrwxrwxrwx 1 root root 60 Aug 25 17:59 50-mod-http-xslt-filter.conf -> /usr/share/nginx/modules-available/mod-http-xslt-filter.conf
lrwxrwxrwx 1 root root 48 Aug 25 17:59 50-mod-mail.conf -> /usr/share/nginx/modules-available/mod-mail.conf
lrwxrwxrwx 1 root root 48 Nov 17 21:33 50-mod-rtmp.conf -> /usr/share/nginx/modules-available/mod-rtmp.conf
lrwxrwxrwx 1 root root 50 Aug 25 17:59 50-mod-stream.conf -> /usr/share/nginx/modules-available/mod-stream.conf
root@im:/etc/nginx# cat /usr/share/nginx/modules-available/mod-rtmp.conf
load_module modules/ngx_rtmp_module.so;
root@im:/etc/nginx#
- 配置
- nginx的rtmp推流配置
rtmp {
server {
listen 1935; #监听的端口号, rtmp协议的默认端口号是1935
application live {
live on;
hls on;
hls_type live;
hls_fragment 3s;
hls_playlist_length 15s;
hls_nested on;
hls_path /opt/software/stream;
record all;
record_unique off;
record_interval 5m;
record_suffix .mp4;
record_path /opt/software/hls;
}
}
}
- nginx的http拉流配置
server {
listen 80;
server_name livestream.3vyd.com;
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /opt/software/stream;
add_header 'Cache-Control' 'no-cache'; #添加额外的HTTP头
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name livestream.3vyd.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m; # about 40000 sessions
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=63072000" always;
set $prefix "";
ssl_certificate hccert/20220520__3vyd.com.pem;
ssl_certificate_key hccert/20220520__3vyd.com.key;
location /hls {
#跨域配置,允许跨域访问
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
add_header 'Access-Control-Allow-Headers' 'Range';
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /opt/software/stream;
add_header 'Cache-Control' 'no-cache'; #添加额外的HTTP头
}
}
- 测试推流
ffmpeg -re -i /opt/software/iShot.mp4 -vcodec copy -f flv rtmp://localhost:1935/live/room1
- 拉流测试
ffplay rtmp://47.104.252.23:1935/live/room1
- http拉流链接
http://livestream.3vyd.com/hls/room1/index.m3u8
# 或者
https://livestream.3vyd.com/hls/room1/index.m3u8