安装nginx
Nginx:Nginx是一个非常出色的HTTP服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
- 从github下载nginx到本地
brew tap denji/homebrew-nginx
- 安装nginx服务器和rtmp模块
brew install nginx-full --with-rtmp-module
- 查看是否安装成功
在终端开启nginx服务器,输入一下命令
nginx
在浏览器地址栏输入:http://localhost:8080 (直接点击)
如果出现下图, 则表示安装成功
- nginx常用指令
-
nginx -s reload
:重新加载配置文件 -
nginx -s reopen
:重新打开日志目录 -
nginx
:开启服务器 -
nginx -s stop
:停止服务器 -
nginx -s quit
:退出服务器
配置rtmp
- 查看nginx配置文件路径
brew info nginx-full
前往该路径
- 使用vscode打开nginx.conf,在最后面添加如下代码
rtmp {
server{
listen 2121;
application liveApp{
live on;
record off;
}
}
}
- application:流媒体上应用名称,可以随意填
- record off:图片有误,不记录数据
- 重新加载nginx的配置文件
nginx -s reload
安装ffmepg进行推流
- 安装ffmpeg
brew install ffmpeg
- 使用ffmepg推流测试
推流本地音视频到流服务器
ffmpeg -re -i (视频全路径) -vcodec copy -f flv (rtmp路径)
ffmpeg -re -i /Users/xes/Desktop/test.mp4 -vcodec copy -f flv rtmp://localhost:2121/liveApp/room
- 需要跟配置的一一对应,端口,应用名称,room可以随便写
- 延时:发送流媒体的数据的时候需要延时。不然的话,FFmpeg处理数据速度很快,瞬间就能把所有的数据发送出去,
流媒体服务器是接受不了的
。因此需要按照视频实际的帧率
发送数据 - -re: 一定要加,代表按照帧率发送,否则ffmpeg会一股脑地按最高的效率发送数据* -i : 输入文件
- -vcodec copy: 强制使用codec编解码方式,要加,否则ffmpeg会重新编码输入的H.264裸流
- -f 强制转换为什么格式,后接格式
- ffmpeg参数中文详细解释
只推流摄像头(不带麦)推流指令
ffmpeg -f avfoundation -pixel_format bgr0 -framerate 30 -video_size 640x480 -i "0" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:2121/liveApp/room
ffmpeg -f avfoundation -pixel_format uyvy422 -framerate 30 -video_size 640x480 -i "0" -c:v libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1990/liveApp/room
ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0" -vf format=yuyv422,crop=800:200:100:50 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1990/liveApp/room
推屏幕
ffmpeg -f avfoundation -pixel_format uyvy422 -i "1" -f flv rtmp://localhost:1990/liveApp/room
只推麦
ffmpeg -f avfoundation -i ":0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 48000 -ac 1 -f flv rtmp://localhost:1990/liveApp/room
播放rtmp推流
使用ffplay播放rtmp推流
ffplay rtmp://localhost:2121/liveApp/room