婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > HTML5實現(xiàn)視頻直播功能思路詳解

HTML5實現(xiàn)視頻直播功能思路詳解

熱門標簽:ai電銷機器人連接網(wǎng)關(guān) 漳州人工外呼系統(tǒng)排名 農(nóng)村住宅地圖標注 鶴壁手機自動外呼系統(tǒng)怎么安裝 跟電銷機器人做同事 鄭州電銷外呼系統(tǒng)違法嗎 威海營銷外呼系統(tǒng)招商 濟南辦理400電話 中紳電銷智能機器人

 前言

前不久抽空對目前比較火的視頻直播,做了下研究與探索,了解其整體實現(xiàn)流程,以及探討移動端HTML5直播可行性方案。

發(fā)現(xiàn)目前 WEB 上主流的視頻直播方案有 HLS 和 RTMP,移動 WEB 端目前以 HLS 為主(HLS存在延遲性問題,也可以借助 video.js 采用RTMP),PC端則以 RTMP 為主實時性較好,接下來將圍繞這兩種視頻流協(xié)議來展開H5直播主題分享。

一、視頻流協(xié)議HLS與RTMP

1. HTTP Live Streaming

HTTP Live Streaming(簡稱 HLS)是一個基于 HTTP 的視頻流協(xié)議,由 Apple 公司實現(xiàn),Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari 都能很好的支持 HLS,高版本 Android 也增加了對 HLS 的支持。一些常見的客戶端如:MPlayerX、VLC 也都支持 HLS 協(xié)議。 

HLS 協(xié)議基于 HTTP,而一個提供 HLS 的服務(wù)器需要做兩件事:

編碼:以 H.263 格式對圖像進行編碼,以 MP3 或者 HE-AAC 對聲音進行編碼,最終打包到 MPEG-2 TS(Transport Stream)容器之中;分割:把編碼好的 TS 文件等長切分成后綴為 ts 的小文件,并生成一個 .m3u8 的純文本索引文件;瀏覽器使用的是 m3u8 文件。m3u8 跟音頻列表格式 m3u 很像,可以簡單的認為 m3u8 就是包含多個 ts 文件的播放列表。播放器按順序逐個播放,全部放完再請求一下 m3u8 文件,獲得包含最新 ts 文件的播放列表繼續(xù)播,周而復(fù)始。整個直播過程就是依靠一個不斷更新的 m3u8 和一堆小的 ts 文件組成,m3u8 必須動態(tài)更新,ts 可以走 CDN。一個典型的 m3u8 文件格式如下:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
gear1/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=311111
gear2/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=484444
gear3/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=737777
gear4/prog_index.m3u8

可以看到 HLS 協(xié)議本質(zhì)還是一個個的 HTTP 請求 / 響應(yīng),所以適應(yīng)性很好,不會受到防火墻影響。但它也有一個致命的弱點:延遲現(xiàn)象非常明顯。如果每個 ts 按照 5 秒來切分,一個 m3u8 放 6 個 ts 索引,那么至少就會帶來 30 秒的延遲。如果減少每個 ts 的長度,減少 m3u8 中的索引數(shù),延時確實會減少,但會帶來更頻繁的緩沖,對服務(wù)端的請求壓力也會成倍增加。所以只能根據(jù)實際情況找到一個折中的點。

對于支持 HLS 的瀏覽器來說,直接這樣寫就能播放了:  

<video src=”./bipbopall.m3u8″ height=”300″ width=”400″  preload=”auto” autoplay=”autoplay” loop=”loop” webkit-playsinline=”true”></video>

注意:HLS 在 PC 端僅支持safari瀏覽器,類似chrome瀏覽器使用HTML5 video  

標簽無法播放 m3u8 格式,可直接采用網(wǎng)上一些比較成熟的方案,如:sewise-player、MediaElement、videojs-contrib-hls、jwplayer。

2. Real Time Messaging Protocol

