在Mac上自己搭建直播服務(wù)器

在Mac上安裝nginx

為什么要在Mac上安裝nginx,是因?yàn)樵趎ginx上有支持rtmp協(xié)議的模塊,比較容易實(shí)現(xiàn)rtmp協(xié)議。其他其服務(wù)只要能實(shí)現(xiàn)rtmp協(xié)議都可以,但由于nginx實(shí)現(xiàn)起來(lái)方便所以這里使用nginx來(lái)做直播的服務(wù)。

我們用brew命令來(lái)安裝nginx,請(qǐng)先確保你的Mac上已經(jīng)安裝了homebrew,如果沒(méi)有安裝可以訪問(wèn)homebrew的官網(wǎng)https://brew.sh/index_zh-cn.html 下載安裝,也可以在終端中運(yùn)行以下命令安裝:

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

安裝完homebrew后在終端中運(yùn)行以下命令安裝nginx。

// 將nginx下載到本地
 brew tap homebrew/nginx
// 安裝nginx服務(wù)器
 brew install nginx-full --with-rtmp-module
// 開(kāi)啟服務(wù)器
 nginx

配置nginx服務(wù)

// 用vim打開(kāi)配置文件
vim /usr/local/etc/nginx/nginx.conf
rtmp {
    server {
        listen 1935; // 設(shè)置對(duì)應(yīng)的端口
        application mylive { 
            live on;
            record off; // 不記錄數(shù)據(jù)
        }
    }
 }
// 添加完信息要重新加載文件才能用
nginx -s reload

安裝FFmpeg

其實(shí)經(jīng)過(guò)以上步驟直播服務(wù)已經(jīng)搭建好了,我們以下的操作都是驗(yàn)證我們的成果的,我們要安裝一個(gè)FFmpeg的第三方庫(kù)用來(lái)實(shí)現(xiàn)推流。

// 安裝ffmpeg
 brew install ffmpeg

實(shí)現(xiàn)對(duì)視頻文件的直播的推流

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

也可以將里面的參數(shù)簡(jiǎn)寫(xiě)

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是你視頻文件的路徑,請(qǐng)根據(jù)自己視頻文件的位置更改。最后跟的rtmp://localhost:1935/mylive/room是我的推流的地址?,F(xiàn)在運(yùn)行命令后如果出現(xiàn)如下圖推流的數(shù)據(jù)包信息就說(shuō)明推流成功了。

電腦截屏

實(shí)現(xiàn)拉流

為了方便測(cè)試我們利用vlc播放器來(lái)實(shí)現(xiàn)拉流,Mac端可以在vlc的官網(wǎng)下載Mac端的播放器,對(duì)于iOS端可以在iOS手機(jī)的AppStore上下載vlc播放器。
以手機(jī)為例,在手機(jī)的vlc播放器的網(wǎng)絡(luò)串流內(nèi)輸入拉流的地址,其實(shí)和上面推流是同一個(gè)地址只是這里要把localhost替換成Mac電腦上的ip地址(在Mac上實(shí)現(xiàn)拉流可不用替換),并確保Mac電腦與手機(jī)在同一個(gè)局域網(wǎng)內(nèi)。

// 在vlc播放器中輸入以下地址就可看到拉流視頻,如果在手機(jī)上記錄把localhost替換成Mac上的ip地址,
rtmp://localhost:1935/mylive/room
屏幕截屏
屏幕截屏
屏幕截屏

實(shí)現(xiàn)電腦桌面直播

我們還可以將電腦桌面的圖像推流傳出去。不過(guò)首先我們得先獲取電腦上的輸入硬件信息,在終端執(zhí)行以下命令獲取硬件信息,以確定用哪個(gè)硬件作為視頻圖像的輸入。

// 獲取Mac上的輸入設(shè)備的列表
ffmpeg -f avfoundation -list_devices true -i ""
Mac電腦可輸入設(shè)備信息.png

我們看到電腦屏幕的序號(hào)是1,所以我們執(zhí)行以下命令。

// 向服務(wù)器電腦桌面的圖像信息
ffmpeg -f avfoundation -i "1" -vcodec libx264  -f flv rtmp://localhost:1935/mylive/room

上面的方法只有圖像沒(méi)有聲音,想要聲音可用以下命令

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

用電腦的攝像頭獲取圖像并進(jìn)行推流

總感覺(jué)前面不像一個(gè)完整的直播是吧?因?yàn)闆](méi)有用到攝像頭,下面我們就用電腦的攝像頭獲取圖像然后進(jìn)行推流??梢杂靡韵旅?/p>

// 設(shè)置幀率為30幀,圖像大小為320x240
ffmpeg -f avfoundation -framerate 30 -video_size 320x240 -i "0" -vcodec libx264 -f flv rtmp://localhost:1935/mylive/room

上面的命令是沒(méi)有聲音的,下面是加上聲音的命令

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
屏幕截屏

電腦屏幕和攝像頭同時(shí)推流

有時(shí)我們直播電腦桌面的時(shí)候還要有攝像頭,可以用以下命令

// 實(shí)現(xiàn)電腦桌面和攝像頭同時(shí)直播
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
屏幕截屏
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容