1. 程式人生 > >iOS【IOS視訊直播:高仿騰訊旗下映客直播型別】

iOS【IOS視訊直播:高仿騰訊旗下映客直播型別】

效果圖如下


NowGif.gif

->


4349FA93-F15B-4287-9162-3AA27B223A72.png
FA783124-4B81-455F-A6E6-461ACA874478.png

處理了對IPad版本的適配


img_0257.png
img_0258.png

隨著直播市場的火熱,市場大軍都逐步進入直播市場 ,騰訊旗下的NOW直播也不例外

先說說直播設計底層

一 、流媒體

1 - 偽流媒體

1.1 掃盲:邊下載邊播放
1.2 偽流媒體:視訊不是實時播放的,先把視訊放在資料庫,再供客戶端訪問,比如:優酷,愛奇藝等

1.3 特點:

邊下邊存,檔案會儲存.
遵守了 HTTP 協議,但是沒有遵守 RTMP 和 HLS 協議
能夠實現快進和快退的功能
實現簡單,成本低

2 實時流媒體

2.1 真正的流媒體,邊下邊播,但不會儲存下載的檔案

2.2 特點:

下載的檔案不會儲存
遵守了 RTMP 或者 HLS 協議
只能實現實時播放,不能快進或者快退
實現成本比較高,實現複雜

3 常見的流媒體協議: HLS(蘋果基於 HTTP 開發的流媒體協議),RTMP(Adobe 的私有協議),MMS (微軟).

HLS協議
1 HLS: HTTP Live Streaming 是蘋果公司實現的基於HTTP的流媒體傳輸協議,可實現流媒體的直播和點播,主要應用在iOS系統,為iOS裝置提供音視訊直播和點播方案.

2 直播原理:通過相關裝置採集攝像頭的視訊和麥克風的音訊,並實時進行 H264視訊編碼和 AAC 音訊音訊編碼,並按照 HLS協議規範,轉換為標準的 TS檔案以及m3u8(是一個地址,裡面記錄了伺服器多對應的檔案)索引檔案.

3 HLS 點播:就是對 HTTP 進行分段播放,不同的就是在於對 HTTP 進行的分段非常小,因此可以說, HLS 點播的重點就是對 HTTP 進行分段.(現在的分段技術比較常見不在贅述)

4 HLS 直播原理:和其他的常見的直播協議(如: RTMP,RTSP,MMS)不同, 遵守HLS 協議的直播在客戶端接收到的並不是完整的資料流. 即HLS 協議的伺服器將最新獲取到的片段進行分割為小片段,客戶端獲取伺服器剛編好的最新的片段進行播放.這樣伺服器端不斷的獲取新的資料進行分割成新的片段,客戶端不斷的從伺服器端獲取最近的片段進行播放.由此可以說 HLS 是以點播的形式實現的直播.

5 HLS 的特點:由於資料是通過 HTTP 傳輸的,所以不用考慮防火牆和代理的問題,由於分割的時長很短,所以客戶端可以很快的實現位元速率切換,以適應不同的頻寬.HLS 協議的延遲一般會高於其他協議的流媒體直播.
6 HLS 實現步驟採取視訊源和音訊源資料對原始資料盡心 H264和 ACC 編碼視訊和音訊資料封裝為 MPEG-TS 包 HLS 分段生成策略以及 m3u8索引檔案 HTTP 傳輸協議
注:需要說明的是 HLS 分段策略的分段時長以10S 為最好.

二 、RTMP 協議

1 RTMP 實時訊息傳輸協議,是現在比較常用的協議
2 RTMP使用原理:首先推流到 RTMP 伺服器,然後再有 RTMP 伺服器提供 RTMP 視訊服務.
注:需啊說明的是:RTMP 也提供 HLS, 將音視訊切位 ts 流,然後使用者可以直接播放 m3u8流媒體.

3 RTMP協議規定
3.1 建立一個網路連線
3.2 建立一個網路流(傳送多媒體的通道)
注:只能建立一個網路連線,但是可以建立多個網路流

4 RTMP 協議使用步驟
4.1 握手:RTMP 協議都是以握手開始的