Real Time Messaging Protocol(簡稱 RTMP)是 Macromedia 開發(fā)的一套視頻直播協(xié)議,現(xiàn)在屬于 Adobe。這套方案需要搭建專門的 RTMP 流媒體服務(wù)如 Adobe Media Server,并且在瀏覽器中只能使用 Flash 實現(xiàn)播放器。它的實時性非常好,延遲很小,但無法支持移動端 WEB 播放是它的硬傷。

雖然無法在iOS的H5頁面播放,但是對于iOS原生應(yīng)用是可以自己寫解碼去解析的, RTMP 延遲低、實時性較好。瀏覽器端,HTML5 video

標簽無法播放 RTMP 協(xié)議的視頻,可以通過 video.js 來實現(xiàn)。

<link href=“http://vjs.zencdn.net/5.8.8/video-js.css” rel=“stylesheet”>
<video id=“example_video_1″ class=“video-js vjs-default-skin” controls preload=“auto” width=“640” height=“264” loop=“loop” webkit-playsinline>
<source src=“rtmp://10.14.221.17:1935/rtmplive/home” type=‘rtmp/flv’>
</video>
<script src=“http://vjs.zencdn.net/5.8.8/video.js”></script>
<script>
videojs.options.flash.swf = ‘video.swf’;
videojs(‘example_video_1′).ready(function() {
this.play();
});
</script>

3. 視頻流協(xié)議HLS與RTMP對比

二、直播形式

目前直播展示形式,通常以YY直播、映客直播這種頁面居多,可以看到其結(jié)構(gòu)可以分成三層:  

① 背景視頻層  

② 關(guān)注、評論模塊  

③ 點贊動畫

而現(xiàn)行H5類似直播頁面,實現(xiàn)技術(shù)難點不大,其可以通過實現(xiàn)方式分為:  

① 底部視頻背景使用video視頻標簽實現(xiàn)播放  

② 關(guān)注、評論模塊利用 WebScoket 來實時發(fā)送和接收新的消息通過DOM 和 CSS3 實現(xiàn)  

③ 點贊利用 CSS3 動畫

了解完直播形式之后,接下來整體了解直播流程。  

三、直播整體流程  

直播整體流程大致可分為:

視頻采集端:可以是電腦上的音視頻輸入設(shè)備、或手機端的攝像頭、或麥克風,目前以移動端手機視頻為主。  

直播流視頻服務(wù)端:一臺Nginx服務(wù)器,采集視頻錄制端傳輸?shù)囊曨l流(H264/ACC編碼),由服務(wù)器端進行解析編碼,推送RTMP/HLS格式視頻流至視頻播放端。  

視頻播放端:可以是電腦上的播放器(QuickTime Player、VLC),手機端的native播放器,還有就是 H5 的video標簽等,目前還是以手機端的native播放器為主。

(web前端學習交流群:328058344 禁止閑聊,非喜勿進?。?/p>

四、H5 錄制視頻

對于H5視頻錄制,可以使用強大的 webRTC (Web Real-Time Communication)是一個支持網(wǎng)頁瀏覽器進行實時語音對話或視頻對話的技術(shù),缺點是只在 PC 的 Chrome 上支持較好,移動端支持不太理想。

使用 webRTC 錄制視頻基本流程  

① 調(diào)用 window.navigator.webkitGetUserMedia()  

獲取用戶的PC攝像頭視頻數(shù)據(jù)。  

② 將獲取到視頻流數(shù)據(jù)轉(zhuǎn)換成 window.webkitRTCPeerConnection  

(一種視頻流數(shù)據(jù)格式)。  

③ 利用 WebScoket  

將視頻流數(shù)據(jù)傳輸?shù)椒?wù)端。  

注意:

雖然Google一直在推WebRTC,目前已有不少成型的產(chǎn)品出現(xiàn),但是大部分移動端的瀏覽器還不支持 webRTC(最新iOS 10.0也不支持),所以真正的視頻錄制還是要靠客戶端(iOS,Android)來實現(xiàn),效果會好一些。

