5 分鐘完成 Nginx 直播服務(wù)部署(直播 + 分流 + 畫面水印)

來自:掘金,作者:碼怪魯迅

鏈接:https://juejin.im/post/5e6ba67651882549652d67ec

前言

最近幫朋友的公司部署了一套分流+水印的直播系統(tǒng)

順手打包成docker鏡像郭脂,方便大家需要用到的時(shí)候開箱即用稽荧,不需要百度一些零碎的文章也可做簡單的直播服務(wù)橘茉,只需調(diào)整配置文件便可達(dá)到你的需求.

需求:將直播流分流到兩個(gè)云廠商的直播云工腋,一個(gè)有水印,一個(gè)無水印畅卓。使用hls播放

朋友需求的拓?fù)涫疽鈭D:

image

當(dāng)前拓?fù)涫疽鈭D(阿某云和騰訊云不方便放出推流和拉流地址擅腰,有興趣的同學(xué)可以去申請(qǐng)玩一下)

image

基于docker-nginx-rtmp進(jìn)行配置部署,這篇文章的意義是實(shí)現(xiàn)直播分流及直播畫面水印.

  • Nginx 1.16.1(從源代碼編譯的穩(wěn)定版本)

  • nginx-rtmp-module 1.2.1(從源代碼編譯)

  • ffmpeg 4.2.1(從源代碼編譯)

  • 已配置好的nginx.conf

  • 水印圖片存放位置(容器內(nèi)):

    /opt/images/logo.png

  • 本機(jī)

  • 直播云(例:

    阿某云翁潘、騰訊云趁冈、ucloud)

  • 只支持1920*1080(如需支持其他分辨率可參考nginx.conf)

  • 實(shí)現(xiàn)兩路分流

  • 實(shí)現(xiàn)直播水印效果

部署運(yùn)行

服務(wù)器

1、安裝docker(Centos7,其他系統(tǒng)請(qǐng)發(fā)揮你的搜索功能)

$ yum -y install docker #安裝docker
$ systemctl enable docker #配置開機(jī)啟動(dòng)
$ systemctl start docker #啟動(dòng)docker服務(wù)

2拜马、拉取docker鏡像并運(yùn)行

#如果速度慢可使用阿某云:docker pull registry.cn-shenzhen.aliyuncs.com/ar414/nginx-rtmp-ffmpeg:v1
$ docker pull ar414/nginx-rtmp-ffmpeg
$ docker run -it -d -p 1935:1935 -p 8080:80 --rm ar414/nginx-rtmp-ffmpeg

3渗勘、推流地址(Stream live content to):

rtmp://<server ip>:1935/stream/$STREAM_NAME

4、SSL證書

將證書復(fù)制到容器內(nèi)俩莽,并在容器內(nèi)修改nginx.conf配置文件旺坠,然后重新commit(操作容器內(nèi)的文件都需要重新commit才會(huì)生效)

#/etc/nginx/nginx.conf
listen 443 ssl;
ssl_certificate     /opt/certs/example.com.crt;
ssl_certificate_key /opt/certs/example.com.key;

5、OBS配置

  • Stream Type: Custom Streaming Server

  • URL: rtmp://<server ip>:1935/stream

  • Stream Key:ar414

  • image

6扮超、觀看測試

HLS播放測試工具:player.alicdn.com/aliplayer/s… (如果配置了證書則使用https)

7取刃、HLS播放地址

RTMP測試工具:PotPlayer

8、RTMP播放地址

  • 無水映鏊ⅰ:

    rtmp://<server ip>:1935/stream/ar414

    image
  • 有水予盗啤:

    需要分流到其他服務(wù)器上

:page_facing_up:配置文件簡解(分流、水印及水印位置)

完整配置文件:

https://github.com/ar414-com/nginx-rtmp-ffmpeg-conf/blob/master/nginx.conf

9馁龟、RTMP配置