客戶端先發送 C0,C1兩個資料塊,伺服器收到 C1或者 C2塊的時候開始傳送 S0和 S1
客戶端收齊 S0和 S1的時候開始傳送 C2,當伺服器收齊 C0和 C1的時候開始傳送 S2
當客戶端收到 S2同時伺服器收到 C2 的時候,握手完成
4.2 建立連線:建立客戶端和伺服器端的網路連線

> 客戶端傳送命令訊息中的”connect”,到伺服器,請求與一個伺服器應用例項建立連線
> 伺服器接收到請求後,傳送確認訊息,同時連線到請求中的連線例項
> 伺服器傳送設定頻寬協議訊息到客戶端
> 客戶端接收到 設定頻寬 訊息之後,傳送確認訊息到伺服器
> 伺服器傳送使用者控制訊息中的”stream”訊息到客戶端
> 伺服器傳送訊息命令中的”結果”訊息到客戶端

4.3 建立流:建立客戶端和伺服器端的”流連線”

> 客戶端傳送訊息命令中的”建立流”到伺服器
> 伺服器接收到”建立流”命令後,傳送”結果”命令到客戶端

4.4 播放傳輸音視訊資料

> 客戶端傳送”播放”命令到伺服器
> 伺服器收到訊息後,傳送 設定訊息大小協議訊息
> 伺服器傳送” streambegin”,告知客戶端流 ID
> 若播放成功的話,伺服器傳送”響應狀態”到客戶端.告知客戶端播放成功
> 伺服器傳送客戶端要播放是資料

流媒體的播放

1 HLS 的流媒體通過AVPlayer/AVPlayerViewController 和 MPMviePlayerController/MPMoviePlayerViewController 來實現.
2 RTMP 的流媒體要用第三方框架實現 如 FFMpeg ,IJKPlayer和 VLC 等
3 常用的流媒體框架:百度/阿里/騰訊/網易/鬥魚直播伴侶/七牛雲等

精簡了專案,進行了快速開發,整個專案僅用了一天時間

相關推薦

iOSIOS視訊直播仿直播型別

效果圖如下 NowGif.gif -> 4349FA93-F15B-4287-9162-3AA27B223A72.png FA783124-4B81-455F-A6E6-461ACA874478.png 處理了對IPad版本的適配 img_

Android之仿微博

            匯入原始碼到eclipse出現報錯的童鞋注意:我用的是utf-8編碼,因為騰訊的api是utf-8編碼,其實我也不喜歡改來該去的!        國慶後,一直在忙,都沒有什麼時間做自己的事情,哎,上班的孩子傷不起啊!這個微博也是斷斷續續的,每天晚

自定義View——仿TIM拉重新整理View

一 概述 自定義 View 是 Android 開發裡面的一個大學問。偶然間看到 TIM 郵箱介面的重新整理 View 還挺好玩的,於是就自己動手實現了一個,先看看 TIM 裡邊的效果圖: 二 需求分析 看到上面的動圖,大概也知道我們需要實現的功能: 根據拖動的進度來移動小球的位

iOS新聞應用源碼,仿今日頭條源碼等

http watch 如何 簡單的 ios開發 優酷 語言 bae calayer iOS精選源碼 城市列表選擇 一款非常時尚的照片選擇插件 優酷播放按鈕動畫 BRPickerView是iOS的選擇器組件,主要包括:日期選擇器、時... 選擇位置坐下動畫Demo

最新仿直播APP開發實戰專案IOS開發實戰8天

第 1 章:直播準備 1: 【錄播】 課程大綱介紹 09:56   2: 【錄播】 瞭解直播技術和騰訊雲直播 09:54   3: 【錄播】 基礎封裝 23:13   4: 【錄播】 網路封裝講解 12:42   5: 【錄播】 介面協議 18:34   6: 【錄播】 MV

iOS 利用autolayout自定義行仿寫朋友圈介面,OC與Swift版本

在此,本文章將會提到並用到的知識 1、tableview預設行高與自動佈局autolayout綜合使用, 2、autoLayout佈局在tableviewCell裡的約束細節。 3、關於MVC,tableview的解耦與封裝。 1、table

iOS UIKit-UIPageControl利用delegate定位圓點位置 之 四舍五入小技巧

優化 距離 scroll current control 水平 技術 觸發 src 在UIScrollView中會加入UIPageControl作為頁碼標識,能夠讓用戶清楚的知道當前的頁數。我們須要優化的一點是讓pageControl