WebRTC支持度

WebRTC支持度

iOS原生應(yīng)用調(diào)用攝像頭錄制視頻流程

① 音視頻的采集,利用AVCaptureSession和AVCaptureDevice可以采集到原始的音視頻數(shù)據(jù)流。

② 對視頻進行H264編碼,對音頻進行AAC編碼,在iOS中分別有已經(jīng)封裝好的編碼庫(x264編碼、faac編碼、ffmpeg編碼)來實現(xiàn)對音視頻的編碼。

③ 對編碼后的音、視頻數(shù)據(jù)進行組裝封包。

④ 建立RTMP連接并上推到服務(wù)端。

    五、搭建Ng

五、搭建Nginx+Rtmp直播流服務(wù)

安裝nginx、nginx-rtmp-module

① 先clone nginx項目到本地:

brew tap homebrew/nginx

② 執(zhí)行安裝nginx-rtmp-module

brew install nginx-full –with-rtmp-module

2. nginx.conf配置文件,配置RTMP、HLS

查找到nginx.conf配置文件(路徑/usr/local/etc/nginx/nginx.conf),配置RTMP、HLS。

① 在http節(jié)點之前添加 rtmp 的配置內(nèi)容:

② 在http中添加 hls 的配置

3. 重啟nginx服務(wù)

重啟nginx服務(wù),瀏覽器中輸入 http://localhost:8080,是否出現(xiàn)歡迎界面確定nginx重啟成功。

nginx -s reload

六、直播流轉(zhuǎn)換格式、編碼推流

當服務(wù)器端接收到采集視頻錄制端傳輸過來的視頻流時,需要對其進行解析編碼,推送RTMP/HLS格式視頻流至視頻播放端。通常使用的常見編碼庫方案,如x264編碼、faac編碼、ffmpeg編碼等。鑒于 FFmpeg 工具集合了多種音頻、視頻格式編碼,我們可以優(yōu)先選用FFmpeg進行轉(zhuǎn)換格式、編碼推流。

1.安裝 FFmpeg 工具

brew install ffmpeg

2.推流MP4文件

視頻文件地址:/Users/gao/Desktop/video/test.mp4

推流拉流地址:rtmp://localhost:1935/rtmplive/home,rtmp://localhost:1935/rtmplive/home

//RTMP 協(xié)議流
ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://10.14.221.17:1935/rtmplive/home
//HLS 協(xié)議流
ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://10.14.221.17:1935/hls/test

注意:  

當我們進行推流之后,可以安裝VLC、ffplay(支持rtmp協(xié)議的視頻播放器)本地拉流進行演示

3.FFmpeg推流命令

① 視頻文件進行直播

ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://192.168.1.101:1935/hls/test
ffmpeg -re -i /Users/gao/Desktop/video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -q 10 rtmp://10.14.221.17:1935/hls/test

② 推流攝像頭+桌面+麥克風錄制進行直播

ffmpeg -f avfoundation -framerate 30 -i “1:0″ \-f avfoundation -framerate 30 -video_size 640x480 -i “0” \-c:v libx264 -preset ultrafast \-filter_complex ‘overlay=main_w-overlay_w-10:main_h-overlay_h-10′ -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://192.168.1.101:1935/hls/test

更多命令,請參考:

FFmpeg處理RTMP流媒體的命令大全  

FFmpeg常用推流命令

七、H5 直播視頻播放

移動端iOS和 Android 都天然支持HLS協(xié)議,做好視頻采集端、視頻流推流服務(wù)之后,便可以直接在H5頁面配置 video 標簽播放直播視頻。

<video controls preload=“auto” autoplay=“autoplay” loop=“loop” webkit-playsinline>
<source src=“http://10.14.221.8/hls/test.m3u8″ type=“application/vnd.apple.mpegurl” />
<p class=“warning”>Your browser does not support HTML5 video.</p>
</video>