rtmp {
    server {
        listen 1935; #端口
        chunk_size 4000;
        #RTMP 直播流配置
        application stream {
            live on;
            #添加水印及分流崩侠,這次方便測試直接分流到當(dāng)前服務(wù)器hls
            #實(shí)際生產(chǎn)一般都分流到直播云(騰訊云、阿某云坷檩、ucloud)
            #只需把需要分流的地址替換即可
            #有水尤匆簟:rtmp://localhost:1935/hls/$name_wm
            #無水印:rtmp://localhost:1935/hls/$name
            exec ffmpeg -i rtmp://localhost:1935/stream/$name -i /opt/images/ar414.png
              -filter_complex "overlay=10:10,split=1[ar414]"
              -map '[ar414]' -map 0:a -s 1920x1080 -c:v libx264 -c:a aac -g 30 -r 30 -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost:1935/hls/$name_wm
              -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 2500k -f flv -g 30 -r 30 -s 1920x1080 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name;
        }

        application hls {
            live on;
            hls on;
            hls_fragment 5;
            hls_path /opt/data/hls;
        }
    }
}

10淌喻、如果需要推多個(gè)直播云則復(fù)制多個(gè) exec ffmpeg即可 如下:

application stream {
    live on;
    #分流至本機(jī)hls           
    exec ffmpeg -i rtmp://localhost:1935/stream/$name -i /opt/images/ar414.png
      -filter_complex "overlay=10:10,split=1[ar414]"
      -map '[ar414]' -map 0:a -s 1920x1080 -c:v libx264 -c:a aac -g 30 -r 30 -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost:1935/hls/$name_wm
      -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 2500k -f flv -g 30 -r 30 -s 1920x1080 -preset superfast -profile:v baseline rtmp://localhost:1935/hls/$name;

    #分流至騰訊云
    exec ffmpeg -i rtmp://localhost:1935/stream/$name -i /opt/images/ar414.png
      -filter_complex "overlay=10:10,split=1[ar414]"
      -map '[ar414]' -map 0:a -s 1920x1080 -c:v libx264 -c:a aac -g 30 -r 30 -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://live-push.tencent.com/stream/$name_wm
      -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 2500k -f flv -g 30 -r 30 -s 1920x1080 -preset superfast -profile:v baseline rtmp://live-push.tencent.com/stream/$name;

    #分流至阿某云
    exec ffmpeg -i rtmp://localhost:1935/stream/$name -i /opt/images/ar414.png
      -filter_complex "overlay=10:10,split=1[ar414]"
      -map '[ar414]' -map 0:a -s 1920x1080 -c:v libx264 -c:a aac -g 30 -r 30 -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://live-push.aliyun.com/stream/$name_wm
      -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 2500k -f flv -g 30 -r 30 -s 1920x1080 -preset superfast -profile:v baseline rtmp://live-push.aliyun.com/stream/$name;
}

11僧家、水印位置

水印位置

水印圖片位置 overlay值
左上角 10:10
右上角 main_w-overlay_w-10:10
左下角 10:main_h-overlay_h-10
右下角 main_w-overlay_w-10 : main_h-overlay_h-10

overlay參數(shù)

參數(shù) 說明
main_w 視頻單幀圖像寬度(當(dāng)前配置文件1920)
main_h 視頻單幀圖像高度(當(dāng)前配置文件1080)
overlay_w 水印圖片的寬度
overlay_h 水印圖片的高度
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市裸删,隨后出現(xiàn)的幾起案子八拱,更是在濱河造成了極大的恐慌,老刑警劉巖涯塔,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肌稻,死亡現(xiàn)場離奇詭異,居然都是意外死亡匕荸,警方通過查閱死者的電腦和手機(jī)爹谭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榛搔,“玉大人诺凡,你說我怎么就攤上這事东揣。” “怎么了腹泌?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵嘶卧,是天一觀的道長。 經(jīng)常有香客問我凉袱,道長芥吟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任专甩,我火速辦了婚禮钟鸵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涤躲。我一直安慰自己棺耍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布篓叶。 她就那樣靜靜地躺著烈掠,像睡著了一般羞秤。 火紅的嫁衣襯著肌膚如雪缸托。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天瘾蛋,我揣著相機(jī)與錄音俐镐,去河邊找鬼。 笑死哺哼,一個(gè)胖子當(dāng)著我的面吹牛佩抹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播取董,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼棍苹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茵汰?” 一聲冷哼從身側(cè)響起枢里,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹂午,沒想到半個(gè)月后栏豺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豆胸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年奥洼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晚胡。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灵奖,死狀恐怖嚼沿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓷患,我是刑警寧澤伏尼,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站尉尾,受9級(jí)特大地震影響爆阶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沙咏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一辨图、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肢藐,春花似錦故河、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至痘煤,卻和暖如春凑阶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背衷快。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工宙橱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蘸拔。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓师郑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親调窍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宝冕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容