前言 今年移动直播行业的兴起,很多公司都在做直播,转眼间过了大半年了,直播的各种技术相对成熟了起来。今天我们公司也追赶潮流,索性我也转战直播,下面从第一步开始,Mac环境下如何搭建nginx+rtmp服务器。 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择。
一、安装Homebrew 打开终端, 查看是否已经安装了Homebrew, 直接终端输入命令。如果对Homebrew不熟悉,可以移步这里
man brew
Paste_Image.png
根据上图所示,如果Mac环境下安装了Homebrew,则会显示一些命令的帮助信息,此时输入Q退出即可, 直接进入第二步。反之, 如果没有安装,执行命令。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
卸载,输入命令
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
二、安装nginx 先把nginx下载到本地
brew tap homebrew/nginx
执行安装
brew install nginx-full --with-rtmp-module
Paste_Image.png
此时, nginx和rtmp就安装好了,输入命令,检测是否安装成功
nginx
在浏览器里打开http://localhost:8080如果出现下图, 则表示安装成功
Paste_Image.png
三、配置nginx和rtmp 配置nginx的rtmp,输入命令
brew info nginx-full
Paste_Image.png
通过上图可以看出,nginx.conf文件在:
/usr/local/etc/nginx/nginx.conf
nginx完整路径:
/usr/local/Cellar/nginx-full/1.10.1/bin/nginx
通过vim或者点击Finder ->前往 ->前往文件夹 ->输入/usr/local/etc/nginx/nginx.conf ->用Atom打开nginx.conf配置文件来配置
Paste_Image.png
直接滚动到最后一行,以就是在http {} 之后:
# 在http节点后面加上rtmp配置:
rtmp {
server {
listen 2016;
application rtmplive {
live on;
record off;
}
}
}
说明: rtmp是协议名称 server 说明内部中是服务器相关配置 listen 监听的端口号, rtmp协议的默认端口号是1935 application 访问的应用路径是 zbcs live on; 开启实时 record off; 不记录数据
保存文件后,重新加载nginx的配置文件这一步很重要
nginx -s reload
重启nginx:
sudo /usr/local/Cellar/nginx-full/1.10.0/bin/nginx -s reload
执行命令的时候, 报异常
Paste_Image.png
Paste_Image.png
大概意思就是配置nginx.conf的时候,在123行犯了一个愚蠢的错误,手动输入application rtmplive的时候,应该有个空格。 重启nginx:
sudo /usr/local/Cellar/nginx-full/1.10.0/bin/nginx -s reload
Paste_Image.png
四、安装ffmpeg 对于ffmpeg不熟悉的,可以移步这里 输入以下命令来安装ffmpeg:
brew install ffmpeg
安装ffmpeg时间就要长一点了 安装一个支持rtmp协议的视频播放器,Mac下可以用VLC
五、验证视频 首先自己准备一个视频文件, 也可以用我github项目中的视频文件,执行命令
ffmpeg -re -i /Users/sunjinshuai/Desktop/keep.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:2016/rtmplive/room
Paste_Image.png
然后电脑上打开vlc这个播放器软件 点击File---->Open Network 在弹出来的框中选择Network然后输入URL: rtmp://localhost:1935/zbcs/room
Paste_Image.png
右击play,ffmepg 安装完成后可以开始推流了。
ps:
六、报错处理 1、ffmepg命令推流的时候,提示连接失败。
Paste_Image.png
出现这个错,是因为配置了nginx.conf后,需要重启nginx。输入命令重启后就没有问题了
nginx -s reload
七、FFmpeg常用推流命令 1、桌面录制或者分享
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:2016/rtmplive/room
未命名.gif
2、桌面+麦克风
ffmpeg -f avfoundation -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:2016/rtmplive/room
未命名.gif
3、桌面+麦克风,并且还要摄像头拍摄到自己
ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:2016/rtmplive/room
未命名.gif