整個流媒體播放系統(tǒng)主要分為視頻服務器端和iOS視頻播放器客戶端。
服務器端主要負責為播放器端提供直播蛙酪,點播等視頻流;
播放器端負責接收服務器發(fā)送的數據流翘盖,進行解碼和播放桂塞。
一、流媒體技術的含義
流媒體并不是一種新型的媒體馍驯,而是一種新的技術阁危。廣義上的流媒體指的是使音頻和視頻形成穩(wěn)定和連續(xù)的傳輸流和回放流的一系列技術、方法和協(xié)議的總稱汰瘫,即流媒體技術狂打;狹義上的流媒體是相對于傳統(tǒng)的下載-回放方式而言的,指的是一種從 Internet 上獲取音頻和視頻等多媒體數據的新方法混弥,它能夠支持多媒體數據流的實時傳輸和實時播放趴乡。通過運用流媒體技術,服務器能夠向客戶機發(fā)送穩(wěn)定和連續(xù)的多媒體數據流,客戶機在接收數據的同時以一個穩(wěn)定的速率回放晾捏,而不用等數據全部下載完之后再進行回放蒿涎。
二、HLS協(xié)議
HLS是HTTP Live Streaming的縮寫惦辛。它是蘋果公司實現的基于HTTP的流媒體傳輸協(xié)議劳秋,可以實現流媒體的直播和點播,也就是我們常說的Live和VOD胖齐。最先開始主要應用于iOS系統(tǒng)玻淑,為iOS設備提供視頻直播和點播方案,現在在大多數的移動設備也實現了這個功能呀伙。HLS的點播岁忘,是將常見的分段HTTP點播,不同的是区匠,他的分段非常小干像。實現的重點在于對媒體文件的分割,目前有很多開源工具驰弄。
相對于其他的流媒體直播協(xié)議麻汰,HLS最大的不同在于,客戶端獲取到的戚篙,并不是一個完整的數據流五鲫,而是一段一段的切片TS(MPEG-TS格式)。HLS協(xié)議在服務端將直播數據存儲為連續(xù)的岔擂,一定時長的媒體文件位喂,codec為MPEG-TS,客戶端再按照playlist去在下載并播放這些文件乱灵,從而達到直播或者點播功能塑崖。HLS由于采取HTTP協(xié)議傳輸文件,所以不用考慮防火墻或者代理的問題痛倚,因為一般的主機80端口應該是開放的规婆。還有一個優(yōu)點在于,客戶端可以很快的選擇和切換碼率蝉稳,以適應不同帶寬條件下的播放抒蚜。
HLS協(xié)議的實現過程:
首先對視頻數據進行錄入、編碼耘戚,然后服務器軟件的流分段程序將媒體視頻流分解成一系列簡短的.ts媒體文件嗡髓,這些.ts文件被放置在web服務器上。這個流分段程序同時還創(chuàng)建一個索引文件收津,該索引文件包含元數據以及一個.m3u8媒體文件的列表饿这,且索引文件的URL發(fā)布到服務器上浊伙,客戶端軟件即可讀取索引,請求媒體文件蛹稍,并將其在客戶端播放器中顯示出來。
根據以上的了解部服,想要實現HLS直播唆姐,需要研究并實現以下技術關鍵點:
采集視頻源和音頻源的數據
對原始數據進行H.264編碼和AAC編碼
視頻和音頻數據封裝為MPEG-TS包
HLS分段生成策略及m3u8索引文件
HTTP傳輸協(xié)議
三、RTSP協(xié)議
與負責傳送數據的 RTP/RTCP不同廓八,RTSP 主要負責在服務器和客戶端之間建立連接奉芦,并響應用戶的操作請求,如暫停剧蹂,快進声功、快退、音量加減等宠叼。與HLS相比先巴,RTSP傳輸的延遲更低。最常見的模式如下圖所示冒冬。
四伸蚯、播放器端解碼
FFmpeg簡介
FFmpeg 是一個跨平臺的開源視頻框架,能實現如視頻編碼简烤、解碼剂邮、轉碼、串流横侦、濾波挥萌、播放等豐富的功能。其支持的視頻格式以及播放協(xié)議非常豐富枉侧,幾乎包含了所有音視頻編解碼引瀑、封裝格式以及播放協(xié)議。而實時視頻直播一般使用的協(xié)議榨馁,如 RSTP伤疙,在 FFmpeg 中得到了很好的支持。 在手機直播軟件中辆影,可以調用FFmpeg編寫一個播放器徒像。
五、主要使用的協(xié)議:
HLS 協(xié)議 : >5M會被AppStore拒絕 服務器要求低 延遲高 多平臺
RTMP 協(xié)議: 電視直播 PC端使用 配合flash插件 及時性好
需要轉碼ffmpeg 延遲200ms
RTSP 協(xié)議: 攝像頭功能
軟解碼: ffmpeg
硬解碼:ios8之后 VideoToolBox 框架
直播過程大概為5步
數據采集-->數據編碼--->數據傳輸-->數據解碼-->顯示到屏幕
數據采集:采集視頻及音頻數據蛙讥。 原始數據锯蛀。
數據編碼:編碼成(flv)
數據傳輸:
(推流)把你本地得到編碼數據。上傳到流媒體服務器次慢。rtmp hls (rtmp協(xié)議)
(拉流) 把你的數據從流媒體服務器上拉下來旁涤。
數據解碼: 流翔曲。。音頻流()劈愚,視頻流瞳遍。。
播放顯示:openGLES:渲染菌羽。掠械。GPUImage
直播聊天室: 融云(5000+) 視頻+聊天室、
主播開播注祖、猾蒂、 (在開播同時,需要申請是晨。推流地址肚菠。+后臺創(chuàng)建融云聊天室)。罩缴。黑名單蚊逢。。(通知箫章。)时捌。。全直播(通知)
送禮物炉抒,:扣款
三方提供商: 七牛奢讨。 YY 和斗魚 騰訊。焰薄。now拿诸。。網易云信塞茅、