整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          不會(huì)搭建視頻直播服務(wù)?教你十分鐘實(shí)現(xiàn)視頻推流拉流服務(wù)

          不會(huì)搭建視頻直播服務(wù)?教你十分鐘實(shí)現(xiàn)視頻推流拉流服務(wù)

          著5G網(wǎng)絡(luò)的悄然到來,視頻服務(wù)獲將成為下一個(gè)流量風(fēng)口,作為程序員的我們當(dāng)然也不能落后,下面開始學(xué)習(xí)如何搭建一個(gè)視頻服務(wù)器吧。

          環(huán)境介紹

          本教程是基于window10 X 64位系統(tǒng)的

          nginx
          nginx-rtmp-module
          obs
          sublime
          vlc播放器
          

          安裝調(diào)試nginx

          windows 版的nginx 直接解壓至文件夾即可

          cmd 進(jìn)入nginx 啟動(dòng)nginx

          nginx.exe -c conf\nginx-win.conf
          

          默認(rèn)配置是

           listen 80;#監(jiān)聽80端口
           server_name 127.0.0.1;
          

          啟動(dòng)后訪問 127.0.0.1 出現(xiàn)如下頁(yè)面,說明啟動(dòng)成功

          配置rtmp推流模塊

          用sublime打開nginx\conf目錄下的nginx-win-rtmp.conf配置文件

          添加如下配置

          rtmp {
           server {
           listen 1935;
           chunk_size 4000;
           application live {
           live on;
           hls on; #開啟hls
           hls_path D:\\temp;#視頻切片地址
           hls_fragment 15s ;
           wait_key on; #對(duì)視頻切片進(jìn)行保護(hù),這樣就不會(huì)產(chǎn)生馬賽克了。
           hls_playlist_length 60s; #總共可以回看的事件,這里設(shè)置的是1分鐘。
           hls_continuous on; #連續(xù)模式。
           hls_cleanup on; #對(duì)多余的切片進(jìn)行刪除。
           hls_nested on; #嵌套模式。
           hls_fragment_naming system;#設(shè)置切片時(shí)間戳
           }
           
           }
          }
          

          在http server中添加如下配置

          location /live { #這里也是需要添加的字段。
           types {
           application/x-mpegURL
           video/mp2t ts;
           }
           alias D:\\temp;
           expires -1; 
           add_header Cache-Control no-cache;
           } 
           location /stat {
           rtmp_stat all;
           rtmp_stat_stylesheet stat.xsl;
           }
           location /stat.xsl {
           root nginx-rtmp-module/;
           }
           
           location /control {
           rtmp_control all;
           }
          

          保存配置文件

          重新啟動(dòng)nginx

          nginx.exe -c conf\nginx-win-rtmp.conf
          

          使用obs軟件推流

          打開obs軟件調(diào)試好場(chǎng)景后,進(jìn)入設(shè)置頁(yè)面

          設(shè)置推流地址

          關(guān)閉windows防火墻,防止推流端口被屏蔽

          點(diǎn)擊主頁(yè)開始推流

          拉流

          我們使用vlc視頻播放器進(jìn)行拉流測(cè)試

          1、設(shè)置拉流地址

          rtmp://127.0.0.1:1935/live/home
          

          設(shè)置成功后點(diǎn)擊播放視頻能正常播放則說明視頻服務(wù)器搭建成功

          播放成功

          至此視頻直播服務(wù)器搭建完成了

          配置好的nginx 服務(wù)已打包上傳至網(wǎng)盤

          關(guān)注后,私信回復(fù)“視頻服務(wù)”即可獲取

          下載后直接解壓,cmd進(jìn)入nginx目錄,輸入
          nginx.exe -c conf\nginx-win-rtmp.conf
          啟動(dòng)服務(wù)
          

          服務(wù)啟動(dòng)后訪問相關(guān)web頁(yè)面,直接訪問即可播放直播視頻

          近,國(guó)家政策開始鼓勵(lì)“地?cái)偨?jīng)濟(jì)”,一時(shí)間各家企業(yè)平臺(tái)紛紛推出地?cái)偡龀终撸財(cái)偢拍罟身槃?shì)大漲,地?cái)偵鷳B(tài)及配套商品也開始走俏,甚至在網(wǎng)絡(luò)上也涌現(xiàn)出各種“新攤主速成攻略”,萬億的煙火經(jīng)濟(jì)儼然已經(jīng)走上風(fēng)口。

          實(shí)際上,早就有人已經(jīng)在網(wǎng)上“擺地?cái)偂绷耍蔷褪侵辈ж洠∈艿揭咔榈挠绊懀€下實(shí)體紛紛停擺,直播帶貨受到了前所未有的追捧,企業(yè)們紛紛選擇通過直播的形式,來提升品牌形象、保持與用戶的互動(dòng)并完成商品的銷售。

          那么問題就來了,在搭建直播平臺(tái)或者應(yīng)用的過程中,都需要關(guān)注哪些技術(shù)呢?CDN又對(duì)直播起到什么作用呢?

          一個(gè)直播系統(tǒng)都包括什么?

          通常整個(gè)直播的系統(tǒng)可能包括:推流端經(jīng)過一次邊緣節(jié)點(diǎn)的加速,將視頻直播流推到直播中心,在直播中心完成一系列轉(zhuǎn)碼、截圖、錄制、水印等處理,然后視頻流再經(jīng)過CDN分發(fā),分發(fā)到不同的播放端,播放端有不同的SDK進(jìn)行秒開、弱網(wǎng)等優(yōu)化動(dòng)作。

          直播系統(tǒng)中的推流與播放

          對(duì)于視頻直播來講,最重要的兩個(gè)環(huán)節(jié),一個(gè)是推流,一個(gè)是播放。推流一般采用RTMP協(xié)議,常用的推流端包括OBS、手機(jī)APP、FFmpeg等。播放除了采用RTMP協(xié)議,還可以采用HTTP FLV和HLS協(xié)議,RTMP和HTTP FLV是流式傳輸,HLS是文件加速傳輸,常見的播放端包括:Flash / VLC / HTML5 / 手機(jī)App等等。對(duì)于阿里云直播系統(tǒng)來講,大部分直播分發(fā)都是通過流式傳輸完成的,只有一少部分量是使用文件加速分發(fā)完成的。

          流式分發(fā)與CDN直播系統(tǒng)

          其實(shí)在直播場(chǎng)景中,不管是推流還是播放,流式分發(fā)都是長(zhǎng)連接的,一場(chǎng)直播可能5個(gè)小時(shí),推流在這5小時(shí)內(nèi)不會(huì)中斷。對(duì)于播放器來講,服務(wù)器端獲取到的是一幀一幀的音視頻數(shù)據(jù),不管是什么傳輸協(xié)議,都是采用FLV tag來封裝。每一幀音頻或者視頻,都會(huì)有一個(gè)時(shí)間戳的屬性。

          視頻直播流會(huì)傳輸音頻幀和視頻幀,對(duì)于音頻幀來講,它每一幀都可以獨(dú)立解碼,播放器從服務(wù)器獲取到任何一幀音頻幀之后,都可以獨(dú)立渲染,聽到聲音。而視頻分為視頻關(guān)鍵幀和非關(guān)鍵幀,關(guān)鍵幀可以獨(dú)立解碼渲染,播放器拿到后可以直接看到畫面,一般10K以上甚至幾十K;其他非關(guān)鍵幀解碼依賴于前面的一些視頻幀,播放器會(huì)根據(jù)前面的幀和這一幀來解碼產(chǎn)生畫面,非關(guān)鍵幀一般大小是幾K甚至不到1K。對(duì)于播放器來說,服務(wù)器一般會(huì)從視頻關(guān)鍵幀開始發(fā)送,這樣才不會(huì)產(chǎn)生花屏。

          對(duì)于節(jié)點(diǎn)上直播服務(wù)器存儲(chǔ)的內(nèi)容,如果是文件加速,節(jié)點(diǎn)上存儲(chǔ)的內(nèi)容很明確,就是文件數(shù)據(jù), URL不變的話文件數(shù)據(jù)內(nèi)容也不變。但是對(duì)于直播來講,傳輸?shù)木褪菐瑪?shù)據(jù),緩存的也是不斷變化的幀序列數(shù)據(jù)。下面的圖里可以看到,當(dāng)前的服務(wù)器緩存了V1-V3五幀數(shù)據(jù),當(dāng)V4這個(gè)關(guān)鍵幀出現(xiàn)了,服務(wù)器把之前的丟掉,開始緩存V4開始的音視頻數(shù)據(jù),以這個(gè)策略保證過來的播放端都是當(dāng)前最新的數(shù)據(jù)。一般直播服務(wù)器都是用這個(gè)策略來進(jìn)行服務(wù)器緩存的。

          直播平臺(tái)面臨的挑戰(zhàn)?

          1、 前面也說了,直播系統(tǒng)包含推流、轉(zhuǎn)碼、分發(fā)、播放等各個(gè)環(huán)境,經(jīng)歷了冗長(zhǎng)復(fù)雜的網(wǎng)絡(luò)環(huán)境,尤其是當(dāng)業(yè)務(wù)場(chǎng)景逐漸豐富起來之后,功能需求也越來越多2、 一些關(guān)鍵指標(biāo)的提升,比如:卡頓率、打開速度、流暢度、回源率等,任何指標(biāo)的下降都可能會(huì)導(dǎo)致整個(gè)應(yīng)用的用戶體驗(yàn)下降,影響直播效果3、 直播平臺(tái)經(jīng)常會(huì)面臨業(yè)務(wù)突發(fā),數(shù)十萬甚至數(shù)百萬用戶的同時(shí)在線,對(duì)服務(wù)器和帶寬考驗(yàn)十分巨大

          直播平臺(tái)為什么要使用CDN?

          1、減少卡頓率,提升用戶體驗(yàn)

          直播,尤其是電商直播,對(duì)網(wǎng)絡(luò)抖動(dòng)十分敏感,稍有問題就會(huì)出現(xiàn)卡頓、花屏等問題,嚴(yán)重影響用戶體驗(yàn),甚至直接掉線影響銷售。CDN借助負(fù)載均衡系統(tǒng)能夠?qū)?nèi)容推送到接近用戶的邊緣節(jié)點(diǎn),使得用戶就近取得資源,可以大大提升訪問效率。

          2、業(yè)務(wù)峰值來臨的時(shí)候,為流量高峰護(hù)航

          在確保直播流暢度上,全球覆蓋的CDN節(jié)點(diǎn)和精準(zhǔn)調(diào)度系統(tǒng)缺一不可。CDN節(jié)點(diǎn)是采用分布式架構(gòu),節(jié)點(diǎn)資源與帶寬儲(chǔ)備就代表了能夠覆蓋的用戶的量級(jí)和廣度。當(dāng)突發(fā)峰值特別高的時(shí)候,CDN系統(tǒng)會(huì)確保用更精準(zhǔn)的調(diào)度策略,比如DNS、IP調(diào)度,來降低對(duì)直播的影響。打比方有一個(gè)裝了很多冰塊和水的杯子,如果我們要把杯子里面的狹小空間全部用上,我們先要把冰塊放進(jìn)去,再倒液態(tài)水。在智能調(diào)度的場(chǎng)景里,把“固體”和“液體”結(jié)合起來考慮,才能做到所有的節(jié)點(diǎn)、水位的精準(zhǔn)控制,實(shí)現(xiàn)更精準(zhǔn)的調(diào)度。

          所以,選擇節(jié)點(diǎn)和帶寬資源覆蓋廣泛,綜合實(shí)力強(qiáng),質(zhì)量有保證,具備大型項(xiàng)目最佳實(shí)踐的CDN服務(wù)提供商對(duì)直播帶貨平臺(tái)來說至關(guān)重要。想要在云上開啟“地?cái)偨?jīng)濟(jì)”,阿里云CDN,了解一下~

          阿里云全速重構(gòu)年中大促中,CDN/全站加速、視頻直播、視頻點(diǎn)播等多款產(chǎn)品都推出限時(shí)折扣,點(diǎn)擊登陸活動(dòng)頁(yè)面了解優(yōu)惠詳情

          用工具:

          ffmpeg音視頻編解碼

          ffplay音視頻播放工具

          搭建流媒體服務(wù)器

          準(zhǔn)備流媒體服務(wù)器linux

          準(zhǔn)備并安裝Nginx服務(wù)

          配置RTMP并啟動(dòng)Nginx服務(wù)

          1.linxu安裝Nginx和rtmp

          1.先下載安裝 nginx 和 nginx-rtmp 編譯依賴工具

          sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

          2. 創(chuàng)建一個(gè)工作目錄,并切換到工作目錄

          mkdir ~/working

          cd ~/working

          3. 下載 nginx 和 nginx-rtmp源碼

          wget http://nginx.org/download/nginx-1.7.5.tar.gz

          wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

          4. 安裝unzip工具,解壓下載的安裝包

          sudo apt-get install unzip

          5.解壓 nginx 和 nginx-rtmp安裝包

          tar -zxvf nginx-1.7.5.tar.gz

          unzip master.zip

          6. 切換到 nginx-目錄

          cd nginx-1.7.5

          7.添加 nginx-rtmp 模板編譯到 nginx

          ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master

          8.編譯安裝

          make

          sudo make install

          9. 安裝nginx init 腳本

          sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx

          sudo chmod +x /etc/init.d/nginx

          sudo update-rc.d nginx defaults

          10. 啟動(dòng)和停止nginx 服務(wù),生成配置文件

          sudo service nginx start

          sudo service nginx stop

          11. 安裝 FFmpeg

          sudo apt-add-repository ppa:jon-severinsson/ffmpeg

          sudo apt-get update

          sudo apt-get install ffmpeg

          原文PPA不可用,源碼安裝參見

          http://blog.csdn.net/redstarofsleep/article/details/45092145

          12. 配置 nginx-rtmp 服務(wù)器

          打開 /usr/local/nginx/conf/nginx.conf

          在末尾添加如下 配置

          rtmp {

          server {

          listen 1935; #監(jiān)聽的端口

          chunk_size 4000;

          application hls { #rtmp推流請(qǐng)求路徑

          live on;

          hls on;

          hls_path /usr/local/nginx/html/hls;

          hls_fragment 5s;

          }

          }

          }

          13. 保存上面配置文件,然后重新啟動(dòng)nginx服務(wù)

          sudo service nginx restart

          14. 如果你使用了防火墻,請(qǐng)?jiān)试S端口 tcp 1935

          用netstat -an | grep 1935

          出現(xiàn)以下信息代表則代表啟動(dòng)nginx/rtmp成功

          netstat -an| grep 1935

          tcp 0 0 0.0.0.0:1935 0.0.0.0:* LISTEN

          16: 使用 客戶端,使用 rtmp協(xié)議進(jìn)行視頻實(shí)時(shí)采集

          ffmpeg直播命令:

          推流:ffmpeg -re -i 1.mp4 -c copy -f flv rtmp://xxx.xxx.xxx.xxx:1935/hls/1.mp4

          拉流:ffmpeg -i rtmp://xxx.xxx.xxx.xxx/1.mp4 -c copy dump.flv

          播放音視頻:ffplay rtmp://xxx.xxx.xxx.xxx/hls

          17.下載一個(gè)OBS(視頻直播客戶端)

          (1)配置url

          (2)推流

          (3)服務(wù)器播放

          ffplay rtmp://xxx.xxx.xxx.xxx/hls

          18: 關(guān)于 nginx-rtmp 更多配置

          https://github.com/arut/nginx-rtmp-module/wiki/Directives

          flashplay播放器地址

          http://bbs.chinaffmpeg.com/1.swf

          總結(jié)關(guān)注+私信“資料”免費(fèi)獲取視頻資料C/C++,Linux,,Nginx, 流媒體 ffmpeg,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK等...........


          主站蜘蛛池模板: 久久国产精品一区| 精品不卡一区二区| 国产成人高清视频一区二区 | 国偷自产视频一区二区久| 久久国产精品免费一区二区三区| 成人免费一区二区无码视频| 美女福利视频一区| 亚洲AV成人精品日韩一区18p| 亚洲第一区视频在线观看| 精品国产日产一区二区三区| 国产一区二区精品久久岳√| 呦系列视频一区二区三区| 亚洲国产美国国产综合一区二区 | 极品少妇一区二区三区四区| 污污内射在线观看一区二区少妇| 精品久久国产一区二区三区香蕉| 国产一区中文字幕| 国产在线观看一区二区三区 | 中文字幕精品无码一区二区三区| 天码av无码一区二区三区四区 | 国产AV午夜精品一区二区入口| 国产美女口爆吞精一区二区| 日韩精品人妻av一区二区三区| 日韩AV无码一区二区三区不卡| 在线一区二区观看| 国产成人高清亚洲一区91| 国产成人一区二区精品非洲| 精品国产一区二区三区久| 日本v片免费一区二区三区| 国产综合视频在线观看一区| 精品一区二区三区四区电影| 一区二区国产在线观看| 一区二区不卡视频在线观看| 国产精品99无码一区二区| 国产在线精品一区二区高清不卡| 无码毛片一区二区三区中文字幕| 无码人妻一区二区三区免费视频| 精品亚洲一区二区三区在线播放| 成人精品一区二区三区中文字幕| 久久久久无码国产精品一区 | 色综合视频一区二区三区44|