直播 - Nginx配置及ffmpeg推流
2019-02-25 本文已影响0人
丿小七
直播
搭建Nginx服务器
- 将
nginx
clone
到本地
brew tap denji/homebrew-nginx
- 安装
nginx
brew install nginx-full --with-rtmp-module
报错的话先执行brew unlink nginx
- 启动
nginx
- 查看
nginx
安装在哪
brew info nginx-full
usr/local/etc/nginx/nginx.conf
- 配置rtmp
rtmp {
server {
listen 1935;
ping 30s;
notify_method get;
application liveApp {
live on;
record off;
max_connections 1024;
}
}
}
<!-- rtmp: 协议名称 -->
<!-- server:服务器内部配置 -->
<!-- listen:监听端口号 -->
<!-- application: 应用名称,为后续推流做准备 -->
<!-- live on: 开启实时 -->
<!-- record off: 不记录数据 -->
- 重新加载nginx
nginx -s reload
- Tips -
Run port 80:
$ sudo chown root:wheel /usr/local/opt/nginx-full/bin/nginx
$ sudo chmod u+s /usr/local/opt/nginx-full/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 denji/nginx/nginx-full now and restart at login:
brew services start denji/nginx/nginx-full
Or, if you don't want/need a background service you can just run:
nginx
安装ffmpeg推流
- 安装ffmpeg
brew install ffmpeg
- 使用fmpeg推流测试
ffmpeg -re -i (视频全路径) -vcodec copy -f flv rtmp:(rtmp路径)
例如:
ffmpeg -re -i /Users/yuanzheng/Desktop/02-如何学习项目.mp4 -vcodec copy -f flv rtmp://localhost:1990/liveApp/room
<!-- 最后推流生成的地址:rtmp://localhost:1990/myapp/room-->
需要跟配置的一一对应,端口,应用名称,room可以随便写
延时:发送流媒体的数据的时候需要延时。不然的话,FFmpeg处理数据速度很快,瞬间就能把所有的数据发送出去,流媒体服务器是接受不了的。因此需要按照视频实际的帧率发送数据
-re: 一定要加,代表按照帧率发送,否则ffmpeg会一股脑地按最高的效率发送数据
-i : 输入文件
-vcodec copy: 强制使用codec编解码方式,要加,否则ffmpeg会重新编码输入的H.264裸流
-f 强制转换为什么格式,后接格式
<!--使用VLC输入地址播放测试-->
- 用ffmpeg抓取桌面以及摄像头推流进行直播
首先查看ffmpeg是否支持对应的设备,在OSX下面,Video和Audio设备使用的是avfoundation,所以可以使用avfoundation来查看
ffmpeg -f avfoundation -list_devices true -i ""
- 抓取桌面和摄像头进行推流(推送一直失败,找原因中...)
ffmpeg -f avfoundation -framerate 30 -i "1:0" -f avfoundation -framerate 30 -video_size 640x480 -i "0" -c:v libx264 -preset slow -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1990/liveApp/room
-f avfoundation 转换为avfoundation
-framerate 30 : 设置帧率 30
-i "1:0" : 设置输出,视频:Capture screen 音频:Built-in Microphone
-f avfoundation -framerate 30 -video_size 640x480 : 设置帧率和视频尺寸
-c:v libx264 设置视频编码,H.264编码 优点是同等清晰度,视频文件更小 缺点就是转换慢
-c:v flv 标准FLV编码 这个好处是速度快 清晰度高的话 视频文件会比较大
-preset slow 使用慢速模式 延迟长 清晰度高
-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10':给视频打水印
-acodec libmp3lame 強制指定音频处理模式
-ac 1 声道选择
-ar 44100 音频赫兹