八、總結(jié)

本文從視頻采集上傳,服務(wù)器處理視頻推流,以及H5頁面播放直播視頻一整套流程,具體闡述了直播實現(xiàn)原理,實現(xiàn)過程中會遇到很多性能優(yōu)化問題。

① H5 HLS 限制必須是H264+AAC編碼。  

② H5 HLS 播放卡頓問題,server 端可以做好分片策略,將 ts 文件放在 CDN 上,前端可盡量做到 DNS 緩存等。  

③ H5 直播為了達到更好的實時互動,也可以采用RTMP協(xié)議,通過video.js 實現(xiàn)播放。

總結(jié)

以上所述是小編給大家介紹的HTML5實現(xiàn)視頻直播功能思路詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

標簽:文山 蘇州 咸陽 營口 紅河 甘南 萍鄉(xiāng) 惠州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《HTML5實現(xiàn)視頻直播功能思路詳解》,本文關(guān)鍵詞  HTML5,實現(xiàn),視頻直播,功能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5實現(xiàn)視頻直播功能思路詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML5實現(xiàn)視頻直播功能思路詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲成人激情自拍| 国产精品久久久久久一区二区三区 | 亚洲欧美怡红院| www国产精品av| 精品国产凹凸成av人导航| 欧美v日韩v国产v| 久久综合色综合88| 国产精品丝袜黑色高跟| 成人欧美一区二区三区视频网页 | 日韩极品在线观看| 全部av―极品视觉盛宴亚洲| 日本成人超碰在线观看| 麻豆久久久久久| 国产成人小视频| 91欧美一区二区| 欧美日韩精品一区二区三区| 欧美一区二区女人| 精品福利一区二区三区| 欧美国产激情一区二区三区蜜月| 久久久久久毛片| 亚洲精品va在线观看| 日本亚洲天堂网| 国产激情91久久精品导航| 色诱亚洲精品久久久久久| 在线综合视频播放| 久久久99精品免费观看| 亚洲美女视频在线观看| 日本亚洲电影天堂| av在线不卡电影| 51久久夜色精品国产麻豆| 国产日韩高清在线| 婷婷国产v国产偷v亚洲高清| 国产成人在线免费观看| 欧美日韩高清在线播放| 欧美激情中文不卡| 日韩高清一级片| 成人精品在线视频观看| 欧美一区二区视频网站| 亚洲男同1069视频| 国产成人免费视频精品含羞草妖精 | 亚洲男人天堂av| 九九精品视频在线看| 91亚洲国产成人精品一区二区三| 在线电影欧美成精品| 国产精品女主播av| 激情五月激情综合网| 欧美日韩国产中文| 中文字幕一区二区三区在线播放| 精品写真视频在线观看| 精品视频免费在线| 中文字幕日韩欧美一区二区三区| 美女视频网站黄色亚洲| 欧美日韩久久一区| 亚洲精品乱码久久久久久日本蜜臀| 国产一区二区中文字幕| 欧美一级二级在线观看| 亚洲一区二区在线观看视频| 99re这里只有精品首页| 中文一区二区完整视频在线观看| 国内外精品视频| 欧美电影免费观看高清完整版在线 | 精品国产一区二区三区忘忧草 | 精品国产一区a| 日日噜噜夜夜狠狠视频欧美人| bt欧美亚洲午夜电影天堂| 国产日韩v精品一区二区| 国内精品国产三级国产a久久| 制服视频三区第一页精品| 一区二区三区高清在线| 欧美伊人久久久久久久久影院| 中文字幕一区二区在线播放| eeuss鲁片一区二区三区在线观看| 久久久777精品电影网影网 | 欧美一级黄色片| 五月天中文字幕一区二区| 欧美日韩综合不卡| 午夜欧美视频在线观看| 欧美精三区欧美精三区| 日韩电影免费在线| 欧美sm极限捆绑bd| 国产一区999| 国产片一区二区| 91在线视频观看| 亚洲综合成人在线| 337p亚洲精品色噜噜| 美女脱光内衣内裤视频久久影院| 精品久久久久久久人人人人传媒| 精品伊人久久久久7777人| 国产亚洲精品资源在线26u| 成人免费av网站| 亚洲精品综合在线| 欧美肥胖老妇做爰| 国模大尺度一区二区三区| 久久九九99视频| 91免费看片在线观看| 五月天激情综合| 久久久久久久久一| 色欧美片视频在线观看| 亚洲高清免费观看| www成人在线观看| 一本久道久久综合中文字幕 | 色菇凉天天综合网| 日本最新不卡在线| 亚洲欧洲成人自拍| 欧美一级专区免费大片| av在线免费不卡| 久草热8精品视频在线观看| 国产精品美女久久久久高潮| 欧美乱妇23p| voyeur盗摄精品| 日韩国产一区二| 亚洲女人的天堂| 国产女主播一区| 8x8x8国产精品| 91亚洲永久精品| 国产美女精品一区二区三区| 亚洲bt欧美bt精品777| 欧美激情综合五月色丁香| 欧美电影在线免费观看| 91同城在线观看| 国产成人鲁色资源国产91色综| 无吗不卡中文字幕| 亚洲乱码中文字幕| 欧美激情中文字幕| 精品久久五月天| 欧美在线制服丝袜| av不卡免费电影| 国产一区日韩二区欧美三区| 日韩电影免费在线观看网站| 综合久久久久久久| 国产精品私房写真福利视频| 欧美精品一区二区精品网| 欧美午夜精品一区二区三区| 99免费精品视频| 粉嫩高潮美女一区二区三区| 美国三级日本三级久久99| 香蕉成人啪国产精品视频综合网 | 国产一区二区三区精品视频| 日韩精品成人一区二区在线| 亚洲尤物在线视频观看| 亚洲女爱视频在线| 亚洲精品国产成人久久av盗摄 | 最近日韩中文字幕| 国产欧美日韩在线| 久久久久久久久99精品| 久久综合成人精品亚洲另类欧美| 欧美高清视频一二三区 | caoporm超碰国产精品| 成人免费视频app| 成人h动漫精品一区二区| 国产91丝袜在线播放0| 不卡一区中文字幕| 91麻豆免费看| 欧美日韩精品系列| 日韩午夜精品电影| 久久综合久久综合亚洲| 久久久99免费| 亚洲色图欧洲色图| 性欧美疯狂xxxxbbbb| 麻豆精品新av中文字幕| 国产盗摄女厕一区二区三区| 粉嫩av亚洲一区二区图片| 成人午夜av在线| 欧美视频在线一区| 欧美成人福利视频| 国产精品久久久久久久裸模| 亚洲精品水蜜桃| 免费在线观看不卡| 成人深夜视频在线观看| 91精彩视频在线| 欧美电视剧在线观看完整版| 中文字幕国产一区| 天天综合网天天综合色| 国产一区啦啦啦在线观看| 91免费视频观看| 日韩欧美视频一区| 国产日韩在线不卡| 肉丝袜脚交视频一区二区| 韩国精品主播一区二区在线观看 | 亚洲v中文字幕| 国产精品亚洲人在线观看| 色天天综合久久久久综合片| 欧美一区日本一区韩国一区| 国产午夜精品久久久久久免费视 | 综合色天天鬼久久鬼色| 日韩高清在线电影| 99视频一区二区三区| 欧美成人免费网站| 亚洲国产成人tv| 成人激情开心网| 精品福利av导航| 肉肉av福利一精品导航| 97久久超碰精品国产| 久久婷婷久久一区二区三区| 午夜精品久久久久久| 91天堂素人约啪| 国产精品久久国产精麻豆99网站| 蜜桃精品在线观看| 欧美性做爰猛烈叫床潮| 亚洲视频在线一区观看|