美文网首页直播ffmpeg
直播 - Nginx配置及ffmpeg推流

直播 - Nginx配置及ffmpeg推流

作者: 丿小七 | 来源:发表于2019-02-25 17:12 被阅读0次

    直播

    参考:快速开发一个完整的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的转码延时测试与设置优化

    相关文章

      网友评论

        本文标题:直播 - Nginx配置及ffmpeg推流

        本文链接:https://www.haomeiwen.com/subject/utigyqtx.html