流媒體在Android中有nuplayer來實現的,在開始講解android流媒體前,我們先來講講流媒體傳輸協議,了解了基本協議,我們在看代碼的過程中,就會有事半功倍的效果。我們將主要講解RTSP,HTTP,HTTPS, SDP四種協議。下面就詳情來看看!
一:RTSP協議簡介
實時流協議RTSP是一個應用層協議,用于控制具有實時特性的數據(例如多媒體流)的傳送。
RTSP協議一般與RTP/RTCP和RSVP等底層協議一起協同工作,提供基于Internet的整套的流服務。它可以選擇發送通道(例如:UDP、組播UDP和TCP)和基于RTP的發送機制。它可以應用于組播和點播。RTP, RTCP,RSVP 定義如下:
1. 實時傳輸協議RTP(Real-time Transport protocol)
2. 實時傳輸控制協議RTCP(Real-time Transport Control protocol)
3. 實時流協議RTSP(Real Time Streaming protocol)
4. 資源預留協議RSVP(Resource Reserve Protocol)
RTSP協議機理:
客戶機在向視頻服務器請求視頻服務之前,首先通過HTTP協議從Web服務器獲取所請求視頻服務的演示描述(Presentation description )文件,在RTSP中,每個演示(Presentation)及其所對應的媒體流都由一個RTSP URL標識。整個演示及媒體特性都在一個演示描述(Presentation description )文件中定義,該文件可能包括媒體編碼方式、語言、RTSP URLs、目標地址、端口及其它參數。用戶在向服務器請求某個連續媒體流的服務之前,必須首先從服務器獲得該媒體流的演示描述(Presentation description )文件以得到必需的參數,演示描述文件的獲取可采用HTTP、email或其他方法。利用該文件提供的信息定位視頻服務地址(包括視頻服務器地址和端口號)及視頻服務的編碼方式等信息。然后客戶機根據上述信息向視頻服務器請求視頻服務。視頻服務初始化完畢,視頻服務器為該客戶建立一個新的視頻服務流,客戶端與服務器運行實時流控制協議RTSP,以對該流進行各種VCR控制信號的交換,如播放(PLAY)、停止(PAUSE)、快進、快退等。當服務完畢,客戶端提出拆線(TEARDOWN)請求。服務器使用RTP/UDP協議將媒體數據傳輸給客戶端,一旦數據抵達客戶端,客戶端應用程序即可播放輸出。在流式傳輸中,使用RTP/RTCP/UDP和RTSP/TCP兩種不同的通信協議在客戶端和服務器間建立聯系。如下圖:
RTSP中的所有的操作都是通過服務器和客戶方的消息應答來完成的,其消息包括請求(Request)和響應(Response)兩種,RTSP正是通過服務器和客戶端的消息應答來完成媒體流的創建、初始化(SETUP)、VCR控制(PLAY、PAUSE)以及拆線(TEARDOWN)等操作的。如下圖:
RSTP 一些基本方法及用途:
OPTIONS 獲得有效方法
SETUP 建立傳輸
ANNOUNCE 改變媒體文件的類型
DESCRIBE 獲得媒體文件的類型
PLAY 播放
RECORD 刻錄
REDIRECT 轉換客戶端到新的服務器
PAUSE 暫停
SET PARAMETER 設置設備,編碼等參數
TEARDOWN 移除狀態
完整的播放過程:
GET 過程:
C->W: GET /twister.sdp HTTP/1.1
Host: www.example.com
Accept: application/sdp
W->C: HTTP/1.0 200 OK
Content-Type: application/sdp
v=0
o=- 2890844526 2890842807 IN IP4 192.16.24.202
s=RTSP Session
m=audio 0 RTP/AVP 0
a=control:rtsp://audio.com/twister/audio.en
m=video 0 RTP/AVP 31
a=control:rtsp://video.com/twister/video
SETUP過程:
C->A(audio): SETUP rtsp://audio.com/twister/audio.en RTSP/1.0
CSeq: 1
Transport: RTP/AVP/UDP;unicast
;client_port=3056-3057
A->C: RTSP/1.0 200 OK
CSeq: 1
Session: 12345678
Transport: RTP/AVP/UDP;unicast
;client_port=3056-3057;
;server_port=5000-5001
C->V(video): SETUP rtsp://video.com/twister/video RTSP/1.0
CSeq: 1
Transport: RTP/AVP/UDP;unicast
;client_port=3058-3059
V->C: RTSP/1.0 200 OK
CSeq: 1
Session: 23456789
Transport: RTP/AVP/UDP;unicast
;client_port=3058-3059
;server_port=5002-5003
PLAY 過程:
C->V: PLAY rtsp://video.com/twister/video RTSP/1.0
CSeq: 2
Session: 23456789
Range: smpte=0:10:00-
V->C: RTSP/1.0 200 OK
CSeq: 2
Session: 23456789
Range: smpte=0:10:00-0:20:00
RTP-Info: url=rtsp://video.com/twister/video
;seq=12312232;rtptime=78712811
C->A: PLAY rtsp://audio.com/twister/audio.en RTSP/1.0
CSeq: 2
Session: 12345678
Range: smpte=0:10:00-
A->C: RTSP/1.0 200 OK
CSeq: 2
Session: 12345678
Range: smpte=0:10:00-0:20:00
RTP-Info: url=rtsp://audio.com/twister/audio.en
;seq=876655;rtptime=1032181
close 過程:
C->A: TEARDOWN rtsp://audio.com/twister/audio.en RTSP/1.0
CSeq: 3
Session: 12345678
A->C: RTSP/1.0 200 OK
CSeq: 3
C->V: TEARDOWN rtsp://video.com/twister/video RTSP/1.0
CSeq: 3
Session: 23456789
V->C: RTSP/1.0 200 OK
CSeq: 3
關于RTSP的一些時間概念:
normal play time (NPT): seconds, microseconds
MPTE timestamps (seconds, frames)
absolute time (for live events)
二 HTTP協議簡介
HTTP是一個屬于應用層的面向對象的協議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統。它于1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(Next Generation of HTTP)的建議已經提出。
1:HTTP協議的主要特點可概括如下:
1.支持客戶/服務器模式。
2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。
由于HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
2:HTTP協議的幾個重要概念
1.連接(Connection):一個傳輸層的實際環流,它是建立在兩個相互通訊的應用程序之間。
2.消息(Message):HTTP通訊的基本單位,包括一個結構化的八元組序列并通過連接傳輸。
3.請求(Request):一個從客戶端到服務器的請求信息包括應用于資源的方法、資源的標識符和協議的版本號
4.響應(Response):一個從服務器返回的信息包括HTTP協議的版本號、請求的狀態(例如“成功”或“沒找到”)和文檔的MIME類型。
5.資源(Resource):由URI標識的網絡數據對象或服務。
6.實體(Entity):數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的本身內容。
7.客戶機(Client):一個為發送請求目的而建立連接的應用程序。
8.用戶代理(User agent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。
9.服務器(Server):一個接受連接并對請求返回信息的應用程序。
10.源服務器(Origin server):是一個給定資源可以在其上駐留或被創建的服務器。
11.代理(Proxy):一個中間程序,它可以充當一個服務器,也可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的服務器中。一個代理在發送請求信息之前,必須解釋并且如果可能重寫它。
代理經常作為通過防火墻的客戶機端的門戶,代理還可以作為一個幫助應用來通過協議處理沒有被用戶代理完成的請求。
12.網關(Gateway):一個作為其它服務器中間媒介的服務器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源服務器;發出請求的客戶機并沒有意識到它在同網關打交道。
網關經常作為通過防火墻的服務器端的門戶,網關還可以作為一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。
13.通道(Tunnel):是作為兩個連接中繼的中介程序。一旦激活,通道便被認為不屬于HTTP通訊,盡管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。
14.緩存(Cache):反應信息的局域存儲。
3:建立連接的方式
HTTP支持2中建立連接的方式:非持久連接和持久連接(HTTP1.1默認的連接方式為持久連接)。
1)非持久連接
讓我們查看一下非持久連接情況下從服務器到客戶傳送一個Web頁面的步驟。假設該貝面由1個基本HTML文件和10個JPEG圖像構成,而且所有這些對象都存放在同一臺服務器主機中。再假設該基本HTML文件的URL為:gpcuster.cnblogs.com/index.html。
下面是具體步騾:
1.HTTP客戶初始化一個與服務器主機gpcuster.cnblogs.com中的HTTP服務器的TCP連接。HTTP服務器使用默認端口號80監聽來自HTTP客戶的連接建立請求。
2.HTTP客戶經由與TCP連接相關聯的本地套接字發出—個HTTP請求消息。這個消息中包含路徑名/somepath/index.html。
3.HTTP服務器經由與TCP連接相關聯的本地套接字接收這個請求消息,再從服務器主機的內存或硬盤中取出對象/somepath/index.html,經由同一個套接字發出包含該對象的響應消息。
4.HTTP服務器告知TCP關閉這個TCP連接(不過TCP要到客戶收到剛才這個響應消息之后才會真正終止這個連接)。
5.HTTP客戶經由同一個套接字接收這個響應消息。TCP連接隨后終止。該消息標明所封裝的對象是一個HTML文件??蛻魪闹腥〕鲞@個文件,加以分析后發現其中有10個JPEG對象的引用。
6.給每一個引用到的JPEG對象重復步騾1-4。
上述步驟之所以稱為使用非持久連接,原因是每次服務器發出一個對象后,相應的TCP連接就被關閉,也就是說每個連接都沒有持續到可用于傳送其他對象。每個TCP連接只用于傳輸一個請求消息和一個響應消息。就上述例子而言,用戶每請求一次那個web頁面,就產生11個TCP連接。
2)持久連接
非持久連接有些缺點。首先,客戶得為每個待請求的對象建立并維護一個新的連接。對于每個這樣的連接,TCP得在客戶端和服務器端分配TCP緩沖區,并維持TCP變量。對于有可能同時為來自數百個不同客戶的請求提供服務的web服務器來說,這會嚴重增加其負擔。其次,如前所述,每個對象都有2個RTT的響應延長——一個RTT用于建立TCP連接,另—個RTT用于請求和接收對象。最后,每個對象都遭受TCP緩啟動,因為每個TCP連接都起始于緩啟動階段。不過并行TCP連接的使用能夠部分減輕RTT延遲和緩啟動延遲的影響。
在持久連接情況下,服務器在發出響應后讓TCP連接繼續打開著。同一對客戶/服務器之間的后續請求和響應可以通過這個連接發送。整個Web頁面(上例中為包含一個基本HTMLL文件和10個圖像的頁面)自不用說可以通過單個持久TCP連接發送:甚至存放在同一個服務器中的多個web頁面也可以通過單個持久TCP連接發送。通常,HTTP服務器在某個連接閑置一段特定時間后關閉它,而這段時間通常是可以配置的。持久連接分為不帶流水線(without pipelining)和帶流水線(with pipelining)兩個版本。如果是不帶流水線的版本,那么客戶只在收到前一個請求的響應后才發出新的請求。這種情況下,web頁面所引用的每個對象(上例中的10個圖像)都經歷1個RTT的延遲,用于請求和接收該對象。與非持久連接2個RTT的延遲相比,不帶流水線的持久連接已有所改善,不過帶流水線的持久連接還能進一步降低響應延遲。不帶流水線版本的另一個缺點是,服務器送出一個對象后開始等待下一個請求,而這個新請求卻不能馬上到達。這段時間服務器資源便閑置了。
HTTP/1.1的默認模式使用帶流水線的持久連接。這種情況下,HTTP客戶每碰到一個引用就立即發出一個請求,因而HTTP客戶可以一個接一個緊挨著發出各個引用對象的請求。服務器收到這些請求后,也可以一個接一個緊挨著發出各個對象。如果所有的請求和響應都是緊挨著發送的,那么所有引用到的對象一共只經歷1個RTT的延遲(而不是像不帶流水線的版本那樣,每個引用到的對象都各有1個RTT的延遲)。另外,帶流水線的持久連接中服務器空等請求的時間比較少。與非持久連接相比,持久連接(不論是否帶流水線)除降低了1個RTT的響應延遲外,緩啟動延遲也比較小。其原因在于既然各個對象使用同一個TCP連接,服務器發出第一個對象后就不必再以一開始的緩慢速率發送后續對象。相反,服務器可以按照第一個對象發送完畢時的速率開始發送下一個對象。
4:緩存的機制
HTTP/1.1中緩存的目的是為了在很多情況下減少發送請求,同時在許多情況下可以不需要發送完整響應。前者減少了網絡回路的數量;HTTP利用一個“過期(expiration)”機制來為此目的。后者減少了網絡應用的帶寬;HTTP用“驗證(validation)”機制來為此目的。
三 RTSP協議與HTTP協議的聯系與區別
RTSP協議負責在服務器和客戶端之間建立并控制一個或多個時間上同步的連續流媒體,其目標是象HTTP協議為用戶提供文字和圖形服務那樣為用戶提供連續媒體服務。因此,RTSP協議的設計在語法和操作上與HTTP協議很相似,這樣,對于HTTP的大部分擴展也適用于RTSP。
但是RTSP協議和HTTP協議在很多方面有著區別:
1. HTTP是一個無狀態協議,而RTSP協議是有狀態的。
2. HTTP本質上是一個非對稱協議,客戶端提出請求而服務器響應;而RTSP是對稱的,服務器和客戶端都可發送和響應請求。
四 HTTPS傳輸協議
HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協議,它是一個安全通信通道,它基于HTTP開發,用于在客戶計算機和服務器之間交換信息。它使用安全套接字層(SSL)進行信息交換,簡單來說它是HTTP的安全版。
它是由Netscape開發并內置于其瀏覽器中,用于對數據進行壓縮和解壓操作,并返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安全全套接字層(SSL)作為HTTP應用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通信。)SSL使用40 位關鍵字作為RC4流加密算法,這對于商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,如果需要的話用戶可以確認發送者是誰。
HTTPS和HTTP的區別:
1:http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
2:https協議需要到ca申請證書,一般免費證書很少,需要交費。
3:http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議
4:http的連接很簡單,是無狀態的,而HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全
HTTPS解決的問題:
1 . 信任主機的問題. 采用https 的server 必須從CA 申請一個用于證明服務器用途類型的證書. 改證書只有用于對應的server 的時候,客戶度才信任次主機. 所以目前所有的銀行系統網站,關鍵部分應用都是https 的. 客戶通過信任該證書,從而信任了該主機. 其實這樣做效率很低,但是銀行更側重安全. 這一點對我們沒有任何意義,我們的server ,采用的證書不管自己issue 還是從公眾的地方issue, 客戶端都是自己人,所以我們也就肯定信任該server.
2 . 通訊過程中的數據的泄密和被竄改
1. 一般意義上的https, 就是 server 有一個證書.
a) 主要目的是保證server 就是他聲稱的server. 這個跟第一點一樣.
b) 服務端和客戶端之間的所有通訊,都是加密的.
i. 具體講,是客戶端產生一個對稱的密鑰,通過server 的證書來交換密鑰. 一般意義上的握手過程.
ii. 加下來所有的信息往來就都是加密的. 第三方即使截獲,也沒有任何意義.因為他沒有密鑰. 當然竄改也就沒有什么意義了.
2. 少許對客戶端有要求的情況下,會要求客戶端也必須有一個證書.
a) 這里客戶端證書,其實就類似表示個人信息的時候,除了用戶名/密碼, 還有一個CA 認證過的身份. 應為個人證書一般來說上別人無法模擬的,所有這樣能夠更深的確認自己的身份.
b) 目前少數個人銀行的專業版是這種做法,具體證書可能是拿U盤作為一個備份的載體.
HTTPS 一定是繁瑣的.
a) 本來簡單的http協議,一個get一個response. 由于https 要還密鑰和確認加密算法的需要.單握手就需要6/7 個往返.
i. 任何應用中,過多的round trip 肯定影響性能.
b) 接下來才是具體的http協議,每一次響應或者請求, 都要求客戶端和服務端對會話的內容做加密/解密.
i. 盡管對稱加密/解密效率比較高,可是仍然要消耗過多的CPU,為此有專門的SSL 芯片. 如果CPU 信能比較低的話,肯定會降低性能,從而不能serve 更多的請求.
ii. 加密后數據量的影響. 所以,才會出現那么多的安全認證提示。
五 SDP協議
SDP會話描述協議:為會話通知、會話邀請和其它形式的多媒體會話初始化等目的提供了多媒體會話描述。會話目錄用于協助多媒體會議的通告,并為會話參與者傳送相關設置信息。 SDP 即用于將這種信息傳輸到接收端。 SDP 完全是一種會話描述格式亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
2019av中文字幕| 成人www视频在线观看| 久久精彩免费视频| 欧美高清视频一区二区| 国产精品久久久久77777| 成人精品在线视频| 欧美另类暴力丝袜| 国产日韩在线看片| 97精品久久久中文字幕免费| 尤物yw午夜国产精品视频明星| 亚洲欧洲黄色网| 日韩欧美亚洲成人| 狠狠做深爱婷婷久久综合一区| 国产欧美va欧美va香蕉在| 亚洲日本欧美中文幕| yw.139尤物在线精品视频| 97国产一区二区精品久久呦| 久久色精品视频| 日韩视频精品在线| 欧美一区三区三区高中清蜜桃| 日韩av日韩在线观看| 亚洲成色999久久网站| 国产女同一区二区| 一区二区欧美久久| 亚洲黄页网在线观看| 久久成人国产精品| 亚洲第一偷拍网| 亚洲男女自偷自拍图片另类| 欧美午夜视频在线观看| 青青草原成人在线视频| 中文字幕精品网| 国产精品天天狠天天看| 777777777亚洲妇女| 91免费人成网站在线观看18| 中文字幕精品久久久久| 欧美午夜美女看片| 久久久天堂国产精品女人| 精品中文字幕在线| 亚洲的天堂在线中文字幕| 国产91精品久| 亚洲国产天堂久久综合| 国产精品久久久久久久9999| 日韩专区在线播放| 日韩在线中文视频| 欧美大片欧美激情性色a∨久久| 国产精品扒开腿爽爽爽视频| 亚洲国产成人在线视频| 精品亚洲夜色av98在线观看| www.亚洲成人| 精品国产91久久久久久老师| 国产一区在线播放| 97人洗澡人人免费公开视频碰碰碰| 国产精自产拍久久久久久| 不卡av日日日| 97在线视频免费看| 亚洲自拍偷拍区| 久久成人精品一区二区三区| 在线播放国产精品| 欧美第一黄色网| 日本欧美精品在线| 最新国产成人av网站网址麻豆| 国产激情久久久| 国产脚交av在线一区二区| 一夜七次郎国产精品亚洲| 在线视频中文亚洲| 日韩中文在线不卡| 亚洲性生活视频| 日韩暖暖在线视频| 91九色精品视频| 国产日韩欧美黄色| 日韩乱码在线视频| 欧美风情在线观看| 国产精品久久久久久亚洲调教| 久久久久久亚洲精品中文字幕| 97免费中文视频在线观看| 北条麻妃99精品青青久久| 欧美性xxxxx极品| 亚洲激情在线视频| 国产美女高潮久久白浆| 亚洲精品成a人在线观看| 浅井舞香一区二区| 成人福利网站在线观看11| 日韩在线免费观看视频| 亚洲精品免费一区二区三区| 色综久久综合桃花网| 国产精品久久久久久久久久久不卡| 98视频在线噜噜噜国产| 日本国产高清不卡| 丝袜美腿亚洲一区二区| 国产精品久久中文| 欧美一级在线亚洲天堂| www.午夜精品| 国产欧美一区二区三区在线| 日韩高清不卡av| 欧美激情精品久久久久久变态| 国模精品一区二区三区色天香| 国产精品视频一区二区高潮| 热久久这里只有| 国产成人精品免费久久久久| 狠狠躁夜夜躁久久躁别揉| 日韩欧中文字幕| 国产精品视频区| 欧美激情在线播放| 亚洲综合社区网| 日韩电影中文字幕| 中文字幕亚洲专区| 欧美性猛交xxxx久久久| 国产日韩亚洲欧美| 欧美一级黄色网| 69av在线视频| 韩日精品中文字幕| 亚洲黄色有码视频| 亚洲伦理中文字幕| 亚洲美女黄色片| 欧美精品在线视频观看| 亚洲高清免费观看高清完整版| 亚洲日本aⅴ片在线观看香蕉| 国产精品一区二区久久| 欧美午夜视频在线观看| 成人精品福利视频| 久久久久久久久久亚洲| 欧美视频在线观看 亚洲欧| 91精品国产99| 91av在线播放视频| 欧美午夜精品久久久久久浪潮| 精品久久久免费| 久久精品中文字幕电影| 亚洲跨种族黑人xxx| 亚洲欧洲一区二区三区久久| 久久天天躁日日躁| 亚洲激情电影中文字幕| 精品激情国产视频| 91av在线国产| 97国产真实伦对白精彩视频8| 久久免费国产精品1| 亚洲大胆美女视频| 麻豆成人在线看| 久久精品国产亚洲精品2020| 国产亚洲精品成人av久久ww| 在线国产精品播放| 日韩极品精品视频免费观看| 成人亚洲综合色就1024| 久久亚洲一区二区三区四区五区高| 日本精品免费观看| 国产精品视频不卡| 日韩av在线免费观看一区| 亚洲娇小xxxx欧美娇小| 国产91精品高潮白浆喷水| 亚洲欧美一区二区精品久久久| 一区二区三区高清国产| 国产精品99免视看9| 91精品国产91| 国产精品视频久| 青青草一区二区| 国产99视频精品免视看7| 亚洲精品98久久久久久中文字幕| 最新91在线视频| 久久综合九色九九| 九九精品在线视频| 亚洲欧洲在线视频| 久久久91精品国产一区不卡| 亚洲老板91色精品久久| 欧美成人黑人xx视频免费观看| 欧美在线一级va免费观看|