天天看點

直播技術彙總

<a href="http://www.jianshu.com/p/5b1341e97757" target="_blank">做一款仿映客的直播App?看我就夠了</a>

<a href="http://www.jianshu.com/p/53c393098ba3" target="_blank">直播時代--IOS直播用戶端SDK,美顔直播</a>

<a href="https://github.com/erduoniba/HDLiveVideoCoreDemo/blob/master/%E7%9B%B4%E6%92%AD%E6%8A%80%E6%9C%AF%E6%B1%87%E6%80%BB.md" target="_blank">直播技術彙總</a>

技術相對都比較成熟,裝置也都支援寫死。iOS還提供現成的 Video ToolBox架構,可以對攝像頭和流媒體資料結構進行處理,但Video ToolBox架構隻相容8.0以上版本,8.0以下就需要用x264的庫軟編了。

github上有現成的開源實作,推流、美顔、水印、彈幕、點贊動畫、濾鏡、播放都有。技術其實不是很難,而且現在很多雲廠商都提供SDK,七牛雲、金山雲、樂視雲、騰訊雲、百度雲、鬥魚直播伴侶推流端,功能幾乎都是一樣的,沒啥亮點,不同的是整個直播平台服務差異和接入的簡易性。後端現在 RTMP/HTTP-FLV 清一色,App挂個源站直接接入雲廠商或CDN就OK。

1、直播項目傳輸方式介紹

直播技術彙總

2、直播項目采集端(推送端)介紹

目前國内很多知名的推流架構都是對VideoCore的二次開發。這個架構主要使用C++寫的,支援RTMP推流,但對于iOS開發者來說有點晦澀難懂(精通C++的除外)。想開源和免費的可以選擇現在的幾個知名項目VideoCore + GPUImage+基于GPU的美顔濾鏡 ,播放用IJKPlayer自己修改。

架構提供iOS蘋果手機的RTMP推流填寫RTMP服務位址,直接就可以進行推流,SDK下載下傳後簡單的工程配置後能直接運作,實作了美顔直播和濾鏡功能,基于OpenGL,前後攝像頭随時切換,提供RTMP連接配接狀态的回調。

這個架構是國内比較早的一款推流架構有不少在使用這個SDK,功能非常齊全,作者也比較牛,用來學習推流采集相關内容非常好,但是內建到工程中有些困難(對于我來說)。總的來說這是一款非常厲害的推流SDK,幾乎全部使用C++寫的,編譯效率非常好,如果有實力的話推薦使用這個架構來做自己項目的推流端。

架構支援RTMP、HlS (HTTP Live Streaming:蘋果自家的動态碼率自适應技術) 。主要用于PC和Apple終端的音視訊服務。包括一個m3u(8)的索引檔案,TS媒體分片檔案和key加密串檔案。

推薦這個架構第一是因為它主要使用OC寫的,剩下的用C語言寫的,架構檔案十厘清晰,這對不精通C++的初學者提供了很大的便利,并且拓展性非常強,支援動态切換碼率功能,支援美顔功能。

2.4.美顔功能

3、直播項目播放端介紹

播放方法:

<a href="https://github.com/runner365/LiveVideoCoreSDK" target="_blank">基于LiveVideoCoreSDK完整項目源碼</a>

直播技術彙總

ii. 配置nginx和RTMP:

找到<code>nginx.conf</code> 檔案所在位置<code>(/usr/local/etc/nginx/nginx.conf)</code> , 點選<code>Finder</code> -&gt;<code>前往</code> -&gt;<code>前往檔案夾</code> -&gt;<code>輸入/usr/local/etc/nginx/nginx.conf</code> -&gt; 用記事本工具(推薦<code>Sublime Text</code>) 打開 <code>nginx.conf</code>。直接滾到最後一行, 在最後一個<code>}</code> (即最後的空白處, 沒有任何<code>{}</code>)後面添加:

然後重新開機nginx(其中的1.10.1要換成你自己安裝的<code>nginx</code>版本号, 檢視版本号用<code>nginx -v</code>指令即可):

iii. 安裝FFmpeg:

下載下傳後安裝,打開 VLC,然後 File-&gt;open network(<code>command+N</code>)輸入:

直播技術彙總

v.開始FFMpeg推流:

<a href="http://7xqhx8.com1.z0.glb.clouddn.com/loginmovie.mp4" target="_blank">mp4視訊下載下傳位址</a>

下載下傳視訊到桌面後,執行推流指令:

VLC便開始播放流媒體:

直播技術彙總

将項目中<code>ViewController.m</code> 的<code>viewDidLoad</code> 中改為如下:

<code>iOS10</code> 以上的手機需要在 <code>info.plist</code> 中加入直播所需要的權限:

運作即可直播!

3、直播項目采集端:從0到1開始內建LiveVideoCoreSDK

i. 在<code>Desktop</code> 建立檔案夾<code>HDLiveVideoCoreDemo</code> 使用Xcode建立項目組(Workspace),命名為<code>HDLiveVideoCoreDemo.xcworkspace</code> 并儲存在 <code>HDLiveVideoCoreDemo</code> 中:

直播技術彙總
直播技術彙總
直播技術彙總

iii、打開<code>HDLiveVideoCoreDemo.xcworkspace</code> ,建立 <code>LiveVideoCoreDemo.xcodeproj</code> 項目:

直播技術彙總
直播技術彙總
直播技術彙總

iv、分别将<code>LiveVideoCoreSDK.xcodeproj</code> 和 <code>RtmpLivePushSDK.xcodeproj</code> 拖入到項目組中:

直播技術彙總
直播技術彙總

v、将<code>libLiveVideoCoreSDK</code> 加入到<code>LiveVideoCoreDemo</code> 項目中,并添加對應所需要的系統架構和tdb檔案:

直播技術彙總

vi、到此為止,<code>LiveVideoCoreSDK</code> 依賴的環境系統檔案已經內建到新項目中,接下來對項目進行必要的配置:

因為<code>LiveVideoCoreSDK</code> 不支援<code>Bitcode</code> , 是以需要設定<code>Enable Bitcode</code> 為<code>NO</code>

因為<code>LiveVideoCoreSDK.h</code> 不在<code>LiveVideoCoreDemo</code> 項目中,是以需要 設定

<code>Header Search Paths</code> : <code>../LiveVideoCoreSDK/</code>

<code>../LiveVideoCoreSDK/</code> 這個是 <code>LiveVideoCoreSDK.h</code> 相對于<code>LiveVideoCoreDemo.xcodeproj</code> 的路徑。

vii、添加代碼運作。

<code>LiveVideoCoreSDK</code> 內建完畢!

4、直播播放端:

from:http://blog.csdn.net/u012390519/article/details/52871859

繼續閱讀