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 - >意第緒語
1,開發手機視頻直播
可以看出,從PC到手機,越來越多的直播應用在線上,並且移動廣播進入了前所未有的爆炸階段。 但是,對於大多數移動實時廣播,它仍然主要由本機客戶端實現,但是HTML5在移動實時廣播端也起著不可替代的作用,例如HTML5。HTML5具有傳輸速度快,易於發布的優點,因此也可以實時播放視頻何時才是最重要的。
完整的現場直播可以分為以下幾類:
(1)視頻記錄終端:一般來說,它是計算機音頻和視頻輸入設備,或者是移動終端上的攝像頭或麥克風。 當前,手機視頻是主要部分。
(2)視頻播放器:它可以是計算機上的播放器,也可以是手機上的本機播放器,並且可以是HTML5的視頻標籤。 目前,它仍然是手機上的主要本地播放器。
(3)視頻服務器:通常為Nginx服務器,用於接受視頻錄製方提供的視頻源,並向視頻播放端提供流媒體服務。
2,HTML5錄製視頻:
對於HTML5視頻錄製,強大的webrtc(WEB實時通信)是一項支持Web瀏覽器中的實時語音或視頻對話的技術。 缺點是它僅在PC chrome上支持更好,而移動端則不理想。
使用webrtc錄製視頻的基本過程是:
調用window.navigator.webkitGetUserMedia(獲取用戶PC攝像機的視頻數據)。
將獲取的視頻流數據轉換為window.webkitRTCPeerConnection(視頻流數據格式)。
使用websocket將視頻流數據傳輸到服務器
由於很多方法都需要以瀏覽器為前綴,因此許多移動瀏覽器不支持webrtc,因此實際的視頻錄製仍由客戶端(IOS,Android)實現,效果會更好。
3,HTML5直播視頻:
對於視頻播放,可以使用HLS(HTTP實時流)協議播放實時流。 IOS和Android都自然支持此協議。 直接配置和使用視頻標籤很簡單。
這是使用視頻播放實時視頻的簡單代碼:
(1)什麼是HLS協議:
簡而言之,整個流被分為多個小文件,這些文件是根據HTTP下載的。 一次僅下載一些。 HTML3廣播實時視頻中引入的.M8u5先前提到的文件基於HLS協議,該協議存儲視頻流的元數據。
每個.M3u8文件對應於幾個TS文件,它們是真實視頻存儲的數據。 m3u8文件僅存儲某些TS文件的配置信息和相關路徑。 播放視頻時,.M3u8文件是動態更改的。 視頻標籤將解析該文件並找到要播放的相應TS文件。 因此,為了加快速度,.M3u8文件將用於分析文件並找到相應的TS文件進行播放。 因此,為了加快速度,.M3u8文件將用於分析文件並找到相應的TS文件進行播放。 因此,為了加快速度,將其放在Web服務器上,並將TS文件放在CDN上。
.M3u8文件實際上是使用UTF-3編碼的M8U文件。 該文件不能單獨播放,只能播放包含播放信息的文本文件。
(2)HLS請求過程:
HTTP請求m3u8的URL。
服務器返回m3u8的播放列表,該列表會實時更新。 通常,一次提供5個數據段的URL。
客戶端解析m3u8的播放列表,然後請求每個段的URL,以獲得TS數據流。
(3)HLS直播延遲:
我們知道,HLS協議將實時流劃分為一小段視頻,以供下載和播放。 因此,假設列表包含5個TS文件,每個TS文件包含5秒的視頻內容,則總延遲為25秒。 因為當您看到這些視頻時,主持人已錄製了該視頻並上傳了該視頻,所以延遲是由此引起的。 當然,可以縮短單個TS文件的列表長度和大小,以減少延遲。 在極端情況下,列表長度可以減小為1,TS持續時間為1s。 但是,這將增加請求數量並增加服務器壓力。 當網絡速度較慢時,將產生更多的緩衝區。 因此,蘋果官方推薦的TS時間為10s,因此將大大改變30s的延遲時間。 因此,服務器接收流,進行代碼轉換,保存,剪切該塊,然後將其分發給客戶端。 這是延遲的根本原因。
有關延誤的更多問題,請參閱Apple的官方地址:
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html
但是,HTML5實時視頻具有一些不可替代的優勢:
①溝通良好,易於共享等操作。
②可以動態發布,有利於產品需求的實時迭代和快速發布。
③不安裝應用程序,直接打開瀏覽器。
4,IOS採集(錄製)音視頻數據OS
對於音頻和視頻的採集和記錄,首先,需要闡明以下概念:
(1)視頻編碼:視頻編碼是指將視頻格式的文件通過特定的壓縮技術轉換為另一視頻格式的文件的方式。 我們使用iPhone錄製的視頻必須先經過編碼,上傳和解碼,然後才能在用戶端播放器中播放。
(2)編解碼標準:視頻流傳輸中最重要的編解碼標準包括ITU的H.261,H.263和H.264,其中HLS協議支持H.264格式編碼。
(3)音頻編碼:類似於視頻編碼,原始音頻流按照一定的標准進行編碼,上傳,解碼,然後在播放器中播放。 當然,音頻也有許多編碼標準,例如PCM碼,wma碼,AAC碼等。我們的HLS協議支持的音頻編碼方法是AAC碼。
視頻和音頻數據採集主要分為以下步驟:
(1)在IOS上使用攝像頭採集視頻和音頻數據
(2)在IOS中,原始音頻和視頻數據流可以通過avcapturesession和avcapturedevice收集。
(3)視頻採用h264編碼,音頻採用AAC編碼。 在IOS中,已經有打包的編碼庫來實現音頻和視頻的編碼。
(4)對編碼後的音視頻數據進行組裝和密封處理;
(5)建立RTMP連接並將其推送到服務器。
以下是收集音頻和視頻數據的具體過程:
(1)關於RTMP:
實時消息協議(RTMP)是Macromedia開發的一組實時視頻協議,現在屬於Adobe。 與HLS一樣,它可以用於視頻廣播。 區別在於RTMP無法在基於Flash的IOS瀏覽器中播放,但其實時性優於HLS。 因此,該協議通常用於上傳視頻流,即視頻流被推送到服務器。
(2)推流
所謂的流傳輸是指將我們已編碼的音頻和視頻數據發送到視頻流服務器。 在IOS代碼中,通常使用RTMP流。 Librtmp IOS(第三方庫)可用於流式傳輸。 Librtmp封裝了一些核心API供用戶調用。 例如,推送API等,配置服務器地址,然後將轉碼視頻流推送到服務器。
那麼如何構建流服務器?
構建簡單的流服務器。 由於我們上傳的視頻流基於RTMP協議,因此服務器必須支持RTMP。 它可能會採取以下步驟:
(1)安裝nginx服務器。
(2)已安裝nginx的RTMP擴展名。 為Nginx配置conf文件
(3)重啟nginx,將RTMP的流地址寫為rtmp:// ip:1935 / hls / mystream,其中HLS_ Path代表生成的地址。M3u8和TS文件,HLS_ Fragment代表slice的長度,mystream代表一個實例。 可以自行設置要生成的文件名。
5,直播中的用戶互動:
對於實時廣播中的用戶交互,可以將其大致分為:
送禮物。
評論或播放
對於禮品交付,可以使用DOM和CSS3實現禮品發送的邏輯以及HTML5上的一些特殊禮品動畫。 技術上的困難不是很大。
對於彈幕來說,要稍微複雜一點,您可能需要注意以下幾點:
彈丸的實時性能可以通過webscock實時發送和接收並進行渲染。
對於不支持websocket的瀏覽器,只能將其降級為長時間輪詢或發送請求以獲取實時彈出窗口的前端計時器。
渲染中的動畫和碰撞檢測(即無重疊)等
|
輸入電子郵件以獲取驚喜
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更輕鬆地傳輸視頻和音頻!
聯絡我們
分類
電子通訊