前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS直播app之Mac搭建nginx+rtmp服务器

iOS直播app之Mac搭建nginx+rtmp服务器

作者头像
s_在路上
发布2018-09-11 17:10:27
4.1K1
发布2018-09-11 17:10:27
举报
文章被收录于专栏:iOS 开发杂谈

前言 今年移动直播行业的兴起,很多公司都在做直播,转眼间过了大半年了,直播的各种技术相对成熟了起来。今天我们公司也追赶潮流,索性我也转战直播,下面从第一步开始,Mac环境下如何搭建nginx+rtmp服务器。 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择。

一、安装Homebrew 打开终端, 查看是否已经安装了Homebrew, 直接终端输入命令。如果对Homebrew不熟悉,可以移步这里

代码语言:javascript
复制
man brew

Paste_Image.png

根据上图所示,如果Mac环境下安装了Homebrew,则会显示一些命令的帮助信息,此时输入Q退出即可, 直接进入第二步。反之, 如果没有安装,执行命令。

代码语言:javascript
复制
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

卸载,输入命令

代码语言:javascript
复制
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

二、安装nginx 先把nginx下载到本地

代码语言:javascript
复制
brew tap homebrew/nginx

执行安装

代码语言:javascript
复制
brew install nginx-full --with-rtmp-module

Paste_Image.png

此时, nginx和rtmp就安装好了,输入命令,检测是否安装成功

代码语言:javascript
复制
nginx

在浏览器里打开http://localhost:8080如果出现下图, 则表示安装成功

Paste_Image.png

三、配置nginx和rtmp 配置nginx的rtmp,输入命令

代码语言:javascript
复制
brew info nginx-full

Paste_Image.png

通过上图可以看出,nginx.conf文件在:

代码语言:javascript
复制
/usr/local/etc/nginx/nginx.conf

nginx完整路径:

代码语言:javascript
复制
/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 {} 之后:

代码语言:javascript
复制
# 在http节点后面加上rtmp配置:
rtmp {    
    server {        
        listen 2016;        
        application rtmplive {            
            live on;            
            record off;        
        }    
    }
}

说明: rtmp是协议名称 server 说明内部中是服务器相关配置 listen 监听的端口号, rtmp协议的默认端口号是1935 application 访问的应用路径是 zbcs live on; 开启实时 record off; 不记录数据

保存文件后,重新加载nginx的配置文件这一步很重要

代码语言:javascript
复制
nginx -s reload

重启nginx:

代码语言:javascript
复制
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:

代码语言:javascript
复制
sudo /usr/local/Cellar/nginx-full/1.10.0/bin/nginx -s reload

Paste_Image.png

四、安装ffmpeg 对于ffmpeg不熟悉的,可以移步这里 输入以下命令来安装ffmpeg:

代码语言:javascript
复制
brew install ffmpeg

安装ffmpeg时间就要长一点了 安装一个支持rtmp协议的视频播放器,Mac下可以用VLC

五、验证视频 首先自己准备一个视频文件, 也可以用我github项目中的视频文件,执行命令

代码语言:javascript
复制
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。输入命令重启后就没有问题了

代码语言:javascript
复制
nginx -s reload

七、FFmpeg常用推流命令 1、桌面录制或者分享

代码语言:javascript
复制
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:2016/rtmplive/room

未命名.gif

2、桌面+麦克风

代码语言:javascript
复制
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、桌面+麦克风,并且还要摄像头拍摄到自己

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.10.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档