关于VLC无法播放rtsp的问题分析
生活随笔
收集整理的這篇文章主要介紹了
关于VLC无法播放rtsp的问题分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我之前有一篇博客說,怎么通過vlc查日志,方法不知道是不是特別好,傳送門:https://www.cnblogs.com/132818Creator/p/11136714.html
雖然在調試窗口上提示無法connect,但是還是無法知道具體是什么原因,這里我是通過抓包分析的:
抓包可以直接看出 ??RTSP 214 Reply: RTSP/1.0 401 Unauthorized
提示是401未授權。
具體詳情:
CSeq: 4 ? ? ? ?//每個消息都有序號來標記,第一個包通常是option請求消息
www-authenticate 是早期的一種簡單的,有效的用戶身份認證技術。?
收到請求后,首先會解析發送來的數據中是否包含有: authorization basic的字段,如果沒有,就會發送http頭authorization basic realm =“”,要求輸入用戶名密碼
要查詢用戶身份的時候,就要使用digest realm的字段,發給客戶端或者用戶。
?下面是RTSP的解析:
RTSP的方法 rtsp中定義的方法有:OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE, GET_PARAMETER?,SET_PARAMETER? 1.OPTION 目的是得到服務器提供的可用方法: OPTIONS rtsp://192.168.20.136:5000/xxx666 RTSP/1.0 CSeq: 1 ? ? ? ? //每個消息都有序號來標記,第一個包通常是option請求消息 User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10) 服務器的回應信息包括提供的一些方法,例如: RTSP/1.0 200 OK Server: UServer 0.9.7_rc1 Cseq: 1 ? ? ? ? //每個回應消息的cseq數值和請求消息的cseq相對應 Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SCALE, GET_PARAMETER //服務器提供的可用的方法 2.DESCRIBE C向S發起DESCRIBE請求,為了得到會話描述信息(SDP): DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0 CSeq: 2 token: Accept: application/sdp User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10) 服務器回應一些對此會話的描述信息(sdp): RTSP/1.0 200 OK Server: UServer 0.9.7_rc1 Cseq: 2 x-prev-url: rtsp://192.168.20.136:5000 x-next-url: rtsp://192.168.20.136:5000 x-Accept-Retransmit: our-retransmit x-Accept-Dynamic-Rate: 1 Cache-Control: must-revalidate Last-Modified: Fri, 10 Nov 2006 12:34:38 GMT Date: Fri, 10 Nov 2006 12:34:38 GMT Expires: Fri, 10 Nov 2006 12:34:38 GMT Content-Base: rtsp://192.168.20.136:5000/xxx666/ Content-Length: 344 Content-Type: application/sdp v=0 ? ? ? ?//以下都是sdp信息 o=OnewaveUServerNG 1451516402 1025358037 IN IP4 192.168.20.136 s=/xxx666 u=http:/// e=admin@ c=IN IP4 0.0.0.0 t=0 0 a=isma-compliance:1,1.0,1 a=range:npt=0- m=video 0 RTP/AVP 96 ? ?//m表示媒體描述,下面是對會話中視頻通道的媒體描述 a=rtpmap:96 MP4V-ES/90000 a=fmtp:96 profile-level-id=245;config=000001B0F5000001B509000001000000012000C888B0E0E0FA62D089028307 a=control:trackID=0//trackID=0表示視頻流用的是通道0 3.SETUP 客戶端提醒服務器建立會話,并確定傳輸模式: SETUP rtsp://192.168.20.136:5000/xxx666/trackID=0 RTSP/1.0 ? ? CSeq: 3 Transport: RTP/AVP/TCP;unicast;interleaved=0-1 ? ? ? User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10) //uri中帶有trackID=0,表示對該通道進行設置。Transport參數設置了傳輸模式,包的結構。接下來的數據包頭部第二個字節位置就是interleaved,它的值是每個通道都不同的,trackID=0的interleaved值有兩個0或1,0表示rtp包,1表示rtcp包,接受端根據interleaved的值來區別是哪種數據包。 服務器回應信息: RTSP/1.0 200 OK Server: UServer 0.9.7_rc1 Cseq: 3 Session: 6310936469860791894 ? ? //服務器回應的會話標識符 Cache-Control: no-cache Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=6B8B4567 4.PLAY 客戶端發送播放請求: PLAY rtsp://192.168.20.136:5000/xxx666 RTSP/1.0 CSeq: 4 Session: 6310936469860791894 Range: npt=0.000- ? ? ?//設置播放時間的范圍 User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10) 服務器回應信息: RTSP/1.0 200 OK Server: UServer 0.9.7_rc1 Cseq: 4 Session: 6310936469860791894 Range: npt=0.000000- RTP-Info: url=trackID=0;seq=17040;rtptime=1467265309 ? ?? //seq和rtptime都是rtp包中的信息 5.TEARDOWN 客戶端發起關閉請求: TEARDOWN rtsp://192.168.20.136:5000/xxx666 RTSP/1.0 CSeq: 5 Session: 6310936469860791894 User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10) 服務器回應: RTSP/1.0 200 OK Server: UServer 0.9.7_rc1 Cseq: 5 Session: 6310936469860791894 Connection: Close 以上方法都是交互過程中最為常用的,其它還有一些重要的方法如get/set_parameter,pause,redirect等等 ps: sdp的格式 v=<version> o=<username> <session id> <version> <network type> <address type> <address> s=<session name> i=<session description> u=<URI> e=<email address> p=<phone number> c=<network type> <address type> <connection address> b=<modifier>:<bandwidth-value> t=<start time> <stop time> r=<repeat interval> <active duration> <list of offsets from start-time> z=<adjustment time> <offset> <adjustment time> <offset> .... k=<method> k=<method>:<encryption key> a=<attribute> a=<attribute>:<value> m=<media> <port> <transport> <fmt list> v = (協議版本) o = (所有者/創建者和會話標識符) s = (會話名稱) i = * (會話信息) u = * (URI 描述) e = * (Email 地址) p = * (電話號碼) c = * (連接信息) b = * (帶寬信息) z = * (時間區域調整) k = * (加密密鑰) a = * (0 個或多個會話屬性行) 時間描述: t = (會話活動時間) r = * (0或多次重復次數) 媒體描述: m = (媒體名稱和傳輸地址) i = * (媒體標題) c = * (連接信息 — 如果包含在會話層則該字段可選) b = * (帶寬信息) k = * (加密密鑰) a = * (0 個或多個媒體屬性行) RTSP的講解來自:https://www.cnblogs.com/lidabo/p/6553212.html?
轉載于:https://www.cnblogs.com/132818Creator/p/11137003.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的关于VLC无法播放rtsp的问题分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apriori 使用说明
- 下一篇: Django 练习班级管理系统五 --