iOS视频直播学习
iOS視頻直播學習
字數1512閱讀572評論2喜歡7整個流媒體播放系統主要分為視頻服務器端和iOS視頻播放器客戶端。
服務器端主要負責為播放器端提供直播,點播等視頻流;
播放器端負責接收服務器發送的數據流,進行解碼和播放。
一、流媒體技術的含義
流媒體并不是一種新型的媒體,而是一種新的技術。廣義上的流媒體指的是使音頻和視頻形成穩定和連續的傳輸流和回放流的一系列技術、方法和協議的總稱,即流媒體技術;狹義上的流媒體是相對于傳統的下載-回放方式而言的,指的是一種從 Internet 上獲取音頻和視頻等多媒體數據的新方法,它能夠支持多媒體數據流的實時傳輸和實時播放。通過運用流媒體技術,服務器能夠向客戶機發送穩定和連續的多媒體數據流,客戶機在接收數據的同時以一個穩定的速率回放,而不用等數據全部下載完之后再進行回放。
二、HLS協議
HLS是HTTP Live Streaming的縮寫。它是蘋果公司實現的基于HTTP的流媒體傳輸協議,可以實現流媒體的直播和點播,也就是我們常說的Live和VOD。最先開始主要應用于iOS系統,為iOS設備提供視頻直播和點播方案,現在在大多數的移動設備也實現了這個功能。HLS的點播,是將常見的分段HTTP點播,不同的是,他的分段非常小。實現的重點在于對媒體文件的分割,目前有很多開源工具。
相對于其他的流媒體直播協議,HLS最大的不同在于,客戶端獲取到的,并不是一個完整的數據流,而是一段一段的切片TS(MPEG-TS格式)。HLS協議在服務端將直播數據存儲為連續的,一定時長的媒體文件,codec為MPEG-TS,客戶端再按照playlist去在下載并播放這些文件,從而達到直播或者點播功能。HLS由于采取HTTP協議傳輸文件,所以不用考慮防火墻或者代理的問題,因為一般的主機80端口應該是開放的。還有一個優點在于,客戶端可以很快的選擇和切換碼率,以適應不同帶寬條件下的播放。
HLS協議的實現過程:
首先對視頻數據進行錄入、編碼,然后服務器軟件的流分段程序將媒體視頻流分解成一系列簡短的.ts媒體文件,這些.ts文件被放置在web服務器上。這個流分段程序同時還創建一個索引文件,該索引文件包含元數據以及一個.m3u8媒體文件的列表,且索引文件的URL發布到服務器上,客戶端軟件即可讀取索引,請求媒體文件,并將其在客戶端播放器中顯示出來。
根據以上的了解,想要實現HLS直播,需要研究并實現以下技術關鍵點:
采集視頻源和音頻源的數據
對原始數據進行H.264編碼和AAC編碼
視頻和音頻數據封裝為MPEG-TS包
HLS分段生成策略及m3u8索引文件
HTTP傳輸協議
三、RTSP協議
與負責傳送數據的 RTP/RTCP不同,RTSP 主要負責在服務器和客戶端之間建立連接,并響應用戶的操作請求,如暫停,快進、快退、音量加減等。與HLS相比,RTSP傳輸的延遲更低。最常見的模式如下圖所示。
四、播放器端解碼
FFmpeg簡介
FFmpeg 是一個跨平臺的開源視頻框架,能實現如視頻編碼、解碼、轉碼、串流、濾波、播放等豐富的功能。其支持的視頻格式以及播放協議非常豐富,幾乎包含了所有音視頻編解碼、封裝格式以及播放協議。而實時視頻直播一般使用的協議,如 RSTP,在 FFmpeg 中得到了很好的支持。 在手機直播軟件中,可以調用FFmpeg編寫一個播放器。
五、主要使用的協議:
HLS 協議 : >5M會被AppStore拒絕 服務器要求低 延遲高 多平臺
RTMP 協議: 電視直播 PC端使用 配合flash插件 及時性好
需要轉碼ffmpeg 延遲200ms
RTSP 協議: 攝像頭功能
軟解碼: ffmpeg
硬解碼:ios8之后 VideoToolBox 框架
直播過程大概為5步
數據采集-->數據編碼--->數據傳輸-->數據解碼-->顯示到屏幕
數據采集:采集視頻及音頻數據。 原始數據。
數據編碼:編碼成(flv)
數據傳輸:
(推流)把你本地得到編碼數據。上傳到流媒體服務器。rtmp hls (rtmp協議)
(拉流) 把你的數據從流媒體服務器上拉下來。
數據解碼: 流。。音頻流(),視頻流。。
播放顯示:openGLES:渲染。。GPUImage
直播聊天室: 融云(5000+) 視頻+聊天室、
主播開播、、 (在開播同時,需要申請。推流地址。+后臺創建融云聊天室)。。黑名單。。(通知。)。。全直播(通知)
送禮物,:扣款
三方提供商: 七牛。 YY 和斗魚 騰訊。。now。。網易云信、
總結
- 上一篇: iOS流媒体直播整个框架介绍(HLS、R
- 下一篇: 流媒体视频直播方案