Mac搭建Nginx流媒体服务器,进行推流,拉流

Mac搭建Nginx流媒体服务器,进行推流,拉流,第1张

Nginx 是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择

下面介绍如何在Mac上搭建流媒体服务器,以便后续的自己研究的项目或者demo向服务器上进行推流

首先需要安装brew,brew是一款管理软件的第三方平台,安装的方式也很简单,请自行查阅安装方式

执行下面2句命令,即可安装rtmp推流的nginx服务器

执行完后,可以查看ngix安装在哪里

可以看到M1 是安装在这个目录下/usr/local/etc/nginx

打开这个目录,可以看到有个nginx.conf文件,这里就是服务器的一个配置文件,如果支持rtmp,则里面的内容会有一个rtmp的json

这个json说明:

1.你本地的nginx服务器会监听1935端口号,

2.服务器会创建一个mytv的程序

后续你可以向这个地址进行推流,并且进行拉流播放

后面我们会使用ffmpeg向这个地址推流

rtmp://localhost:1935/mytv/room

并且用vlc拉取这个地址的流进行播放

执行命令,即可启动nginx服务器

验证是否启动成功,只需要在浏览器中访问下以下链接

在浏览器地址栏输入: http://localhost:8080

出现Welcome to nginx ,代表nginx安装成功了。

打开配置文件 /usr/local/etc/nginx/nginx.conf

这里推的是flv流,可以正常推,这里需要注意的是服务器地址一定要写正确,我的nginx.conf里application配置的是mytv,所以路径就是mytv,room则是随便写都行,代表向程序mytv下的room文件推流

然后电脑上打开vlc这个播放器软件 点击File---->Open Network 在弹出来的框中选择Network然后输入URL:

验证时,推流的文件最好搞大点,不然一下推完了,你才去拉取播放,则播放不了,因为这是实时的

vlc使用如下

3.点击播放即可

可以看到左边是画面,右边是ffmpeg在推流

参考: https://www.jianshu.com/p/cf74a34af15d

1、首先需要说明的是,不能用exec命令。他会在客户端推流结束的同时自动终止调用的外部程序,结果就是最后ffmpeg无法进行完整的编码。该命令只适合将接到的流转推到其他地址。

2、应该使用exec_record_done配合record命令使用。即在录制结束之后自动对已录制的文件进行转码操作得到MP4文件。根据是否使用record_interval命令又有两种不同的情况。

2A、若不使用record_interval,则会在推流停止后(即record完全停止后)才进行转码,在这之前得不到任何输出

2B、若使用record_interval,即可设置每隔一段时间就重新开始录制,结合record_append on命令,可确保最后录制的视频都在一个文件中,否则就会给每段录制都生成一个单独的文件。使用这两个命令之后,转码也会相应地每隔一段时间就进行一次,但最后都输出(覆盖)到同一个文件中。优点是能近乎“实时”地进行转码,缺点是会重复调用ffmpeg,占用系统资源。

3、需要注意的是,以上两种方法最后得到的转码文件(的时长)是相同的。

4、nginx.conf配置示例

[html] view plain copy

application hls {

live on

hls on

record all

record_path /home/zhanghui/test

#record_interval 10s

#record_append on

hls_path /tmp/app

hls_fragment 5s

# convert recorded file to mp4 format

exec_record_done '/usr/local/bin/ffmpeg' -y -i /home/zhanghui/test/livestream.flv -vcodec libx264 -f mp4 /home/zhanghui/test/test_record.mp4 2>>/home/zhanghui/test/test_record.log

}

在server模块下加入以下内容: location /hls { alias /usr/local/media/hlstypes { application/vndapplempegurl m3u8video/mp2t ts} add_header Cache-Control no-cacheexpires -1} location ~* flv$ { flvroot /usr/local/me如何访问nginx流媒体服务器


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/187131.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-30
下一篇2023-03-30

发表评论

登录后才能评论

评论列表(0条)

    保存