Nginx-http-flv-module流媒体服务器搭建

中文说明


nginx-http-flv-module/README.CN.md at master · winshining/nginx-http-flv-module · GitHub


一款基于 nginx-rtmp-module 的流媒体服务器。


nginx-http-flv-module 具备nginx-rtmp-module 的所有功能,并且对比如下:


image.png

支持的播放器

VLC (RTMP & HTTP-FLV) / OBS (RTMP & HTTP-FLV) / JW Player (RTMP) / flv.js (HTTP-FLV).


注意事项

1、Adobe 将在 2020 年 12 月 31 日之后停止对 flash 播放器 的官方支持,


主流浏览器随后将移除 flash 播放器,使用 flash 播放器的插件将不再可用。


2、flv.js 只能运行在支持 Media Source Extensions 的浏览器上。


3、nginx-http-flv-module 包含了 nginx-rtmp-module 所有的功能,


所以不要将 nginx-http-flv-module 和 nginx-rtmp-module 一起编译。


4、如果使用 flv.js 播放流,那么请保证发布的流被正确编码,


因为 flv.js 只支持 H.264 编码的视频和 AAC/MP3 编码的音频。


5、其中的 add_header ‘Access-Control-Allow-Origin’ ‘*’ 与 add_header ‘Access-Control-Allow-Credentials’ ‘true’ 很重要,


主要解决了前端通过HTTP方式拉流是的跨域问题。


其他注意事项和详细细节可见官方github。

实现

1、官方示例以及推荐等都是在Linux服务器上。

但是如果需要在本地Windows电脑上进行调试或者服务器就必须是Windows服务器的话,

需要编译Windows版本,或者直接网络上搜索下载已经编译好的Windows版本。

但是是否可用需要自己下载验证。

以下载上面的为例,下载解压后,自带run.bat运行脚本

image.png

2、配置文件

关注两个地方,比如这里的官方例子

假设在 http 配置块中的 listen 配置项是:

http {
    ...
    server {
        listen 8080; #不是默认的 80 端口
        ...
 
        location /live {
            flv_live on;
        }
    }
}

在 rtmp 配置块中的 listen 配置项是:

rtmp {
    ...
    server {
        listen 1985; #不是默认的 1935 端口
        ...
 
        application myapp {
            live on;
        }
    }
}

并且发布的流的名称是 mystream,那么基于 HTTP 的播放 url 是:

http://example.com:8080/live?port=1985&app=myapp&stream=mystream

3、Windows上本地模拟推送RTMP视频流到nginx-http-flv-module

 

ffmpeg.exe -re -i D:\WorkSpace\Other\FFmpegDemo\test\1.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/myapp/badao

pause


推流成功之后,使用VLC进行拉流测试,网络串流地址为


http://127.0.0.1:800/live?port=1935&app=myapp&stream=badao


注意这里的


800对应http配置的端口


live对应http配置的location后面的/live


port=1935对应rtmp中配置的端口


app=myapp对应的myapp是rtmp中配置的application myapp


stream=badao的badao是对应推流时的rtmp://127.0.0.1:1935/myapp/badao的badao



© 2016-2024 阿尔佛 aerfo.com | 豫ICP备17044542号 | 豫公网安备 41010602000172