直播ffmpeg

直播 - Nginx配置及ffmpeg推流

2019-02-25  本文已影响0人  丿小七

直播

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

搭建Nginx服务器

brew tap denji/homebrew-nginx

brew install nginx-full --with-rtmp-module
报错的话先执行brew unlink nginx

nginx

brew info nginx-full
usr/local/etc/nginx/nginx.conf

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 -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推流

brew install ffmpeg

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 音频赫兹

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

练习

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

上一篇下一篇

猜你喜欢

热点阅读