在Mac上自己搭建直播服务器

作者: wosicuanqi | 来源:发表于2017-06-02 17:53 被阅读1408次

    在Mac上安装nginx

    为什么要在Mac上安装nginx,是因为在nginx上有支持rtmp协议的模块,比较容易实现rtmp协议。其他其服务只要能实现rtmp协议都可以,但由于nginx实现起来方便所以这里使用nginx来做直播的服务。

    我们用brew命令来安装nginx,请先确保你的Mac上已经安装了homebrew,如果没有安装可以访问homebrew的官网https://brew.sh/index_zh-cn.html 下载安装,也可以在终端中运行以下命令安装:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    安装完homebrew后在终端中运行以下命令安装nginx。

    // 将nginx下载到本地
     brew tap homebrew/nginx
    
    // 安装nginx服务器
     brew install nginx-full --with-rtmp-module
    
    // 开启服务器
     nginx
    

    配置nginx服务

    // 用vim打开配置文件
    vim /usr/local/etc/nginx/nginx.conf
    
    rtmp {
        server {
            listen 1935; // 设置对应的端口
            application mylive { 
                live on;
                record off; // 不记录数据
            }
        }
     }
    
    // 添加完信息要重新加载文件才能用
    nginx -s reload
    

    安装FFmpeg

    其实经过以上步骤直播服务已经搭建好了,我们以下的操作都是验证我们的成果的,我们要安装一个FFmpeg的第三方库用来实现推流。

    // 安装ffmpeg
     brew install ffmpeg
    

    实现对视频文件的直播的推流

    ffmpeg -re -i /Users/liuxiaoliang/Desktop/720.m4v -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/mylive/room
    

    也可以将里面的参数简写

    ffmpeg -re -i /Users/liuxiaoliang/Desktop/720.m4v -c:v libx264 -c:a aac -strict -2 -f flv rtmp://localhost:1935/mylive/room
    

    上面的命令/Users/liuxiaoliang/Desktop/720.m4v是你视频文件的路径,请根据自己视频文件的位置更改。最后跟的rtmp://localhost:1935/mylive/room是我的推流的地址。现在运行命令后如果出现如下图推流的数据包信息就说明推流成功了。

    电脑截屏

    实现拉流

    为了方便测试我们利用vlc播放器来实现拉流,Mac端可以在vlc的官网下载Mac端的播放器,对于iOS端可以在iOS手机的AppStore上下载vlc播放器。
    以手机为例,在手机的vlc播放器的网络串流内输入拉流的地址,其实和上面推流是同一个地址只是这里要把localhost替换成Mac电脑上的ip地址(在Mac上实现拉流可不用替换),并确保Mac电脑与手机在同一个局域网内。

    // 在vlc播放器中输入以下地址就可看到拉流视频,如果在手机上记录把localhost替换成Mac上的ip地址,
    rtmp://localhost:1935/mylive/room
    
    屏幕截屏 屏幕截屏 屏幕截屏

    实现电脑桌面直播

    我们还可以将电脑桌面的图像推流传出去。不过首先我们得先获取电脑上的输入硬件信息,在终端执行以下命令获取硬件信息,以确定用哪个硬件作为视频图像的输入。

    // 获取Mac上的输入设备的列表
    ffmpeg -f avfoundation -list_devices true -i ""
    
    Mac电脑可输入设备信息.png

    我们看到电脑屏幕的序号是1,所以我们执行以下命令。

    // 向服务器电脑桌面的图像信息
    ffmpeg -f avfoundation -i "1" -vcodec libx264  -f flv rtmp://localhost:1935/mylive/room
    

    上面的方法只有图像没有声音,想要声音可用以下命令

    ffmpeg -f avfoundation -i "1:0" -vcodec libx264  -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/room
    
    电脑截屏

    用电脑的摄像头获取图像并进行推流

    总感觉前面不像一个完整的直播是吧?因为没有用到摄像头,下面我们就用电脑的摄像头获取图像然后进行推流。可以用以下命令

    // 设置帧率为30帧,图像大小为320x240
    ffmpeg -f avfoundation -framerate 30 -video_size 320x240 -i "0" -vcodec libx264 -f flv rtmp://localhost:1935/mylive/room
    

    上面的命令是没有声音的,下面是加上声音的命令

    ffmpeg -f avfoundation -framerate 30 -video_size 320x240 -i "0:0" -vcodec libx264 -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/mylive/room
    
    屏幕截屏

    电脑屏幕和摄像头同时推流

    有时我们直播电脑桌面的时候还要有摄像头,可以用以下命令

    // 实现电脑桌面和摄像头同时直播
    ffmpeg -f avfoundation  -framerate 30 -i "1:0" -f avfoundation -framerate 30 -video_size 320x240 -i "0" -vcodec libx264 -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10'  -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/mylive/room
    
    屏幕截屏

    相关文章

      网友评论

      • 96e4766b589a:最后跟的rtmp://localhost:1935/mylive/room是我的推流的地址
        这个地址怎么来的??
        wosicuanqi:rtmp是批的rtmp协议,
        localhost是你本机地址你也可以改成127.0.0.1,
        1935是端口号,在配置nginx服务的时候设定的,你也可以改成其他的端口
        mylive,是在配置nginx服务的时候application后跟的,你也可以改成其他的
        room,只是一个标识,你也可以更成其他的单词,拉流也应相应更改
        以上后三个值都是可以改的,但你要与推流、服务、拉流三个地方都对应上。

      本文标题:在Mac上自己搭建直播服务器

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