博客> 直播-Nginx及ffmpeg推流测试
直播-Nginx及ffmpeg推流测试
2019-05-20 19:10 评论:0 阅读:241 一一一一一
直播

参考:快速开发一个完整的ios直播App

搭建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抓取桌面以及摄像头推流进行直播

首先查看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 音频赫兹

ffmpeg的转码延时测试与设置优化

练习

参考:快速开发一个完整的ios直播App ffmpeg参数中文详细解释 ffmpeg的转码延时测试与设置优化

收藏
0
sina weixin mail 回到顶部