一、简介
简单介绍在mac系统上搭建Nginx服务器以及ffmpeg的安装。Nginx服务搭建好后测试一下本地推流和iOS端推流。
二、搭建流媒体服务
1.编辑并安装Nginx服务(如安装报错可以参考:常见问题)
a. 在mac终端输入下面命令来安装brew。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
b. 在mac终端输入下面命令来安装nginx模块。
brew tap denji/nginx
c. 在mac终端输入下面命令来安装rtmp模块。
brew install nginx-full --with-rtmp-module
d. 在mac终端输入下面命令来查看nginx的安装目录
brew info nginx-full
执行命令后会看到输出很多信息,拉到最下面找到Caveats。
nginx服务器根目录所在位置为/usr/local/var/www;
nginx安装的目录为/usr/local/opt/nginx-full;
nginx配置文件为/usr/local/etc/nginx/nginx.conf。
e. 执行下面命令来启动nginx(也就是上图的第三个红色框的路径)
/usr/local/opt/nginx-full/bin/nginx
启动后打开浏览器输入http://localhost:8080,如果显示如下界面则说明安装成功了。
f. 执行下面命令打开nginx配置文件(也就是上vi+空格+配置文件路径)
vi /usr/local/etc/nginx/nginx.conf
在配置文件的event节点后面添加rtmp节点进行rtmp服务的配置,其他节点的配置信息就用默认的,可以不改动。
#配置rtmp服务器
rtmp {
server{
#指定服务端口为1935(1935是rtmp通信协议端口)
listen 1935;
#音视频传输时每个传输块的大小是4000字节
chunk_size 4000;
#指定流应用,rtmp_test是自己取的应用名
application rtmp_test{
#将其功能打开
live on;
#关闭录制
record off;
#允许任何人向我发起请求
allow play all;
}
}
}
配置完成后按esc键,然后输入:wq保存退出。
g. 执行下面命令重启nginx服务
nginx -s reload
重启服务后执行下面命令查看网络状态
netstat -an |grep 1935
执行后可以看到1935的端口号目前处于LISTEN状态。这样直播服务器就算搭建好了。
三、电脑本地推流测试
1. 执行下面命令安装ffmepg(时间会比较久)
brew install ffmpeg
2.通过FFMPEG将本地mp4文件推到rtmp服务器
-i后面是自己本地视频的路径(qinjian是自己的 用户名),flv后面是rtmp服务地址,room可以修改,rtmp_test是rtmp服务配置文件中取的应用名
ffmpeg -re -i /Users/qinjian/Downloads/test.mp4 -vcodec copy -f flv rtmp://localhost:1935/rtmp_test/room
执行命令后会看到如下图所示的结果。
3.查看推流结果
需要先下载flashplayer进行播放,由于mac不能打开swf文件,所以还需要下载一个iSwiff来打开flashplayer.swf(也可以直接将flashplayer.swf拖进浏览器打开,可能有些浏览器不支持,可以多试几个浏览器,我测试的Filefox可以打开)。
flashplayer.swf和iSwiff的下载地址:https://pan.baidu.com/s/1VGFE3wnv-PC-AFFASQ0xFA 提取码:8SaM
下载后打开iSwiff,iSwiff是没有界面的,点击左上角的"文件--打开",选择flashplayer.swf文件进行打开。
如果打开flashplayer显示下图界面,先点击“Get Adobe Flash Player”去下载并安装,安装好后退出iSwiff,然后重新启动iSwiff,再打开flashplayer.swf文件。
flashplayer.swf正常打开后的界面如下图所示,在红框中输入rtmp服务器地址,然后点击播放就会看到视频内容了(可能会有点延迟)。
四、iOS手机端进行推流
iOS端推流使用的是LiveVideoCoreSDK,github地址如下LiveVideoCoreSDK。
打开项目后找到LiveVideoCoreDemo文件夹下的ViewController.m文件,将viewDidLoad方法里面的rtmp地址改为自己的地址。
- (void)viewDidLoad {
[super viewDidLoad];
[self UIInit];
_RtmpUrlTextField.text = @"rtmp://192.168.20.242:1935/rtmp_test/room";
}
这里需要注意一下,上面本地推流测试时rtmp服务地址写的是rtmp://localhost:1935/rtmp_test/room,如果在手机上进行推流需要先查一下rtmp服务所在电脑的IP地址(终端输入ifconfig进行查询),然后用IP地址替换rtmp服务地址中的localhost(rtmp://192.168.20.242:1935/rtmp_test/room)。另外手机和rtmp服务所在的电脑要在同一个局域网内。
然后在真机上运行程序(记得在Info.plist文件中添加Privacy - Microphone Usage Description和Privacy - Camera Usage Description这两个隐私权限,否则点击开始直播会闪退),点击开始直播进入直播页面,如下图所示:
然后在打开的flashplayer中输入rtmp://localhost:1935/rtmp_test/room(这里可以不用替换IP地址),点击播放就可以观看直播了。