mac搭配Nginx服务器常见问题
推流服务器主要是使用了开源的nginx和rtmp模块,网上也有很多资料,不过对有些可能出现的问题没有很好的总结。
安装brew
使用Mac进行开发很久的老司机应该对这个工具很熟悉了。brew是一个第三方的软件的管理工具。基于Ruby语言。若你的Mac已经安装,则跳过该步骤吧。
具体安装如下
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 1
安装nginx模块
执行如下命令
brew tap homebrew/nginx
- 1
好的,麻烦来了,如果不是root用户的话。肯定会出现权限错误的问题
错误如下
fatal: could not create work tree dir '/usr/local/Library/Taps/homebrew/homebrew-nginx'.: Permission denied
Error: Failure while executing: git clone https://github.com/Homebrew/homebrew-nginx /usr/local/Library/Taps/homebrew/homebrew-nginx --depth=1
- 1
- 2
这个时候可能觉得加一个sudo就好了。有的电脑确实可以,不过这个似乎是brew的一个bug。对文件夹的的权限做一下修改就好。让当前用户对/usr/local
有读写权限。
sudo chown -R $USER /usr/local
- 1
安装rtmp模块
安装rtmp也是只需要使用如下命令就好了
brew install nginx-full --with-rtmp-module
- 1
如果不幸的话,到这一步错误又来了。看log同样是权限的问题
==> Installing nginx-full from homebrew/nginx
Error: Permission denied - /Library/Caches/Homebrew/Formula/nginx-full.brewing
- 1
- 2
同样是文件夹权限的问题。修改文件夹的权限就可以
sudo chown -R ${USER} /Library/Caches/Homebrew/
- 1
好的,权限问题解决了,继续执行一下安装的命令。不幸运的话错误又来了,错误的log如下:
curl: (35) Server aborted the SSL handshake
Error: Failed to download resource "rtmp-nginx-module"
Download failed: https://codeload.github.com/sergey-dryabzhinsky/nginx-rtmp-module/tar.gz/v1.1.7.10
- 1
- 2
- 3
还好这个问题不常见,引起的原因是brew版本太低的原因,所以不支持https协议,所以需要升级一下brew。升级的命令如下
brew update
- 1
好的,然后继续执行安装命令,开始安装了,可是过了一会又不行了。错误如下:
curl: (7) Failed to connect to codeload.github.com port 443: Operation timed out
Error: Failed to download resource "rtmp-nginx-module"
Download failed: https://codeload.github.com/sergey-dryabzhinsky/nginx-rtmp-module/tar.gz/v1.1.7.10
- 1
- 2
- 3
引起的原因是使用了一个PHP的依赖库,然后被墙了,真是有意思。具体怎么解决,大家都知道了。
nginx配置
查看nginx相关信息
在启动之前我们需要知道nginx安装的目录和目录。
执行如下命令
brew info nginx-full
- 1
可能会输出很多无用的信息,不过对我们真正比较有用的是==> Caveats
后面的这一部分
Docroot is: /usr/local/var/www
The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
nginx will load all files in /usr/local/etc/nginx/servers/.
- Tips -
Run port 80:
$ sudo chown root:wheel /usr/local/Cellar/nginx-full/1.10.1/bin/nginx
$ sudo chmod u+s /usr/local/Cellar/nginx-full/1.10.1/bin/nginx
Reload config:
$ nginx -s reload
Reopen Logfile:
$ nginx -s reopen
Stop process:
$ nginx -s stop
Waiting on exit process
$ nginx -s quit
To have launchd start homebrew/nginx/nginx-full now and restart at login:
brew services start homebrew/nginx/nginx-full
Or, if you don't want/need a background service you can just run:
nginx
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
从信息可以看到。nginx安装的目录为/usr/local/Cellar/nginx-full
,nginx配置文件为/usr/local/etc/nginx/nginx.conf
,nginx服务器根目录所在位置为/usr/local/var/www
。
启动nginx
执行如下命令即可启动nginx
/usr/local/Cellar/nginx-full/1.10.1/bin/nginx
- 1
打开浏览器输入http://localhost:8080
,如果显示如下界面则说明安装成功了。
配置nginx.conf文件
打开nginx.conf文件。在http节点后面配置:
rtmp {
server {
listen 1935;
application joyseedog{
live on;
record off;
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
application后面的名字自己可以做修改。
然后重新加载一下nginx。如果没有启动nginx则可能会报错,系统可能找不到进程。
/usr/local/Cellar/nginx-full/1.10.1/bin/nginx -s reload
- 1
进行电脑端本地推流测试
电脑端我们使用推流我们可以通过ffmepg来进行。
安装ffmepg
通过一个命令就可以安装了,最好是提前准备好梯子。似乎有些组件也是下载不下来。
brew install ffmpeg
- 1
通过ffmepg命令进行推流
推流的命令如下
ffmpeg -re -i /Users/jianquan/Movies/IMG_1111.MOV -vcodec copy -f flv rtmp://localhost:1935/joyseedog/room1
- 1
- 2
-i后面是自己视频的地址,room1可以修改,joyseedog可以修改,不过需要和nginx.conf里面配置的一样
查看推流结果
需要使用一个支持rtmp协议的播放软件,在Mac上我们可以使用Vlc。google一下就可以找到安装包。安装结束后,打开vlc,点击File
—->Open Network
在弹出来的框中选择Network然后输入URL:
然后就可以播放推出来的视频了。
效果如下:
手机端进行推流
手机端推流使用的是LiveVideoCoreSDK,github地址如下LiveVideoCoreSDK。
我们只需要修改ViewController.m
里面的rtmp地址为自己发Mac的推流地址即可实现推流
- (void)viewDidLoad {
[super viewDidLoad];
[self UIInit];
_RtmpUrlTextField.text = @"rtmp://124.193.167.51:1935/joyseedog/room1";
}
- 1
- 2
- 3
- 4
- 5
- 6
必须使用真机进行测试,当手机端连接后,RTMP转态变为已连接
如图
我们可以打开终端,看看连接的情况,连接使用的是1935端口
使用lsof -i:1935
命令查看端口的具体连接情况;
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 17252 jianquan 7u IPv4 0xc5066a9dfda55bdb 0t0 TCP *:macromedia-fcs (LISTEN)
nginx 17259 jianquan 3u IPv4 0xc5066a9e054077bb 0t0 TCP 10.2.48.21:macromedia-fcs->192.168.2.86:51553 (ESTABLISHED)
nginx 17259 jianquan 7u IPv4 0xc5066a9dfda55bdb 0t0 TCP *:macromedia-fcs (LISTEN)
- 1
- 2
- 3
- 4
可以看到,10.2.48.21是服务器地址,192.168.2.86:51553手机的地址已经建立了TCP连接。同时还要两个进程在监听等待连接。
同样,我们可以使用VLC对推流视频进行播放,需要注意的是,LiveVideoCoreSDK里面的IP地址不能写localhost,但是在Mac上的rtmp进行播放测试时候,写IP地址或是localhost都是可以的。
会有3秒左右的延迟,具体效果如下:
点击退出后再次查看端口:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 17252 jianquan 7u IPv4 0xc5066a9dfda55bdb 0t0 TCP *:macromedia-fcs (LISTEN)
nginx 17259 jianquan 7u IPv4 0xc5066a9dfda55bdb 0t0 TCP *:macromedia-fcs (LISTEN)
- 1
- 2
- 3
可以看到建立的TCP连接已经断开,刚才的连接已经不在了。
总结
本文在前人的基础上,实践并总结了Mac搭建推流服务器,并使用本地推流和第三方框架LiveVideoCoreSDK在iOS设备上对推流服务器进行了测试。该推流服务器不可直接用于工业生产中,不过对于iOS程序员自己测试推流功能会有一定帮助。
mac搭配Nginx服务器常见问题的更多相关文章
- 2019.1.10 Mac安装Nginx服务器
1.安装Homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/in ...
- Mac使用nginx+rtmp服务器
一.安装Homebrow 已经安装了brow的可以直接跳过这一步.执行命令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/H ...
- Nginx 之四: Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...
- Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...
- 在阿里云服务器(ECS)上从零开始搭建nginx服务器
本文介绍了如何在阿里云服务器上从零开始搭建nginx服务器.阿里云服务器(ECS)相信大家都不陌生,感兴趣的同学可以到http://www.aliyun.com/product/ecs去购买,或到体验 ...
- Mac下Nginx环境配置
环境信息: Mac OS X 10.11.1 Homebrew 0.9.5 正文 一.安装 Nginx 终端执行: brew search nginx brew install nginx 当前版本 ...
- Nginx 之三:nginx服务器模块、web请求处理机制及事件驱动模型、进程功能和进程间通信
一:Nginx的模块化结构设计: 1.核心模块:指的是nginx服务器运行当中必不可少的模块,这些模块提供了最基本最核心的服务,比如权限控制.进程管理.错误日志.事件驱动.正则表达式解析等,nginx ...
- Docker 使用入门,创建一个Nginx服务器
运行环境: MAC Docker 版本: Docker version 17.12.0-ce, build c97c6d6 一.启动Nginx 服务器 启动Nginx 服务器,并进入模拟终端 dock ...
- mac 安装nginx,并配置nginx的运行环境
1. 安装nginx // 查询有没有nginx brew search nginx //开始安装nignx brew install nginx 2. 检查nignx是否安装成功 nginx -V ...
随机推荐
- 爬起点小说 day02
总的来说起点小说还是挺好爬的,就是爬取小说的时候太慢了,4000多本小说就爬了2天一夜 首先爬取的是网页的所有类别,并把类别名存入到mongodb中,链接存到redis中: import scrapy ...
- mysql获取随机字符串和随机数的方法
在我们开发的过程中,我们可能会需要在表中随机生成一些数据以供我们进行相应的测试. 就像我之前发的“mysql创建存储过程向数据表中加入规定条数的数据” 那么我们应该怎样生成随机的字符串和随机数字呢? ...
- 深入学习IOZone【转】
本文转载自:https://blog.csdn.net/werm520/article/details/7262103 深入学习IOZone 刘智朋 2011-3-29 1 ...
- java的一些基本概念——java11、jdk、jre、jvm等
Java字节码 先介绍下c语言的编译过程,写好代码用编译器(比如gcc)编译过后是机器能够直接执行的二进制机器码. java也类似这种情况,但是java代码文件编译过后不是任何机器都能识别的机器码,而 ...
- 剑指offer 02:替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 解题代码 public cla ...
- 数组中的stdClass Object如何访问
使用print_r($data)输出结果为 Array ( [0] => stdClass Object ( [color_item_no] => 1 [color_name] => ...
- spring-cloud-config-server——Environment Repository
参考资料: https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.4.0.RELEASE/single/spring-cl ...
- Harbor私有仓库中如何彻底删除镜像释放存储空间?
简介: Harbor私有仓库运行一段时间后,仓库中存有大量镜像,会占用太多的存储空间.直接通过Harbor界面删除相关镜像,并不会自动删除存储中的文件和镜像.需要停止Harbor服务,执行垃圾回收命令 ...
- 一个完整的成年果蝇大脑的电子显微镜图谱 | A Complete Electron Microscopy Volume of the Brain of Adult Drosophila melanogaster
paper:A Complete Electron Microscopy Volume of the Brain of Adult Drosophila melanogaster 果蝇是一个非常完美的 ...
- Python3编译安装以及创建虚拟运行环境
一.yum安装pip# yum -y install epel-release #Centos6.8安装epel源# yum -y install python-pip手动安装pip# wget ...