iOS UIKit-UIScrollView 無法滾動的原因/兩種情況的彈簧效果

1、沒有設定contentSize或者contentSize的尺寸小於等於該scrollView的尺寸 2、scrollView.enable = NO;(僅僅是讓scrollView不能滾動)3、userInteractionEnable = NO;(scrollView

iOS iOS 10之後tabBar頂部黑線如何去掉

在 iOS 10 之前,如果將 tabBar 上面的黑線去掉,可執行下面程式碼: [self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];

自定義View系列仿“淘寶頭條”

先來看一下今天我們要完成的效果圖吧:自定義View效果圖不要在意細節,別管它是淘寶頭條還是京東頭條,我們只需要知道,這個效果很炫就行了。另外,這個控制元件是可以點選的,點選效果就是進入指定介面,製作Gif的時候手抖,忘記去點選了,你們將就著看吧。首先看一下,這個控制元件是一個

原始碼推薦(6.16)仿新浪微博,支付寶(仿)原始碼

模仿新浪微博做的一款app,有傳送博文,評論,點贊,私聊功能(修復了滑動會卡的bug) 使用到的第三方庫: AVOSCloud AVOSCloudIM JSBadgeView fmdb MBProgressHUD SDWebImage MessageDisplayKit

CloudStack級網絡模式的網卡配置

otp 高級 ridge pro eno ash add 場景 dst 一、場景描述最近在測試CloudStack高級網絡模式的配置,期間網絡這塊的確對我造成了一些困擾,現將其整理出來,供大家分享。兩塊物理網卡:ifcfg-eno1以及ifcfg-eno2兩塊橋接網卡:if

MYSQL可用解決方案PHXSQL(微信)編譯實錄

mysql phxsql [root@king01 ~]# rpm -ivh epel-release-6-8.noarch.rpm[root@king01 ~]# yum install -y automake zlib autoconf cmake gcc libtool ncurses ncur

劍指Offer學習面試題13 在O(1)時間刪除連結串列結點

程式碼實現: public class Test13 { /** * 連結串列結點 */ public static class ListNode { int value; // 儲存連結串列的值 L

仿直播介面的跑馬燈效果

上上篇寫到了仿映客直播的刷禮物效果,感謝各位大神提出了一系列的改進建議。 其實在映客的直播介面上還有一個跑馬燈的效果,使用者在傳送訊息的時候,開啟彈幕效果,那麼你傳送的訊息不但直接在訊息列表上,還會

Android 仿直播間給主播發送禮物(實現連擊效果)

QQ交流群:611902811 首先先上圖 個人建議使用Gift1Activity專案中的庫,Gift2Activity專案中的庫後面不怎麼維護了 1:到GitHub 把專案clone到本地。 2: 把giftlibrary庫依賴到你的專

使用ucloud直播平臺SDK和環信IM低仿直播APP的應用

簡介 這是一款低仿映客直播的Android直播聊天應用,本專案通過使用ucloud的直播平臺提供的sdk進行推流和拉流,使用環信IM來作為使用者系統的管理直播聊天室中訊息收發、傳送禮物、彈幕、私信等功能。本專案旨在借用第三方直播平臺提供的sdk方案快速搭建一款

用scrapy框架爬取直播用戶頭像

xpath print main back int open for pri nbsp 1. 創建項目 scrapy startproject yingke cd yingke 2. 創建爬蟲 scrapy genspider live 3. 分析http://www.i

創夢天地關嵩借力雲,打造文娛新生態——雲+未來峰會回顧

發布 幫助 devel 質量 戰略合作 明顯 unity 入口 可能 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 今年騰訊雲+未來峰會主題的關鍵詞是“煥·啟”,這是包含無限希望的兩個字,讓人倍感振奮。“煥·啟”是什麽意思?在我的理解中,“煥·啟”本身就是激

Android仿手機管家實現桌面懸浮窗小火箭發射的動畫效果

無標題 服務 ice null obj activit 中間 ktr https 功能分析: 1、小火箭遊離在activity之外,不依附於任何activity,不管activity是否開啟,不影響小火箭的代碼邏輯,所以小火箭的代碼邏輯是要寫在服務中; 2、小火箭掛載在手機