Debian 搭建RTMP/HLS流媒体服务器

最近工作中需要一个直播功能,虽然有很多成熟的解决方案,但是由于好奇斗鱼这样的平台到底是怎么样的,故搜索了很多文章,终于有了了解。
最简单的都是通过nginx和一个nginx的模块nginx-rtmp-module,组合在一起搭建一个功能相对比较完善并可支持RTMP和HLS的流媒体服务器。
现在将最新的解决方案记录下来。

旧方法

之前大家都是通过添加模块nginx-rtmp-module编译打包来搭建的。
主要借鉴了

【置顶】搭建nginx rtmp直播服务器,ffmpeg模拟推流
Ubuntu下编译Nginx的RTMP直播模块

新方法

既然标题是使用Debian来搭建,怎么少的了apt的,嘿嘿

如果使用apt 就很简单了,一句命令搞定,但是缺点就是可能不是最新的发布版

1
apt install nginx-full libnginx-mod-rtmp
  1. 修改/etc/nginx/nginx.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    rtmp {
    server {
    listen 1935;
    chunk_size 4000;
    #创建RTMP应用程序。与http位置不同,应用程序名称不能是一种模式。
    application hls {
    live on;
    #在应用程序上切换HLS
    hls on;
    hls_path /var/www/html/hls;
    hls_fragment 5s;
    }
    }
    }
  2. 修改虚拟主机配置文件(xxx是文件名称):

    1
    sudo nano /etc/nginx/sites-enabled/xxx
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    location /hls {
    #是W3C标准里用来检查该跨域请求是否可以被通过
    add_header Access-Control-Allow-Origin *;
    types {
    application/vnd.apple.mpegurl m3u8;
    video/mp2t ts;
    }
    root /var/www/html/;
    add_header Cache-Control no-cache;
    }
  3. 创建目录:

    1
    sudo mkdir /usr/share/nginx/html/hls
  4. 重启nginx:

    1
    sudo systemctl restart nginx.service

重启完成后,nginx算是成功了,下面就可以测试了,可以使用ffmpeg或obs来推流。

obs:
>

ffmpeg:

1
ffmpeg -re -i test.flv -f flv rtmp://192.168.242.172/myapp/test1