音视频编程: 构建 nginx 推流服务器
本篇分享的主要内容
如何在 macos 中构建本地的推流服务器(nginx + rtmp-nginx-module), 并使用 ffmpeg 命令进行视频推流, 然后使用 VLC 播放器播放视频.
该系列博文:
安装 rtmp-nginx-module
之前在测试 php 程序的时候, 我已经安装过 nginx, 但是发现这样在配置 rtmp-nginx-module 的时候, 无法成功.
配置文件修改完成之后, nginx 总是无法识别 rtmp
, 报错如下:
1 | [emerg] 30766#0: unknown directive "rtmp" in /usr/local/etc/nginx/nginx.conf:40 |
现在需要卸载原来已经安装的 nginx, 命令如下:
1 | brew uninstall nginx |
再次安装:
1 | brew install nginx-full --with-rtmp-module |
耐心等待一会 ~~
nginx 的版本(nginx -v):
1 | nginx/1.12.2 |
rtmp-nginx-module 版本:
1 | 1.1.7.11-dev_2 |
配置 rtmp
编辑 nginx 的配置文件, 文件位置位于:
1 | /usr/local/etc/nginx/nginx.conf |
在 http {}
后面写入如下内容:
1 | rtmp { |
注意: rtmplive
是固定的.
具体的 nginx 配置详见后面的附录内容.
推流
**1.安装 ffmpeg 即可. **
1 | brew install ffmpeg |
这个过程有点久, 如果你没有梯子基本安装不了 [大哭]~
2.安装 VLC
直接去官网下载 dmg 包, 安装即可.
打开 VLC 然后选择从 File/Open Network 打开文件, 如下图所示:
在弹出的框中, 写入推流地址 rtmp://localhost:1935/rtmplive/channel
, 如图所示:
直接点击 Open.
注意: 如果 localhost 无法播放, 请更换为你的本机 ip, 如我的本机 ip 是
192.168.1.122
, 对应的播放地址为rtmp://192.168.1.122:1935/rtmplive/channel
.
如果还是无法成功, 请关闭 macos 的防火墙.
3.启动 nginx
1 | sudo nginx |
可以在浏览器访问如下地址, 看看 nginx 是否启动成功.
1 | http://localhost:8080/index.html |
4.ffmpeg 推流
推流的命令如下:
1 | ffmpeg -re -i ~/Desktop/launcher.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/rtmplive/channel |
其中 launcher.mp4
是我自己从网络上面下载的一个视频文件, 时长大约是 5 分钟.
在 VLC 中, 就可以看到推流播放的视频了. [开心]~~
附录
nginx 配置文件
1 | worker_processes 1; |
视频文件
使用下载的 mp4 文件, 有些无法播放, 暂时估计应该是码率的问题, 大家在测试过程中, 发现视频无法播放, 最后试试其他视频文件.
另外, 视频文件不要太小, 尽量能让其播放时长在 3-5 分钟.
brew install/uninstall 报错
报错信息如下:
1 | Error: undefined method `patch' for #<Resource:0x000001040877a8> |
最终的解决方案是重新安装 Homebrew, 命令如下:
1 | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
检查本机的 ip
1 | ifconfig | grep "inet " | grep -v 127.0.0.1 |