FMUSER更輕鬆地傳輸視頻和音頻!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷蘭語
sq.fmuser.org ->阿爾巴尼亞人
ar.fmuser.org ->阿拉伯語
hy.fmuser.org - >亞美尼亞
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄羅斯語
bg.fmuser.org - >保加利亞
ca.fmuser.org ->加泰羅尼亞語
zh-CN.fmuser.org ->中文(簡體)
zh-TW.fmuser.org - >中國(繁體)
hr.fmuser.org ->克羅地亞語
cs.fmuser.org ->捷克
da.fmuser.org ->丹麥語
nl.fmuser.org - >荷蘭
et.fmuser.org ->愛沙尼亞語
tl.fmuser.org ->菲律賓
fi.fmuser.org ->芬蘭語
fr.fmuser.org - >法國
gl.fmuser.org ->加利西亞語
ka.fmuser.org ->喬治亞
de.fmuser.org ->德語
el.fmuser.org - >希臘
ht.fmuser.org ->海地克里奧爾語
iw.fmuser.org ->希伯來語
hi.fmuser.org ->印地語
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰島語
id.fmuser.org ->印尼語
ga.fmuser.org ->愛爾蘭
it.fmuser.org - >意大利
ja.fmuser.org ->日語
ko.fmuser.org ->韓文
lv.fmuser.org ->拉脫維亞
lt.fmuser.org - >立陶宛
mk.fmuser.org ->馬其頓語
ms.fmuser.org ->馬來語
mt.fmuser.org ->馬耳他語
no.fmuser.org - >挪威
fa.fmuser.org ->波斯語
pl.fmuser.org ->波蘭語
pt.fmuser.org ->葡萄牙語
ro.fmuser.org - >羅馬尼亞
ru.fmuser.org ->俄語
sr.fmuser.org ->塞爾維亞語
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亞
es.fmuser.org ->西班牙語
sw.fmuser.org ->斯瓦希里語
sv.fmuser.org ->瑞典語
th.fmuser.org - >泰國
tr.fmuser.org ->土耳其語
uk.fmuser.org ->烏克蘭語
ur.fmuser.org ->烏爾都語
vi.fmuser.org - >越南
cy.fmuser.org ->威爾士語
yi.fmuser.org - >意第緒語
04.實況轉播基礎知識介紹
1.收集視頻和音頻
* 1.1捕獲視頻和音頻編碼框架*
AVFoundation:AVFoundation是一個用於播放和創建實時視聽媒體數據的框架。 它還提供了一個Objective-C界面來處理這些視聽數據,例如編輯,旋轉和重新編碼
* 1.2視音頻硬件設備*
CCD:圖像傳感器:在圖像採集和處理過程中用於將圖像轉換為電信號。
拾音器:聲音傳感器:用於聲音收集和處理過程中,將聲音轉換為電信號。
音頻樣本數據:通常為PCM格式
視頻採樣數據:通常為YUV或RGB格式。 原始音頻和視頻的採集量非常大,需要通過壓縮技術進行處理以提高傳輸效率
2.視頻處理(美容,水印)
視頻處理原理:由於視頻最終是通過GPU逐幀顯示在屏幕上的,因此我們可以使用OpenGL ES處理視頻幀,從而使視頻具有各種效果,就像水龍頭流出一樣。然後流到不同的目標
現在,使用GPUImage框架實現了各種美容和視頻添加特殊效果應用程序。
*視頻處理框架*
GPUImage:GPUImage是基於OpenGL ES的功能強大的圖像/視頻處理框架。 它封裝了各種過濾器,還可以編寫自定義過濾器。 它內置了120多種常用濾鏡效果。
OpenGL:OpenGL(完整的開放圖形庫)是一個規範,用於定義交叉編程語言,跨平台編程接口,該接口用於三維圖像(也可以是二維圖像)。 OpenGL是一個專業的圖形程序界面,是一個功能強大且易於調用的基礎圖形庫。
OpenGL ES:OpenGL ES(用於嵌入式系統的OpenGL)是OpenGL 3D圖形API的子集,專為嵌入式設備(例如手機,PDA和遊戲機)而設計。
3.視頻編解碼
* 3.1視頻編碼框架*
FFmpeg:是一個跨平台的開源視頻框架,可以實現豐富的功能,例如視頻編碼,解碼,代碼轉換,流傳輸和回放。 支持的視頻格式和播放協議非常豐富,包括幾乎所有音頻和視頻編解碼器,封裝格式和播放協議。
-Libswresample:它可以執行諸如重新採樣,重新矩陣化和轉換音頻的採樣格式之類的操作。
-LibavCodec:提供一個通用的編解碼器框架,包括許多視頻,音頻,字幕流和其他編解碼器/解碼器。
-Libavformat:用於封裝/解壓縮視頻。
-Libavutil:包含一些常用功能,例如隨機數生成,數據結構,數學運算等。
-Libpostproc:用於視頻的某些後處理。
-Libswscale:用於視頻圖像縮放,色彩空間轉換等。
-Libavfilter:提供過濾功能。
X264:YuV編碼並將原始視頻數據壓縮為H.264格式
VideoToolbox:蘋果自己的視頻硬解碼和硬編碼API,但僅在iOS8之後打開。
audioToolbox:蘋果自己的音頻硬解碼和硬編碼API
* 3.2視頻編碼技術*
視頻壓縮編碼標準:用於視頻壓縮(視頻編碼)或解壓縮(視頻解碼)的編碼技術,例如MPEG,H.264,這些視頻編碼技術是對視頻進行壓縮編碼
主要功能:將視頻像素數據壓縮為視頻流,從而減少視頻數據量。 如果未對視頻進行壓縮和編碼,則其體積通常非常大,一部電影可能需要數百GB的空間。
注意:對視頻質量影響最大的是其視頻編碼數據和音頻編碼數據,與包裝格式無關
MPEG:一種視頻壓縮方法,使用幀間壓縮,僅存儲連續幀之間的差異,以實現更大的壓縮率
H.264 / AVC:一種視頻壓縮方法,該方法使用預預測和與MPEG中的PB幀相同的幀預測方法。 它可以根據需要生成適合網絡傳輸的視頻流,並具有較高的壓縮率。 具有更好的圖像質量
注1:如果比較單個屏幕的定義,則mpeg4具有優勢。 從動作連續性的定義來看,H.264具有優勢
注2:因為264的算法更複雜,所以該程序實現起來很麻煩,並且需要更多的處理器和內存資源來運行它。 因此,運行264需要相對較高的系統要求。
注3:因為264的實現更加靈活,所以一些實現留給了製造商自己。 儘管這給實現帶來了很多好處,但不同產品之間的互通已成為一個大問題,導致採用了A公司。編碼器編譯的數據必須由A公司的解碼器解決,以解決此類尷尬的事情。
H.265 / HEVC:一種基於H.264的視頻壓縮方法,保留了一些原始技術,同時改進了一些相關技術以改善比特流,編碼質量,延遲和算法複雜性之間的關係。
H.265是一種更有效的編碼標準,可以在相同的圖像質量效果下將內容的體積壓縮為較小的大小,並更快地傳輸並節省帶寬。
I幀:(關鍵幀)保留完整的圖像,只需要該幀的數據即可完成解碼(因為它包含完整的圖像
P幀:(差分幀)保留此幀和前一幀之間的差異。 解碼時,需要將先前緩存的圖片疊加在此幀定義的差異上,以生成最終圖片。 (P幀沒有完整的圖像數據,只有與前一幀的圖像不同的數據)
B幀:(雙向差分幀)保留當前幀與上一幀和下一幀之間的差異。 為了解碼B幀,不僅必須獲得先前的緩衝圖片,而且還必須獲得解碼的圖片。 通過前後圖像與當前幀數據圖像的疊加獲得最終結果。 B幀壓縮率很高,但是解碼時CPU會更累
幀內壓縮:在壓縮圖像幀時,僅考慮該幀的數據,而不考慮相鄰幀之間的冗餘信息。 通常,在幀中使用有損壓縮算法
InteRFrame壓縮:時間壓縮,通過在時間軸上比較不同幀之間的數據來壓縮數據。 幀間壓縮通常是無損的
混合(合成):將視頻流,音頻流甚至字幕流封裝到一個文件中(容器格式(FLV,TS)),然後將其作為信號進行傳輸。
* 3.3音頻編碼技術*
AAC,mp3:這些是音頻編碼技術,用於壓縮音頻
* 3.4費率控制*
多比特率:觀眾所處的網絡狀況非常複雜,可能是WiFi,可能是4G,3G甚至2G,那麼如何滿足多方需求? 根據當前的網絡環境,再多建幾條線並自定義比特率。
例如:我經常在視頻播放軟件中看到1024、720,HD,SD,平滑等,它們指的是各種比特率。
* 3.5視頻包裝格式*
TS:流媒體封裝格式。 流媒體封裝的優點是在播放之前不需要加載索引,這大大減少了第一次加載的延遲。 如果電影相對較長,則mp4文件的索引會很大,這會影響用戶體驗
為什麼使用TS:這是因為可以無縫拼接兩個TS剪輯,並且播放器可以連續播放
FLV:流媒體封裝格式。 由於文件非常小且加載速度非常快,因此可以在Internet上觀看視頻文件。 因此,FLV格式已成為當今的主流視頻格式。
4.推流
* 4.1數據傳輸框架*
librtmp:用於以RTMP協議格式傳輸數據
* 4.2流媒體數據傳輸協議*
RTMP:實時消息協議,這是Adobe系統開發的一種開放協議,用於Flash播放器和服務器之間的音頻,視頻和數據傳輸。 由於它是一個開放協議,因此可以全部使用。
RTMP協議用於對象,視頻和音頻的傳輸。
該協議建立在TCP協議或輪詢HTTP協議的基礎上。
RTMP協議就像用於保存數據包的容器。 這些數據可以是FLV中的視聽數據。 單個連接可以通過不同的通道傳輸多個網絡流,並且這些通道中的數據包以固定大小的數據包進行傳輸
塊:消息包
5.流媒體服務器
* 5.1常用服務器*
SRS:由中國人開發的優秀的開源流媒體服務器系統
BMS:它也是流媒體服務器系統,但不是開源的。 它是SRS的商業版本,具有比SRS更多的功能
nginx:自由和開源的Web服務器,通常用於配置流媒體服務器。
* 5.2數據分配*
CDN :(內容交付網絡),內容交付網絡,將網站的內容髮佈到距離用戶最近的網絡的“邊緣”,以便用戶可以在附近獲得所需的內容,解決了Internet網絡的擁塞問題,並提高了用戶對網站響應速度的訪問權限。
CDN:代理服務器,等效於中介服務器。
CDN的工作原理:例如請求流媒體數據
1.將流媒體數據上傳到服務器(原始站點)
2.源站存儲流媒體數據
3.客戶端播放流媒體,並從CDN請求編碼的流媒體數據
4. CDN服務器響應該請求。 如果該節點上不存在流媒體數據,它將繼續從源站請求流媒體數據;否則,它將繼續向源站點請求流媒體數據。 如果視頻文件已經在節點上緩存,請跳至步驟6。
5.原始站點響應CDN請求,並將流媒體分發到相應的CDN節點
6. CDN將流媒體數據發送到客戶端
返回原點:當用戶訪問某個URL時,如果解析的CDN節點未緩存響應內容,或者緩存已過期,它將返回到原始站點以進行搜索。 如果沒有人訪問,則CDN節點將不會主動轉到源站點來獲取它。
帶寬:固定時間可以傳輸的數據總量,
例如,一個64位,800MHz的前端總線,其數據傳輸速率等於64bit×800MHz÷8(Byte)= 6.4GB / s
負載均衡:一個服務器集以對稱的方式由多個服務器組成。 每台服務器具有同等的狀態,無需其他服務器的協助即可獨立提供服務。
通過某種負載分擔技術,從外部發送的請求被均勻地分配到對稱結構中的某個服務器,並且接收請求的服務器獨立地響應客戶端的請求。
負載平衡可以將客戶端請求平均分配到服務器陣列,從而提供對重要數據的快速訪問,並解決了大量並發訪問服務的問題。
這種集群技術可以用最少的投資獲得接近大型機的性能。
QoS(帶寬管理):限制每個組的帶寬,以便可以將有限的帶寬用於最大效果
6.拉流
直播協議選擇:
RTMP,RTSP可用於具有較高實時性或交互性需求的用戶
對於有播放或跨平台要求的用戶,建議使用HLS
直播協議比較:(5)
HLS:Apple定義的實時流協議。 HLS是基於HTTP協議實現的。 傳輸內容包括兩部分,一個是M3U8描述文件,另一個是TS媒體文件。 它可以實現實時和按需流媒體,主要用於iOS系統
HLS將通過點播技術實現直播
HLS是一種自適應比特率流傳輸。 客戶端將根據網絡條件自動選擇具有不同比特率的視頻流。 如果條件允許,請使用高比特率;當網絡繁忙時,請使用低比特率,並自動在兩者之間自動切換
改變。 當移動設備的網絡狀況不穩定時,這對於確保流暢播放非常有幫助。
實現方法是服務器提供多比特率的視頻流,並在列表文件中註明,播放器根據播放進度和下載速度自動調整。
HLS和RTMP的比較:HLS主要是由於相對較大的延遲,RTMP的主要優點是低延遲
HLS協議的小切片方法將生成大量文件,並且存儲或處理這些文件將導致大量資源浪費
與SP協議相比,優點是,一旦完成分段,後續的分發過程就完全不需要使用任何特殊的軟件。 普通的網絡服務器就足夠了,這大大降低了CDN邊緣服務器的配置要求,並且可以使用任何現成的CDN。 ,並且一般服務器很少支持RTSP。
HTTP-FLV:基於HTTP協議的流媒體內容。
與RTMP相比,HTTP更簡單和眾所周知,由於HTTP本身沒有復雜的狀態交互,因此內容延遲也可以為1到3秒,並且打開速度更快。 因此,從延遲角度來看,HTTP-FLV優於RTMP。
RTSP:實時流協議,定義了一對多應用程序如何通過IP網絡有效地傳輸多媒體數據。
RTP:實時傳輸協議。 RTP建立在UDP協議上,通常與RTCP一起使用。 它不提供按時交付機製或其他服務質量(QoS)保證。 它依靠低級服務來實現此過程。
RTCP:RTP的支持協議,主要功能是為RTP提供的服務質量(QoS)提供反饋,並收集有關媒體連接的統計信息,例如傳輸的字節數,傳輸的數據包數,丟包數,單向和雙向網絡時延等。
7.解碼
* 7.1解封裝*
解復用(分離):從視頻流,音頻流和字幕流合成的文件(容器格式(FLV,TS))中分解視頻,音頻或字幕,然後分別解碼。
* 7.2音頻編碼框架*
fdk_aac:音頻編碼和解碼框架,PCM音頻數據和AAC音頻數據轉換
* 7.3解碼介紹*
硬解碼:使用GPU解碼,減少CPU操作
優點:播放流暢,功耗低,解碼速度快,
*缺點:兼容性差
軟解碼:使用CPU進行解碼
優點:兼容性好
*缺點:CPU負擔增加,功耗增加,沒有硬件
解碼流暢,解碼速度相對較慢
8。 玩
ijkplayer:基於FFmpeg的開源Android / iOS視頻播放器
API易於集成;
可以削減編譯配置,以方便控制安裝包的大小;
支持硬件加速解碼,更省電
簡單易用,指定流URL,自動解碼和播放。
9.聊天互動
IM:(InstantMessaging)即時消息傳遞:是一種實時通信系統,它允許兩個或更多人使用網絡實時通信文本消息,文件,語音和視頻。
IM在實時廣播系統中的主要作用是實現觀眾與錨之間以及觀眾與觀眾之間的文本交互。
*第三方SDK *
騰訊雲:騰訊提供的即時通訊SDK,可以用作實時聊天室
容雲:一種常用的即時通訊SDK,可以用作實時聊天室
5.如何快速開發完整的iOS直播應用程序
1.使用第三方實時流SDK進行快速開發
Qiniu Cloud:Qiniu Live Cloud是專門為實時流媒體平台創建的全球實時流媒體服務,並且是實現SDK端到端實時流場景的企業級實時流媒體雲服務平台。
*熊貓電視和七龍珠電視等直播平台均使用Qiniu Cloud
網易視頻雲:基於專業的跨平台視頻編解碼技術和大規模的視頻內容分發網絡,可提供穩定,流暢,低延遲,高並發的實時音頻和視頻服務,並可將實時視頻無縫連接到它自己的應用程序。
2.為何第三方SDK公司向我們提供SDK?
我們希望將我們的產品及其產品綁在一條船上,並更多地依靠它。
技術可以賺錢,並可以幫助培養大量的程序員
3.直播功能:自行研究還是使用第三方直播SDK開發?
第三方SDK開發:對於初創團隊而言,自行開發的直播技術,技術指標,CDN和帶寬方面都有很大的門檻,並且製作完成產品會花費很多時間,這不利於公司的發展。投資。
自我研究:該公司的直播平台很大。 從長遠來看,自我研究可以節省成本,並且與直接使用SDK相比,技術方面的可控性要強得多。
4.第三方SDK的好處
降低成本
使用良好的第三方公司服務,您將不再需要花費高昂的價格聘請獵頭公司來挖掘昂貴的大母牛,也無需安撫大母牛的個人氣質。
提高效率
第三方服務的重點和代碼集成帶來的便利可能只需要1-2個小時,就可以節省將近99%的時間,這足以換取更多時間與競爭對手抗衡並增加收益。 成功的可能性很大
降低風險
借助專業的第三方服務,由於其快速,專業,穩定等特點,可以大大提高產品的競爭力(高質量的服務,研發速度等),並縮短試用期錯誤時間,這無疑將是挽救企業家精神的手段之一。
|
輸入電子郵件以獲取驚喜
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org ->荷蘭語
sq.fmuser.org ->阿爾巴尼亞人
ar.fmuser.org ->阿拉伯語
hy.fmuser.org - >亞美尼亞
az.fmuser.org ->阿塞拜疆
eu.fmuser.org ->巴斯克
be.fmuser.org ->白俄羅斯語
bg.fmuser.org - >保加利亞
ca.fmuser.org ->加泰羅尼亞語
zh-CN.fmuser.org ->中文(簡體)
zh-TW.fmuser.org - >中國(繁體)
hr.fmuser.org ->克羅地亞語
cs.fmuser.org ->捷克
da.fmuser.org ->丹麥語
nl.fmuser.org - >荷蘭
et.fmuser.org ->愛沙尼亞語
tl.fmuser.org ->菲律賓
fi.fmuser.org ->芬蘭語
fr.fmuser.org - >法國
gl.fmuser.org ->加利西亞語
ka.fmuser.org ->喬治亞
de.fmuser.org ->德語
el.fmuser.org - >希臘
ht.fmuser.org ->海地克里奧爾語
iw.fmuser.org ->希伯來語
hi.fmuser.org ->印地語
hu.fmuser.org - >匈牙利
is.fmuser.org ->冰島語
id.fmuser.org ->印尼語
ga.fmuser.org ->愛爾蘭
it.fmuser.org - >意大利
ja.fmuser.org ->日語
ko.fmuser.org ->韓文
lv.fmuser.org ->拉脫維亞
lt.fmuser.org - >立陶宛
mk.fmuser.org ->馬其頓語
ms.fmuser.org ->馬來語
mt.fmuser.org ->馬耳他語
no.fmuser.org - >挪威
fa.fmuser.org ->波斯語
pl.fmuser.org ->波蘭語
pt.fmuser.org ->葡萄牙語
ro.fmuser.org - >羅馬尼亞
ru.fmuser.org ->俄語
sr.fmuser.org ->塞爾維亞語
sk.fmuser.org ->斯洛伐克
sl.fmuser.org - >斯洛文尼亞
es.fmuser.org ->西班牙語
sw.fmuser.org ->斯瓦希里語
sv.fmuser.org ->瑞典語
th.fmuser.org - >泰國
tr.fmuser.org ->土耳其語
uk.fmuser.org ->烏克蘭語
ur.fmuser.org ->烏爾都語
vi.fmuser.org - >越南
cy.fmuser.org ->威爾士語
yi.fmuser.org - >意第緒語
FMUSER更輕鬆地傳輸視頻和音頻!
聯絡我們
分類
電子通訊