Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 又大又粗好舒服好爽视频,国产成人精品高清免费,深夜福利一区

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

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

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

          程序員的福利-騰訊重要開源框架匯總



          、Android 熱修復(fù)框架 Tinker★Star 8967

          Tinker是Android的熱修復(fù)解決方案庫(kù),它支持dex,庫(kù)和資源更新,無需重新安裝apk。有一些問題,Tinker不能動(dòng)態(tài)更新:

          無法更新AndroidManifest.xml,例如添加Android組件。;不支持一些三星型號(hào)與os版本的android-21;由于GooglePlay開發(fā)者分發(fā)協(xié)議,我們無法動(dòng)態(tài)更新我們的apk(詳情:

          https://github.com/Tencent/tinker)

          2、微信客戶端跨平臺(tái)組件Mars★Star 8874

          Mars是微信官方的終端基礎(chǔ)組件,目前已接入微信 Android、iOS、Mac、Windows、WP 等客戶端。主要包括以下幾個(gè)部分:

          ●comm:可以獨(dú)立使用的公共庫(kù),包括socket,線程,消息隊(duì)列,協(xié)程等;

          ●Xlog軟件:日志組件,可靠性高,高性能

          ●SDT:網(wǎng)絡(luò)診斷組件

          ●STN:信令分發(fā)網(wǎng)絡(luò)模塊,也是Mars最主要的部分。圖。(詳情:https://github.com/Tencent/mars)

          3、微信移動(dòng)數(shù)據(jù)庫(kù)框架 WCDB(WeChatDatabase) ★Star3123

          WCDB(WeChatDatabase)是一個(gè)高效、完整、易用的移動(dòng)數(shù)據(jù)庫(kù)框架,基于SQLCipher,支持iOS, macOS和Android,WCDB于6月9日正式對(duì)外開源。

          開源地址:https://github.com/Tencent/wcdb

          WCDB for iOS/macOS 基本功能

          ·WINQ(WCDB語(yǔ)言集成查詢): 通過WINQ,開發(fā)者無須為了拼接SQL的字符串而寫一大坨膠水代碼。

          ·ORM(Object Relational Mapping):WCDB支持靈活、易用的ORM。開發(fā)者可以很便捷地定義表、索引、約束,并進(jìn)行增刪改查操作。

          ·多線程高并發(fā): WCDB支持多線程讀與讀、讀與寫并發(fā)執(zhí)行,寫與寫串行執(zhí)行。

          ·加密:WCDB提供基于SQLCipher的數(shù)據(jù)庫(kù)加密。

          ·損壞修復(fù): WCDB內(nèi)建了Repair Kit用于修復(fù)損壞的數(shù)據(jù)庫(kù)。

          ·反注入: WCDB內(nèi)建了對(duì)SQL注入的保護(hù)。

          WCDB for Android 基本功能

          ·基于SQLCipher的數(shù)據(jù)庫(kù)加密

          ·使用連接池實(shí)現(xiàn)并發(fā)讀寫

          ·內(nèi)建 Repair Kit 可用于修復(fù)損壞數(shù)據(jù)庫(kù)

          ·針對(duì)占用空間大小優(yōu)化的數(shù)據(jù)庫(kù)備份/恢復(fù)功能

          ·日志輸出重定向以及性能跟蹤接口

          ·內(nèi)建用于全文搜索的mmicu FTS3/4 分詞器

          4、手機(jī)前端開發(fā)調(diào)試工具vConsole★Star 2393

          vConsole是一款由微信公眾平臺(tái)前端團(tuán)隊(duì)打造的前端調(diào)試面板,專治手機(jī)端看 log 難題。 目前 vConsole 自帶有 2 個(gè)面板,默認(rèn)為“日志”面板,負(fù)責(zé)展示 log。第二個(gè)是“系統(tǒng)”面板,vConsole會(huì)自動(dòng)將一些基礎(chǔ)信息(如系統(tǒng)版本)打印出來,方便開發(fā)者定位問題。若頁(yè)面是在微信內(nèi)置瀏覽器中打開的,vConsole還會(huì)打印出微信版本號(hào)、當(dāng)前網(wǎng)絡(luò)類型等額外信息。(詳情:https://github.com/WechatFE/vConsole)

          5、微信團(tuán)隊(duì)前端開發(fā)工具WeFlow ★Star 2233

          這是一個(gè)高效、強(qiáng)大、跨平臺(tái)(macOS & Win)的前端工具,核心基于 tmt-workflow 工作流.(詳情:

          https://github.com/weixin/WeFlow)

          6、分布式后臺(tái)服務(wù)引擎MSEC★Star 2221

          毫秒服務(wù)引擎(MSEC)由騰訊 QQ 團(tuán)隊(duì)開源。它是一個(gè)后端 DEV&OPS 引擎,包括RPC,名稱查找,負(fù)載平衡,監(jiān)控,發(fā)布和容量管理。毫秒服務(wù)引擎特性:

          ● 模塊間訪問采用RPC的方式,開發(fā)者不用關(guān)注網(wǎng)絡(luò)與報(bào)文格式,像寫單機(jī)程序一樣開發(fā)分布式服務(wù)。

          ● 負(fù)載自動(dòng)均衡與容錯(cuò),對(duì)于單機(jī)故障、局部網(wǎng)絡(luò)波動(dòng)等狀況自動(dòng)應(yīng)對(duì),服務(wù)高可用性。

          ● 支持 C/C++/java/PHP 語(yǔ)言,如果選擇 C/C++ 語(yǔ)言,支持協(xié)程,兼具開發(fā)和運(yùn)行效率。

          ●Web 化的管理界面

          ● 簡(jiǎn)易部署,需要復(fù)雜部署的服務(wù)器都采用docker鏡像的方式安裝

          ● 相比使用其他開源組件拼湊起來的解決方案,毫秒服務(wù)引擎更加的體系化,對(duì)團(tuán)隊(duì)的規(guī)范更加到位(詳情:http://haomiao.qq.com/)

          7、隨身調(diào)測(cè)平臺(tái)GT★Star 2183

          GT(隨身調(diào))是 APP 的隨身調(diào)測(cè)平臺(tái),它是直接運(yùn)行在手機(jī)上的“集成調(diào)測(cè)環(huán)境”(IDTE, Integrated Debug Environment)。利用 GT,僅憑一部手機(jī),無需連接電腦,您即可對(duì)APP進(jìn)行快速的性能測(cè)試(CPU、內(nèi)存、流量、電量、幀率/流暢度等等)、 開發(fā)日志的查看、Crash日志查看、網(wǎng)絡(luò)數(shù)據(jù)包的抓取、APP 內(nèi)部參數(shù)的調(diào)試、真機(jī)代碼耗時(shí)統(tǒng)計(jì)等。如果您覺得GT提供的功能還不夠滿足您的需要,您還可以利用 GT 提供的基礎(chǔ) API 自行開發(fā)有特殊功能的 GT 插件,幫助您解決更加復(fù)雜的 APP 調(diào)試問題。(詳情:

          https://github.com/Tencent/GT)

          8、Unity3D 下 Lua 編程解決方案 xLua★Star 1816

          xLua為Unity3D增加Lua腳本編程的能力,xLua在功能、性能、易用性都有不少突破,這幾方面分別最具代表性的是:

          ① 可以運(yùn)行時(shí)把C#實(shí)現(xiàn)(方法,操作符,屬性,事件等等)替換成lua實(shí)現(xiàn);

          ② 出色的GC優(yōu)化,自定義struct,枚舉在Lua和C#間傳遞無C# gc alloc;

          ③ 編輯器下無需生成代碼,開發(fā)更輕量;

          (詳情:https://github.com/Tencent/xLua)

          9、RPC開發(fā)框架Tars★Star 1800

          它是基于名字服務(wù)使用 Tars 協(xié)議的高性能 RPC 開發(fā)框架,配套一體化的運(yùn)營(yíng)管理平臺(tái)。Tars 是騰訊從 2008 年到今天一直在使用的后臺(tái)邏輯層的統(tǒng)一應(yīng)用框架 TAF(Total Application Framework),目前支持 C ++ 和 Java 兩種語(yǔ)言。目前該框架在騰訊內(nèi)部,各大核心業(yè)務(wù)都在使用,頗受歡迎,基于該框架部署運(yùn)行的服務(wù)節(jié)點(diǎn)規(guī)模達(dá)到上萬個(gè)。(詳情:

          https://github.com/Tencent/Tars)

          10、MySQL集群PhxSQL★Star 1759

          PhxSQL是一個(gè)基于Paxos和Percona的高可用性和強(qiáng)大的一體化MySQL集群,PhxSQL以單Master多Slave方式部署,在集群內(nèi)超過一半機(jī)器存活的情況下,可自身實(shí)現(xiàn)自動(dòng)Master切換,且保證數(shù)據(jù)一致性。(詳情:https://github.com/tencent-wechat/phxsql)

          11、超輕量級(jí) Web 手勢(shì)庫(kù)AlloyFinger★Star 1734

          可以看到hammerjs體積遠(yuǎn)遠(yuǎn)大于AlloyFinger,對(duì)于手機(jī)QQ web加載速度性能追求極致的同學(xué)來說,使用hammerjs的大小是不可以接受的!那么,為什么hammerjs這么大?看下架構(gòu)設(shè)計(jì)便知♂(詳情:https://github.com/AlloyTeam/AlloyFinger)架構(gòu)設(shè)計(jì):

          12、多機(jī)狀態(tài)拷貝類庫(kù)PhxPaxos★Star 1244

          PhxPaxos是騰訊公司微信后臺(tái)團(tuán)隊(duì)自主研發(fā)的一套基于 Paxos 協(xié)議的多機(jī)狀態(tài)拷貝類庫(kù)。它以庫(kù)函數(shù)的方式嵌入到開發(fā)者的代碼當(dāng)中,使得一些單機(jī)狀態(tài)服務(wù)可以擴(kuò)展到多機(jī)器,從而獲得強(qiáng)一致性的多副本以及自動(dòng)容災(zāi)的特性。 這個(gè)類庫(kù)在微信服務(wù)里面經(jīng)過一系列的工程驗(yàn)證,并且我們對(duì)它進(jìn)行過大量的惡劣環(huán)境下的測(cè)試,使其在一致性的保證上更為健壯。(詳情:

          https://github.com/tencent-wechat/phxpaxos)

          13、Web組件化框架Omi ★1057

          Omi是一款開放現(xiàn)代的Web組件化框架,有以下特性:

          ① 局部CSS:HTML+ Scoped CSS + JS組成可復(fù)用的組件。不用擔(dān)心組件的CSS會(huì)污染組件外的,Omi會(huì)幫你處理好一切

          ② 超小的尺寸:7 kb (gzip),雖然文件尺寸小,但是兼容性很好!

          ③ 更新更自由:每個(gè)組件都有update方法,可自由更新。

          ④ 模板引擎可替換,開發(fā)者可以重寫Omi.template方法來使用任意模板引擎

          ⑤ 完全面向?qū)ο?/p>

          ⑥ Omi提供了ES6+和ES5的兩種開發(fā)方案

          (詳情:https://github.com/AlloyTeam/omi)

          14、UI 前端框架 QMUI Web ★Star 888

          QMUIWeb 是一個(gè)專注 Web UI 開發(fā),幫助開發(fā)者快速實(shí)現(xiàn)特定的一整套設(shè)計(jì)的框架。通過 QMUI Web,開發(fā)者可以很輕松地提高 Web UI 開發(fā)的效率,同時(shí)保持了項(xiàng)目的高可維護(hù)性與穩(wěn)健。如果你的項(xiàng)目需要有一套完整的設(shè)計(jì),并且可能有頻繁的變動(dòng),那么 QMUI Web 框架將會(huì)是你最好的解決方案。(詳情:

          https://github.com/QMUI/QMUI_Web)

          15、curvejs★Star 749

          是騰訊AlloyTeam打造的一款魔幻線條框架,讓線條成為一名優(yōu)秀的舞者,讓線條們成為優(yōu)秀的舞團(tuán),HTML5 Canvas就是舞臺(tái)。其原理就是使用 Perlin-Noise +Particle System + Bézier Curve + Color Transition 制作而成。使用curvejs實(shí)現(xiàn)類似變幻線功能只需要不到10行代碼。 https://github.com/AlloyTeam/curvejs

          16、基于C ++的RPC框架 PhxRPC★Star 645

          PhxRPC是微信后臺(tái)團(tuán)隊(duì)推出的一個(gè)非常簡(jiǎn)潔小巧的RPC框架,編譯生成的庫(kù)只有450K(詳情:

          https://github.com/tencent-wechat/phxrpc)

          17、Web 開發(fā)調(diào)試工具AlloyLever★533

          AlloyLever是騰訊 AlloyTeam 團(tuán)隊(duì)開源的一款 Web開發(fā)調(diào)試工具。AlloyLever的功能:點(diǎn)擊alloylever 按鈕之間切換顯示或隱藏工具面板; Console會(huì)輸出所有用戶打印的日志如 console.[log/error/info/debug/debug] ;Console會(huì)輸出所有的錯(cuò)誤信息(腳本錯(cuò)誤和網(wǎng)絡(luò)請(qǐng)求錯(cuò)誤) ;XHR 面板會(huì)輸出所有()AJAX 請(qǐng)求和服務(wù)器端返回的數(shù)據(jù); Resouces 面板會(huì)輸出所有的 Cookie 信息和 LocalStorage ;TimeLime 面板會(huì)輸出頁(yè)面相關(guān)的生命周期里的時(shí)間段耗時(shí)情況(詳情:

          https://github.com/AlloyTeam/AlloyLever)

          18、bk-cmdb★Star 452

          藍(lán)鯨配置平臺(tái)是一款面向應(yīng)用的 CMDB,在 ITIL 體系里,CMDB是構(gòu)建其它流程的基石,而在藍(lán)鯨智云體系里,配置平臺(tái)就扮演著基石的角色,為應(yīng)用提供了各種運(yùn)維場(chǎng)景的配置數(shù)據(jù)服務(wù)。現(xiàn)有功能如下:用戶管理、業(yè)務(wù)管理、拓?fù)洌骸⒛K)管理、資源池管理、主機(jī)管理、日志查詢(詳情:

          https://github.com/Tencent/bk-cmdb)

          19、分布式開發(fā)框架Pebble-RPC★Star 351

          Pebble是一個(gè)分布式開發(fā)框架。基于該框架,可以讓開發(fā)者只需專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而不需要關(guān)注基礎(chǔ)功能的開發(fā),如網(wǎng)絡(luò)通信,數(shù)據(jù)存儲(chǔ),集群管理等。使用pebble配套的運(yùn)營(yíng)系統(tǒng),可方便的進(jìn)行游戲開區(qū)開服,版本升級(jí),擴(kuò)容縮容等操作。當(dāng)前發(fā)布的Pebble版本,是一個(gè)Linux平臺(tái)C++版本的后臺(tái)開發(fā)框架。整個(gè)分布式開發(fā)框架包括:服務(wù)管理、集群管理、RPC通信、協(xié)程、廣播、進(jìn)程框架。(詳情:https://github.com/TencentOpen/Pebble)

          20、UI自動(dòng)化測(cè)試框架GAutomator★Star 337

          GAutomator是一 Unity 手游的UI 自動(dòng)化測(cè)試框架。

          WindowsOs 和軟件要求:Windows 7(32/64位),Windows 8或更高版本;python 2.7;Android SDK(或adb),在設(shè)備上啟用ADB設(shè)置,并使用usb與您的PC連接您的Android設(shè)備。Linux和軟件要求:Ubuntu 14.04 LTS;python 2.7;Android SDK(或adb),在設(shè)備上啟用ADB設(shè)置,并使用usb與您的PC連接您的Android設(shè)備。

          Android:Android 4.3(API級(jí)別18)或更高版本。(詳情:https://github.com/Tencent/GAutomator)

          21、WeDemo★Star 297

          WeDemo為微信團(tuán)隊(duì)開源項(xiàng)目,用于幫助微信開發(fā)者完成微信登錄、微信分享等功能的接入和開發(fā)。開發(fā)者可參考源代碼完成開發(fā),也可以直接將代碼應(yīng)用到自己的App開發(fā)中,安全、便捷地在App中實(shí)現(xiàn)微信分享、微信登錄功能。(詳情:https://github.com/Tencent/WeDemo)

          22、AI開發(fā)框架組件 Behaviac★Star 297

          Behaviac是游戲 AI 的開發(fā)框架組件,也是游戲原型的快速設(shè)計(jì)工具。支持行為樹BT,狀態(tài)機(jī) FSM,HTN 等多種范式,方便的編輯和調(diào)試。支持全平臺(tái),適用于客戶端和服務(wù)器,助力游戲快速迭代開發(fā)。編輯器可以運(yùn)行在 PC 上,操作方便直觀可靠,支持實(shí)時(shí)和離線調(diào)試;編輯器可以導(dǎo)出 xml,bson 等多種格式,更可以導(dǎo)出 C++,C# 源碼,提供最高效率。 運(yùn)行時(shí)支持全平臺(tái),有 C++ 和 C# 兩個(gè)版本,原生支持Unity。 (詳情:

          https://github.com/Tencent/behaviac)

          23、Fanvas★Star 214

          Fanvas是一個(gè)把swf轉(zhuǎn)為html5 canvas動(dòng)畫的系統(tǒng),由兩部分組成:Action實(shí)現(xiàn)的解析器、js運(yùn)行庫(kù)。(詳情:https://github.com/Tencent/Fanvas)

          24、HaboMalHunter★Star 161

          HaboMalHunter是 Habo Malware 分析系統(tǒng)(https://habo.qq.com)的子項(xiàng)目,可用于Linux系統(tǒng)上的自動(dòng)惡意軟件分析和安全評(píng)估。該工具可用于 Linux x86 /x64 平臺(tái)上 ELF 文件的靜態(tài)和動(dòng)態(tài)分析。(詳情:

          https://github.com/Tencent/HaboMalHunter)

          25、基于ACE的服務(wù)框架 TEAF★157

          TEAF(TencentEasy ACE Framework),基于 ACE 的高性能服務(wù)框架,單進(jìn)程多線程模型,支持 select/epoll 等多種網(wǎng)絡(luò) IO 模型,同時(shí)支持 tcp 和 udp 協(xié)議,支持二進(jìn)制(pb等)和文本格式(json等,易于理解),相對(duì)多進(jìn)程模型的框架來說更易維護(hù),更輕量。業(yè)務(wù)側(cè)只需要開發(fā)自己的邏輯處理即可實(shí)現(xiàn)高性能的業(yè)務(wù)后臺(tái)服務(wù)器。已經(jīng)在騰訊互娛(IEG)大部分平臺(tái)類產(chǎn)品中成熟應(yīng)用,比如 idip,游戲人生,心悅,幫幫,新終端游戲中心 aj,cross 等,公司其他 BG 也有很多產(chǎn)品在使用。(詳情:

          https://github.com/Tencent/Teaf)

          26、QT4A★Star 67

          QT4A(Android的快速測(cè)試)是適用于 Android 應(yīng)用程序的 QTA 測(cè)試自動(dòng)化驅(qū)動(dòng)程序。支持Android 2.3 - 6.0 版本,需要設(shè)備根。支持多設(shè)備同時(shí)測(cè)試;支持跨進(jìn)程,跨應(yīng)用測(cè)試;支持進(jìn)行過控件混淆的安裝包(需要映射文件);支持自定義控件(如果有代碼混淆需要映射文件)(詳情:

          https://github.com/Tencent/QT4A)

          27、輔助測(cè)試工具WeTest-Assistant★Star 49

          WeTest助手包括性能測(cè)試和遠(yuǎn)程調(diào)試兩大功能。手游客戶端性能測(cè)試常用性能維度,CPU,內(nèi)存,F(xiàn)PS,流量一次性全部收集, 圖表化展示,數(shù)據(jù)可按場(chǎng)景化分類,并且支持離線和在線兩種模式,地鐵上都可以做測(cè)試,Web上看報(bào)告。 支持ROOT和非ROOT安卓手機(jī),支持越獄iOS系統(tǒng)。(詳情:https://github.com/Tencent/WeTest-Assistant)

          28、QT4i★Star 44

          QT4i是iOS應(yīng)用程序的QTA測(cè)試自動(dòng)化驅(qū)動(dòng)程序。主要特性:輕松易用、支持iOS Native控件,webview控件和自定義控件;平臺(tái)支持,高效維護(hù)。(詳情:https://github.com/Tencent/QT4i)

          29、KNVProtoEngine★Star 44

          KNV是一個(gè)模式自由的高性能樹型協(xié)議處理引擎,是對(duì)Key-Value的一個(gè)通用結(jié)構(gòu)化擴(kuò)展。(詳情:

          https://github.com/Tencent/KNVProtoEngine)

          30、優(yōu)圖人臉識(shí)別Python_sdk★Star 32

          優(yōu)圖人臉識(shí)別(Face Recognition), 是由騰訊優(yōu)圖團(tuán)隊(duì)研發(fā)的,基于人的臉部特征信息進(jìn)行身份識(shí)別的一種生物識(shí)別技術(shù)。它提供了"人臉檢測(cè)與分析"、“人臉比對(duì)”、“人臉驗(yàn)證”、"人臉識(shí)別"等一整套技術(shù)方案。(詳情:

          https://github.com/TencentYouTu/python_sdk)

          WF是一種Adobe Flash文件格式,通常用于在Web瀏覽器中播放動(dòng)畫或嵌入式音頻/視頻。要打開SWF文件,以下兩種選項(xiàng)可以任選其一:


          第一種 Adobe Flash Player


          Adobe Flash Player是打開SWF文件的官方軟件,可以通過雙擊SWF文件或在Adobe Flash Player中打開SWF文件。


          第二種 Web瀏覽器


          使用最新版本的Web瀏覽器(如Google Chrome),則可以直接在瀏覽器中打開SWF文件。只需右鍵單擊SWF文件,然后選擇“在瀏覽器中打開”選項(xiàng)即可。

          但是隨著HTML5技術(shù)的普及,越來越多的網(wǎng)站已經(jīng)停止使用Flash插件,這使得SWF格式的文件難以在現(xiàn)代的網(wǎng)頁(yè)瀏覽器中播放。因此,將SWF格式轉(zhuǎn)換為MP4格式可以幫助我們讓SWF文件在更多的設(shè)備和平臺(tái)上播放,提高了文件的可用性和實(shí)用性。


          SWF轉(zhuǎn)換方式(轉(zhuǎn)MP4)


          MP4格式被廣泛應(yīng)用于各種設(shè)備和平臺(tái),包括iOS、Android、Windows和Mac等,因此將SWF格式轉(zhuǎn)換為MP4格式可以讓文件在更廣泛的設(shè)備和平臺(tái)上播放。


          如果你正在尋找一款優(yōu)秀的視頻轉(zhuǎn)換工具,那么迅捷視頻工具箱是一個(gè)值得考慮的選擇。它可以轉(zhuǎn)換幾乎所有常見的視頻格式,包括MP4、AVI、MOV、MKV、FLV等等。

          該工具支持批量轉(zhuǎn)換功能,可以同時(shí)轉(zhuǎn)換多個(gè)視頻文件。只需要將需要轉(zhuǎn)換的SWF文件導(dǎo)入,即可點(diǎn)擊轉(zhuǎn)換,高效的轉(zhuǎn)換算法,可以快速轉(zhuǎn)換大量視頻文件。

          對(duì)于需要在多個(gè)設(shè)備和平臺(tái)上播放的多媒體文件,SWF轉(zhuǎn)MP4是一個(gè)必要的步驟。

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

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

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

          1. HTTP Live Streaming

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

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

          編碼:以 H.263 格式對(duì)圖像進(jìn)行編碼,以 MP3 或者 HE-AAC 對(duì)聲音進(jìn)行編碼,最終打包到 MPEG-2 TS(Transport Stream)容器之中;分割:把編碼好的 TS 文件等長(zhǎng)切分成后綴為 ts 的小文件,并生成一個(gè) .m3u8 的純文本索引文件;瀏覽器使用的是 m3u8 文件。m3u8 跟音頻列表格式 m3u 很像,可以簡(jiǎn)單的認(rèn)為 m3u8 就是包含多個(gè) ts 文件的播放列表。播放器按順序逐個(gè)播放,全部放完再請(qǐng)求一下 m3u8 文件,獲得包含最新 ts 文件的播放列表繼續(xù)播,周而復(fù)始。整個(gè)直播過程就是依靠一個(gè)不斷更新的 m3u8 和一堆小的 ts 文件組成,m3u8 必須動(dòng)態(tài)更新,ts 可以走 CDN。一個(gè)典型的 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ì)還是一個(gè)個(gè)的 HTTP 請(qǐng)求 / 響應(yīng),所以適應(yīng)性很好,不會(huì)受到防火墻影響。但它也有一個(gè)致命的弱點(diǎn):延遲現(xiàn)象非常明顯。如果每個(gè) ts 按照 5 秒來切分,一個(gè) m3u8 放 6 個(gè) ts 索引,那么至少就會(huì)帶來 30 秒的延遲。如果減少每個(gè) ts 的長(zhǎng)度,減少 m3u8 中的索引數(shù),延時(shí)確實(shí)會(huì)減少,但會(huì)帶來更頻繁的緩沖,對(duì)服務(wù)端的請(qǐng)求壓力也會(huì)成倍增加。所以只能根據(jù)實(shí)際情況找到一個(gè)折中的點(diǎn)。

          對(duì)于支持 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

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

          程序猿的生活:web前端全棧資料粉絲福利(面試題、視頻、資料筆記,進(jìn)階路線)zhuanlan.zhihu.com/p/136454207

          2. Real Time Messaging Protocol

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

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

          標(biāo)簽無法播放 RTMP 協(xié)議的視頻,可以通過 video.js 來實(shí)現(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=“l(fā)oop” 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對(duì)比


          二、直播形式

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

          ① 背景視頻層

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

          ③ 點(diǎn)贊動(dòng)畫

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

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

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

          ③ 點(diǎn)贊利用 CSS3 動(dòng)畫

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

          相關(guān)學(xué)習(xí)資料推薦,點(diǎn)擊下方鏈接免費(fèi)報(bào)名,先碼住不迷路~】

          音視頻免費(fèi)學(xué)習(xí)地址:FFmpeg/WebRTC/RTMP/NDK/Android音視頻流媒體高級(jí)開發(fā)

          【免費(fèi)分享】音視頻學(xué)習(xí)資料包、大廠面試題、技術(shù)視頻和學(xué)習(xí)路線圖,資料包括(C/C++,Linux,F(xiàn)Fmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以點(diǎn)擊788280672加群免費(fèi)領(lǐng)取~

          三、直播整體流程

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

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

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

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

          (web前端學(xué)習(xí)交流群:328058344 禁止閑聊,非喜勿進(jìn)!)

          四、H5 錄制視頻

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

          使用 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),但是大部分移動(dòng)端的瀏覽器還不支持 webRTC(最新iOS 10.0也不支持),所以真正的視頻錄制還是要靠客戶端(iOS,Android)來實(shí)現(xiàn),效果會(huì)好一些。


          WebRTC支持度

          WebRTC支持度

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

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

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

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

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


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

          安裝nginx、nginx-rtmp-module

          ① 先clone nginx項(xiàng)目到本地:

          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é)點(diǎn)之前添加 rtmp 的配置內(nèi)容:

          ② 在http中添加 hls 的配置

          3. 重啟nginx服務(wù)

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

          nginx -s reload

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

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


          注意:

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

          3.FFmpeg推流命令

          ① 視頻文件進(jìn)行直播

          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


          ② 推流攝像頭+桌面+麥克風(fēng)錄制進(jìn)行直播

          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


          更多命令,請(qǐng)參考:

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

          FFmpeg常用推流命令

          七、H5 直播視頻播放

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

          <video controls preload=“auto” autoplay=“autoplay” loop=“l(fā)oop” 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頁(yè)面播放直播視頻一整套流程,具體闡述了直播實(shí)現(xiàn)原理,實(shí)現(xiàn)過程中會(huì)遇到很多性能優(yōu)化問題。

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

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

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

          原文 https://zhuanlan.zhihu.com/p/146323842


          主站蜘蛛池模板: 色综合久久一区二区三区| 国产伦精品一区三区视频| 日本无卡码免费一区二区三区| 亚洲av午夜精品一区二区三区| 97精品国产一区二区三区| 亚洲综合av永久无码精品一区二区| 国产成人综合亚洲一区| 成人免费一区二区无码视频| 91视频国产一区| 色窝窝无码一区二区三区成人网站| 国产成人高清精品一区二区三区| 国产在线精品一区二区在线看 | 久久se精品一区二区| 亚洲国模精品一区| 亚洲免费一区二区| 亚洲美女高清一区二区三区 | 国产丝袜美女一区二区三区| 琪琪see色原网一区二区| 午夜性色一区二区三区不卡视频| 亚洲AV无码一区二区三区久久精品| 精品永久久福利一区二区| 无码人妻少妇色欲AV一区二区| 久久一区二区三区精品| 色妞色视频一区二区三区四区 | 蜜桃无码AV一区二区| 一区二区精品在线| 2022年亚洲午夜一区二区福利| 亚洲高清日韩精品第一区| 国产成人精品日本亚洲专一区 | 人妻少妇久久中文字幕一区二区 | 人妻无码一区二区视频| 乱人伦一区二区三区| 久久精品人妻一区二区三区| 亚洲片国产一区一级在线观看| A国产一区二区免费入口| 日韩人妻无码一区二区三区综合部| 亚洲色婷婷一区二区三区| 中文字幕一区二区三区5566| 国产日产久久高清欧美一区| 国产在线精品一区二区 | 国产免费一区二区三区VR|