直播APP系統開發應該有哪些功能,如何開發?
1.技術實現層面:
技術相對都比較成熟,裝置也都支援硬編碼。IOS還提供現成的Video ToolBox框架,可以對攝像頭和流媒體資料結構進行處理,但Video ToolBox框架只相容8.0以上版本,8.0以下就需要用x264的庫軟編了。
github上有現成的開源實現,推流、美顏、水印、彈幕、點贊動畫、濾鏡、播放都有。技術其實不是很難,而且現在很多雲廠商都提供SDK,七牛雲、金山雲、樂視雲、騰訊雲、百度雲、鬥魚直播伴侶推流端,功能幾乎都是一樣的,沒啥亮點,不同的是整個直播平臺服務差異和接入的簡易性。後端現在RTMP/HTTP-FLV清一色,App掛個源站直接接入雲廠商或CDN就OK。
2.直播最佳化層面
其實最難的難點是提高首播時間、服務質量即Qos(Quality of Service,服務質量),如何在丟包率20%的情況下還能保障穩定、流暢的直播體驗,需要考慮以下方案:
1.為加快首播時間,收流伺服器主動推送GOP:(Group of Pictures:策略影響編碼質量)所謂GOP,意思是畫面組,一個GOP就是一組連續的畫面至邊緣節點,邊緣節點快取GOP,播放端則可以快速載入,減少回源延遲。
GOP.1
2.GOP丟幀,為解決延時,為什麼會有延時,網路抖動、網路擁塞導致的資料傳送不出去,丟完之後所有的時間戳都要修改,切記,要不客戶端就會卡一個GOP的時間,是由於PTS(Presentation Time Stamp,PTS主要用於度量解碼後的影片幀什麼時候被顯示出來)和DTS的原因,或者播放器修正DTS和PTS也行(推流端丟GOD更復雜,丟p幀之前的i幀會破圖)
幀.2
3.純音訊丟幀,要解決音影片不同步的問題,要讓影片的delta增量到你丟掉音訊的delta之後,再發音訊,要不就會音影片不同步
4.源站主備切換和斷線重連
5.根據TCP擁塞視窗做智慧排程,當擁塞視窗過大說明節點服務質量不佳,需要切換節點和故障排查
6.增加上行、下行頻寬探測介面,當頻寬不滿足時降低影片質量,即降低位元速率
7.定時獲取最優的推流、拉流鏈路IP,儘可能保證提供最好的服務
8.監控必須要,監控各個節點的Qos狀態,來做整個平臺的資源配置最佳化和排程
直播過程.3
9.如果產品從推流端、CDN、播放器都是自家的,保障Qos優勢非常大
10.當直播量非常大時,要加入叢集管理和排程,保障Qos
11.播放端透過增加延時來減少網路抖動,透過快播來減少延時
3.運營成本和客戶體驗
根據網上的資料,鬥魚TV為3億人民幣,戰旗TV為1.5億人民幣,龍珠為1.2億人民幣,虎牙為3000萬+人民幣。
運營和推廣:這個就比較燒錢了,一些做移動直播、遊戲直播、秀場直播的A輪至少得上千萬。
使用者體驗:流暢、不卡頓、不破圖、斷線重連、丟包策略、首畫載入速度、豐富的禮物系統,為了提高使用者體驗,可以在後臺載入其他頁面資料,但要在使用者體驗和記憶體最佳化方面找到平衡點。
二、流媒體傳輸
1.TCP:TCP為點對點的協議,雖然能保證了資料傳輸的可靠性,但是對伺服器資源耗費較大,在資料流大的場合難以保證資料流傳輸的實時性。
2.UDP:UDP為不可靠傳輸協議,不需要維護連線狀態,也不認為每個資料包都必須到達接受端,因此網路負荷比TCP小,傳輸速度也要比TCP快;但在網路越擁擠時,越有更多的資料包丟失。
3.RTMP:RTMP一個專門為高效傳輸影片,音訊和資料而設計的協議。它透過建立一個二進位制TCP連線或者連線HTTP隧道實現實時的影片和聲音傳輸。
4.FFmpeg:FFmpeg是一套可以用來記錄、轉換數字音訊、影片,並能將其轉化為流的開源計算機程式。採用LGPL或GPL許可證。它提供了錄製、轉換以及流化音影片的完整解決方案。
協議差異.4
三、專案搭建:採集端
1.目前比較知名的有VideoCore
目前國內很多知名的推流框架都是對VideoCore的二次開發。這個框架主要使用C++寫的,支援RTMP推流,但對於iOS開發者來說有點晦澀難懂(精通C++的除外)。想開源和免費的可以選擇現在的幾個知名專案VideoCore+GPUImage+基於GPU的美顏濾鏡,播放用IJKPlayer自己修改。
2.國內比較火的LiveVideoCoreSDK
框架提供IOS蘋果手機的RTMP推流填寫RTMP服務地址,直接就可以進行推流,SDK下載後簡單的工程配置後能直接執行,實現了美顏直播和濾鏡功能,基於OpenGL,前後攝像頭隨時切換,提供RTMP連線狀態的回撥。
這個框架是國內比較早的一款推流框架有不少在使用這個SDK,功能非常齊全,作者也比較牛,用來學習推流採集相關內容非常好,但是整合到工程中有些困難(對於我來說)。總的來說這是一款非常厲害的推流SDK,幾乎全部使用C++寫的,編譯效率非常好,如果有實力的話推薦使用這個框架來做自己專案的推流端。
3.可讀性比較好的推流LFLiveKit
框架支援RTMP(Real Time Messaging Protocol):實時訊息傳輸協議,Adobe公司的。
HlS(HTTP Live Streaming):蘋果自家的動態位元速率自適應技術。主要用於PC和Apple終端的音影片服務。包括一個m3u(8)的索引檔案,TS媒體分片檔案和key加密串檔案。
推薦這個框架第一是因為它主要使用OC寫的,剩下的用C語言寫的,框架檔案十分清晰,這對不精通C++的初學者提供了很大的便利,並且擴充性非常強,支援動態切換位元速率功能,支援美顏功能。
4.美顏功能
美顏的話一般都是使用的GPUImage基於OpenGl開發,純OC語言,這個框架十分強大,可以做出各種不同濾鏡,可擴充性高。如果對美顏沒有具體思路可以直接用BeautifyFace,可以加入到專案中,很方便的實現美顏效果。
四、專案具體搭建
1.如何實現美顏?
美顏功能使用的是BeautifyFace,它可以很快速的實現美顏功能,效果不錯,它的底層還是基於的GPUImage,對GPUImage十分喜愛的Developer,可以參照BeautifyFace,寫出一個屬於自己的美顏功能,並且新增各種濾鏡。
2.懸浮TabBar的實現
這個TabBar看著像是用自定義TabBar做的,但事實上它還是用的系統的TabBar,給系統的tabBar.backgroundImage設定一張設計好的背景圖片。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69926583/viewspace-2685031/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 購物直播系統開發,APP開發(功能)APP
- 想做直播系統的開發,應該去考察直播開發公司的哪些點
- 安全教育APP開發應該具備哪些功能APP
- 商城APP直播帶貨,原生開發系統功能APP
- 教育直播APP系統原始碼,原生開發功能APP原始碼
- 教育直播系統開發APP開發(需求)APP
- 直播APP原始碼系統家族功能開發介紹APP原始碼
- 教育app開發需要開發哪些功能APP
- 直播類app開發解決方案、直播app功能有哪些?-北京銳智互動軟體開發APP
- 跨境電商app應該如何開發?APP
- 教育直播APP原始碼開發系統APP原始碼
- 直播APP開發公司是如何開發一套完整直播APP?APP
- 直播商城原始碼包含哪些技術?商城直播系統開發難點有哪些?原始碼
- 教育類APP,直播教育系統,教育原始碼原生開發功能APP原始碼
- 商城APP直播帶貨系統定製需求功能支援多端開發APP
- 開發小說APP需要哪些功能APP
- 智慧垃圾回收系統開發需要哪些功能?案例——小圾生活APPAPP
- 區塊鏈聊天通訊直播系統開發app,區塊鏈應用開發方案區塊鏈APP
- 教育APP系統原始碼二次開發,原生開發功能APP原始碼
- 一對一直播系統原始碼開發需要哪些基礎功能原始碼
- 區塊鏈社交直播軟體開發app,IM聊天系統開發區塊鏈APP
- 語音直播系統原始碼開發有哪些技術問題原始碼
- 盲盒系統開發有哪些方案
- 短影片直播APP成品開發直播系統仿抖音APP無加密APP加密
- 生鮮配送app哪些功能需要開發APP
- 直播app開發搭建,js進度條功能APPJS
- 直播系統定製開發的步驟分享,如何進行直播系統定製開發
- 拼多多如何開直播?開直播有哪些要求?
- Linux作業系統的優勢官方開發App應用程式有哪些優缺點?Linux作業系統APP
- 直播app開發公司中直播程式的開發流程APP
- 從比心APP原始碼的成功,分析陪玩系統原始碼應該如何開發APP原始碼
- 區塊鏈社交直播軟體開發app,即時通訊系統開發區塊鏈APP
- 教育直播APP開發過程中,如何保持系統正常執行?APP
- NFT元宇宙系統app開發搭建(功能詳情)元宇宙APP
- 影視APP系統原始碼,定製開發功能APP原始碼
- 短影片APP系統原始碼,定製開發功能APP原始碼
- 電影APP系統原始碼,定製功能開發APP原始碼
- 盲盒app系統如何進行開發APP