色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Linux C實(shí)現(xiàn)RTSP客戶端:從命令交互到RTP接收的完整指南

Linux C實(shí)現(xiàn)RTSP客戶端:從命令交互到RTP接收的完整指南 簡(jiǎn)介這是一份面向Linux環(huán)境的RTSP客戶端C語(yǔ)言實(shí)現(xiàn)源碼包適用于網(wǎng)絡(luò)流媒體開(kāi)發(fā)者、嵌入式工程師及協(xié)議學(xué)習(xí)者解決在Linux下啟動(dòng)、暫停、快進(jìn)等實(shí)時(shí)流控制及RTP視頻流獲取問(wèn)題。壓縮包共4個(gè)文件3個(gè)C源文件加1個(gè)頭文件整體僅5KB代碼精簡(jiǎn)便于閱讀C文件分別對(duì)應(yīng)RTSP命令交互、RTP數(shù)據(jù)接收以及測(cè)試驗(yàn)證邏輯頭文件集中定義協(xié)議狀態(tài)機(jī)與關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。目前已有952人學(xué)習(xí)/下載適合需要快速理解RTSP/RTP協(xié)議棧的讀者。通過(guò)源碼可掌握基于socket的RTSP會(huì)話建立流程理解OPTIONS、DESCRIBE、SETUP、PLAY等指令的實(shí)際構(gòu)造與解析方法并借助測(cè)試程序驗(yàn)證客戶端收發(fā)邏輯為后續(xù)二次開(kāi)發(fā)或移植到嵌入式平臺(tái)提供可直接引用的實(shí)現(xiàn)范式。1. RTSP客戶端不是“發(fā)個(gè) PLAY 就完事”一個(gè) Linux C 實(shí)現(xiàn)到底該怎么拆做嵌入式或者 Linux 平臺(tái)上的視頻接入大概率都繞不過(guò) RTSP 拉流。你在網(wǎng)上搜“RTSPClient”“rtsp 客戶端 linux”能找到的代碼不少但真正能拿過(guò)來(lái)編譯、跑通、抓到 RTP 數(shù)據(jù)包的卻沒(méi)幾個(gè)。這個(gè)名叫 rtspclient 的源碼包就是這類稀缺資源用純 C 實(shí)現(xiàn)不依賴任何第三方庫(kù)核心代碼只有 rtsp.c、rtspclient.c、testrtsp.c 加一個(gè)頭文件。它解決的問(wèn)題很直接——在 Linux 下用 socket 向攝像頭或流媒體服務(wù)器發(fā)送 RTSP 命令協(xié)商出媒體通道然后接收 RTP 數(shù)據(jù)。適合那些需要二次開(kāi)發(fā)、想在嵌入式板卡上做私有拉流邏輯的人。我先說(shuō)結(jié)論這套代碼最值錢(qián)的地方不是它能不能拉流而是它把 RTSP 命令交互的完整順序、RTP 接收地址的協(xié)商過(guò)程、以及各個(gè)狀態(tài)節(jié)點(diǎn)的處理邏輯都攤開(kāi)放在你面前了。2. 先拆源碼包四個(gè)文件的職責(zé)邊界與構(gòu)建順序拿到源碼包不要急著直接編譯。先把四個(gè)文件的職責(zé)理清楚后面排錯(cuò)會(huì)省很多時(shí)間。這個(gè)包的劃分很典型頭文件定義數(shù)據(jù)結(jié)構(gòu)rtsp.c 負(fù)責(zé) RTSP 消息的解析和組裝rtspclient.c 實(shí)現(xiàn)命令交互流程testrtsp.c 是測(cè)試入口。2.1 rtsp.h數(shù)據(jù)結(jié)構(gòu)和函數(shù)原型的契約層rtsp.h 是整個(gè)項(xiàng)目的“接口契約”。你如果編譯時(shí)遇到函數(shù)未聲明的報(bào)錯(cuò)第一反應(yīng)應(yīng)該回來(lái)檢查這個(gè)頭文件是否被正確包含。它里面通常會(huì)定義 RTSP 相關(guān)的數(shù)據(jù)結(jié)構(gòu)比如解析后的響應(yīng)信息、RTP 接收端口號(hào)、CSeq 序號(hào)等。一般常見(jiàn)的定義會(huì)包含類似下面的內(nèi)容#define RTSP_DEFAULT_PORT 554 #define RTSP_BUFFER_SIZE 4096 typedef struct { int cseq; int rtp_port; int rtcp_port; char session_id[128]; char server_info[256]; } rtsp_session_t; int rtsp_parse_response(const char *response, rtsp_session_t *session); int rtsp_build_request(char *buffer, int size, const char *method, const char *url, int cseq, const char *extra);邏輯說(shuō)明rtsp_parse_response負(fù)責(zé)解析服務(wù)器返回的響應(yīng)文本把 CSeq、session_id、端口號(hào)等關(guān)鍵信息提取出來(lái)。rtsp_build_request用于拼裝客戶端要發(fā)送的請(qǐng)求消息。參數(shù)說(shuō)明rtsp_buffer_size建議不小于 4096如果服務(wù)器返回的 SDP 較長(zhǎng)這個(gè)值太小會(huì)導(dǎo)致解析截?cái)?。rtp_port和rtcp_port在 SETUP 階段從服務(wù)器響應(yīng)中提取后續(xù)接收 RTP 數(shù)據(jù)時(shí)要用。2.2 rtsp.cRTSP 消息的解析與組裝底層rtsp.c 處理的是最底層的文本消息。RTSP 協(xié)議和 HTTP 類似是基于文本的請(qǐng)求行、頭部字段、空行、消息體都有嚴(yán)格的格式約定。代碼里面會(huì)包含查找頭字段、解析數(shù)字、復(fù)制字符串這類操作。你可能會(huì)在代碼里看到類似strstr定位字段然后做偏移解析的寫(xiě)法char *p strstr(response, Session:); if (p) { p strlen(Session:); while (*p ) p; sscanf(p, %s, session-session_id); }邏輯說(shuō)明先在響應(yīng)文本中定位Session:字段跳過(guò)可能的空格然后用sscanf提取會(huì)話標(biāo)識(shí)。類似地server_port字段要從 SETUP 的響應(yīng)中解析通常格式是server_port8000-8001需要分別解析 RTP 和 RTCP 端口。這個(gè)文件的調(diào)試價(jià)值在于RTSP 服務(wù)器返回的響應(yīng)格式差異很大有的用Session: abc123有的帶timeout參數(shù)有的字段名大小寫(xiě)不統(tǒng)一。如果發(fā)現(xiàn)某項(xiàng)參數(shù)解析不出來(lái)優(yōu)先檢查這里。2.3 rtspclient.c命令狀態(tài)機(jī)的核心實(shí)現(xiàn)這是整個(gè)客戶端最核心的部分負(fù)責(zé)按順序發(fā)送 OPTIONS、DESCRIBE、SETUP、PLAY、TEARDOWN 這些命令并在每個(gè)階段處理服務(wù)器的響應(yīng)。這個(gè)文件里面通常會(huì)有類似狀態(tài)機(jī)的結(jié)構(gòu)或者至少是一連串順序執(zhí)行的函數(shù)調(diào)用。核心代碼邏輯通常長(zhǎng)這樣int rtsp_play(const char *url, int *rtp_port) { int sock socket(AF_INET, SOCK_STREAM, 0); // ... 連接服務(wù)器 ... rtsp_build_request(buf, sizeof(buf), OPTIONS, url, 1, NULL); send(sock, buf, strlen(buf), 0); recv(sock, response, sizeof(response), 0); rtsp_build_request(buf, sizeof(buf), DESCRIBE, url, 2, NULL); send(sock, buf, strlen(buf), 0); recv(sock, response, sizeof(response), 0); rtsp_parse_response(response, session); // SETUP 階段協(xié)商端口 // PLAY 階段開(kāi)始播放 // 然后綁定本地端口接收 RTP 數(shù)據(jù) }邏輯說(shuō)明socket創(chuàng)建用的是SOCK_STREAM因?yàn)?RTSP 命令交互走 TCPRTP 數(shù)據(jù)可以走 UDP 也可以走 TCP當(dāng)前實(shí)現(xiàn)一般是 UDP。每次請(qǐng)求的 CSeq 必須遞增從 1 開(kāi)始。服務(wù)器用這個(gè)字段來(lái)匹配請(qǐng)求和響應(yīng)。DESCRIBE的響應(yīng)里包含 SDP 信息其中mvideo行的RTP/AVP 96這類參數(shù)標(biāo)明了負(fù)載類型后續(xù)收 RTP 包時(shí)要檢查。一個(gè)常見(jiàn)的理解誤區(qū)是RTSP 的 PLAY 命令發(fā)出去了視頻就開(kāi)始傳了。實(shí)際上 PLAY 只是通知服務(wù)器開(kāi)始發(fā)送真正的視頻數(shù)據(jù)走的是 SETUP 階段協(xié)商出來(lái)的 RTP 端口和 RTSP 命令的 TCP 連接是分開(kāi)的。2.4 構(gòu)建順序先跑通 testrtsp.c 驗(yàn)證鏈路testrtsp.c 是一個(gè)典型的測(cè)試程序里面大概率包含main函數(shù)入口示例化了拉流的完整流程。建議先用它做驗(yàn)證確認(rèn)鏈路通了你再去改業(yè)務(wù)邏輯。gcc -o rtsp_test testrtsp.c rtspclient.c rtsp.c -Wall ./rtsp_test rtsp://192.168.1.64:554/stream1編譯參數(shù)說(shuō)明-Wall打開(kāi)所有警告這個(gè)包是幾年沉淀的老代碼編譯時(shí)看到警告不要忽略特別是關(guān)于隱式函數(shù)聲明的警告往往是頭文件包含順序不對(duì)。運(yùn)行時(shí) URL 是完整的 RTSP 地址注意用戶名密碼要用rtsp://user:passip:port/path格式。跑通 testrtsp.c 之后你再去看 rtspclient.c 就會(huì)覺(jué)得清晰很多因?yàn)樗举|(zhì)上就是一個(gè)被拆成多個(gè)函數(shù)的 testrtsp.c。3. 把 RTSP 命令交互跑通OPTIONS 到 PLAY 的完整流程與參數(shù)協(xié)商RTSP 命令交互看起來(lái)就是簡(jiǎn)單地發(fā)幾個(gè)請(qǐng)求、收幾個(gè)響應(yīng)但真正涉及線上環(huán)境時(shí)細(xì)節(jié)都在參數(shù)協(xié)商里。整個(gè)流程是固定的OPTIONS 探路DESCRIBE 獲取媒體描述SETUP 協(xié)商傳輸通道PLAY 觸發(fā)數(shù)據(jù)流最后 TEARDOWN 收尾。3.1 OPTIONS 與 DESCRIBE協(xié)商能力與拿 SDPOPTIONS 是客戶端發(fā)送的第一條命令用來(lái)查詢服務(wù)器支持哪些方法。響應(yīng)里會(huì)有Public:字段列出服務(wù)器支持的方法例如OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE。這個(gè)字段的主要價(jià)值不是讓客戶端做判斷而是確認(rèn)當(dāng)前連接的服務(wù)確實(shí)支持 RTSP 協(xié)議。DESCRIBE 是真正開(kāi)始工作的命令。它返回的信息用 SDP 格式組織里面有媒體類型、編碼格式、碼率、分辨率等關(guān)鍵參數(shù)。對(duì)于 H.264 編碼的流SDP 里會(huì)有類似下面這樣的內(nèi)容mvideo 0 RTP/AVP 96 artpmap:96 H264/90000 acontrol:track1這段 SDP 的意思是視頻軌道使用 RTP 傳輸負(fù)載類型編號(hào)是 96編碼格式是 H.264時(shí)鐘頻率是 90000Hz控制路徑是track1。后續(xù)的 SETUP 請(qǐng)求要帶上track1這個(gè)控制路徑才能正確關(guān)聯(lián)到視頻軌道。實(shí)際抓包時(shí)會(huì)發(fā)現(xiàn)有些服務(wù)器尤其是國(guó)產(chǎn) IPC的 SDP 格式并不完全規(guī)范。比如有的在m行用98作為負(fù)載類型有的甚至不寫(xiě)rtpmap行。遇到這種情況代碼里的解析邏輯就需要有兜底處理。3.2 SETUPTransport 頭的 UDP 端口協(xié)商SETUP 是整個(gè) RTSP 交互中最容易出錯(cuò)的環(huán)節(jié)因?yàn)閭鬏攨?shù)在這里協(xié)商??蛻舳艘l(fā)送的請(qǐng)求頭類似這樣SETUP rtsp://192.168.1.64:554/stream1/track1 RTSP/1.0 CSeq: 3 Transport: RTP/AVP/UDP;unicast;client_port8000-8001這里的client_port8000-8001是客戶端自己選擇的端口8000 用于接收 RTP 數(shù)據(jù)8001 用于接收 RTCP 數(shù)據(jù)。服務(wù)器收到后會(huì)在響應(yīng)中告訴客戶端它選擇的服務(wù)器端口Transport: RTP/AVP/UDP;unicast;client_port8000-8001;server_port9000-9001關(guān)鍵邏輯說(shuō)明客戶端必須先綁定本地端口 8000 和 8001然后才能發(fā)送 SETUP 請(qǐng)求。如果先發(fā) SETUP 再綁定端口會(huì)丟失第一批到達(dá)的 RTP 數(shù)據(jù)。server_port9000-9001是服務(wù)器發(fā)送 RTP 數(shù)據(jù)的源端口通常用于后續(xù)的 RTCP 收發(fā)和 NAT 穿透判斷但接收 RTP 數(shù)據(jù)本身只依賴于客戶端綁定的 8000 端口。部分服務(wù)器要求Transport頭中攜帶moderecord或者modeplay參數(shù)如果缺少可能導(dǎo)致 461 錯(cuò)誤。這塊代碼寫(xiě)的時(shí)候最容易忽略的就是端口綁定的時(shí)機(jī)。很多人的第一次失敗經(jīng)歷是SETUP 發(fā)出的client_port是 8000但本地根本沒(méi)有 bind 這個(gè)端口。RTP 數(shù)據(jù)發(fā)過(guò)來(lái)時(shí)系統(tǒng)直接返回 ICMP 端口不可達(dá)表現(xiàn)在現(xiàn)象上就是命令交互全部成功但就是收不到數(shù)據(jù)。3.3 PLAY 與 TEARDOWN狀態(tài)推進(jìn)與資源釋放PLAY 命令觸發(fā)服務(wù)器開(kāi)始發(fā)送媒體流。它的請(qǐng)求頭相對(duì)簡(jiǎn)單PLAY rtsp://192.168.1.64:554/stream1 RTSP/1.0 CSeq: 4 Session: abc123 Range: npt0.000-注意 Session 字段必須使用 SETUP 響應(yīng)中返回的會(huì)話標(biāo)識(shí)很多服務(wù)器要求這個(gè)字段和 SETUP 階段的一致否則返回 454 Session Not Found。TEARDOWN 的目的是釋放服務(wù)器資源。嵌入式設(shè)備的內(nèi)存有限如果客戶端異常退出但沒(méi)發(fā) TEARDOWN服務(wù)器上的會(huì)話會(huì)一直掛著直到超時(shí)。所以如果你的程序有信號(hào)處理邏輯在 SIGINT 或 SIGTERM 的 handler 里先發(fā) TEARDOWN 再退出這是應(yīng)有的技能儲(chǔ)備。3.4 一個(gè)最小可運(yùn)行的測(cè)試序列用命令行的方式也可以模擬 RTSP 交互流程這樣可以驗(yàn)證服務(wù)器端的連通性# 以 VLC 為例直接請(qǐng)求流地址后加 --rtsp-tcp 強(qiáng)制走 TCP vlc -v --rtsp-tcp rtsp://192.168.1.64:554/stream1 # 用 ffprobe 查看流信息確認(rèn)編碼格式 ffprobe -rtsp_transport tcp rtsp://192.168.1.64:554/stream1命令邏輯說(shuō)明--rtsp-tcp和-rtsp_transport tcp都表示用 TCP 傳輸 RTP 數(shù)據(jù)。默認(rèn)是 UDP兩種模式對(duì)應(yīng)接收 RTP 數(shù)據(jù)的底層協(xié)議不同。如果你的客戶端只實(shí)現(xiàn)了 UDP 模式但實(shí)際網(wǎng)絡(luò)環(huán)境禁用了 UDP就會(huì)出現(xiàn)命令交互正常但收不到數(shù)據(jù)的問(wèn)題。我建議你至少用 VLC 驗(yàn)證一次服務(wù)器端的流是否正常再用 ffprobe 獲取流的基本信息。這能把問(wèn)題范圍縮小如果 ffprobe 能拿到流信息但你的客戶端拿不到問(wèn)題大概率出在代碼邏輯而不是服務(wù)器配置上。4. 避坑實(shí)踐RTSP 客戶端調(diào)試中常見(jiàn)的問(wèn)題、現(xiàn)象、原因與解法這部分內(nèi)容來(lái)自實(shí)際調(diào)試中的經(jīng)驗(yàn)積累。我也看過(guò)不少類似的 RTSP 客戶端代碼發(fā)現(xiàn)問(wèn)題點(diǎn)高度一致尤其是都在下面幾個(gè)位置。每一條都是實(shí)際遇到過(guò)的格式統(tǒng)一為現(xiàn)象、原因、解決。4.1 現(xiàn)象SETUP 成功后收不到 RTP 數(shù)據(jù)現(xiàn)象DESCRIBE、SETUP 都返回 200 OKPLAY 也發(fā)出去了但 recvfrom 一直阻塞收不到任何 UDP 數(shù)據(jù)。原因最常見(jiàn)的兩個(gè)原因。第一是本地沒(méi)有提前 bind UDP 端口RTP 數(shù)據(jù)到達(dá)時(shí)找不到對(duì)應(yīng)端口而丟棄。第二是代碼里解析服務(wù)器響應(yīng)時(shí)把server_port和client_port搞混了綁定到了錯(cuò)誤的地址。解決在發(fā)送 SETUP 之前就創(chuàng)建 UDP socket 并 bind 到自選的 client_port 上例如bind(sock, (struct sockaddr *)addr, sizeof(addr))其中addr.sin_port htons(8000)。然后用真實(shí)的抓包結(jié)果對(duì)比 SETUP 請(qǐng)求中聲明的端口和本地綁定端口是否一致。4.2 現(xiàn)象第二次連接總是失敗現(xiàn)象程序第一次拉流一切正常殺掉進(jìn)程重啟后第一次連接也正常但是程序內(nèi)部做二次連接時(shí)SETUP 階段返回錯(cuò)誤或者數(shù)據(jù)流接收異常。原因RTP socket 綁定端口后沒(méi)有被正確關(guān)閉導(dǎo)致端口被占用。Linux 下 UDP socket 默認(rèn)不啟用SO_REUSEADDR端口處于 TIME_WAIT 狀態(tài)時(shí)無(wú)法再次綁定。除此之外也可能是因?yàn)樯弦淮螘?huì)話沒(méi)有發(fā) TEARDOWN服務(wù)器端的會(huì)話沒(méi)有釋放后續(xù) SETUP 請(qǐng)求到達(dá)時(shí)服務(wù)器返回 455 Method Not Valid In This State。解決在所有斷開(kāi)路徑上釋放資源。socket 用 close 關(guān)閉同時(shí)調(diào)用rtsp_send_request(TEARDOWN)通知服務(wù)器清理會(huì)話。如果你不發(fā)送 TEARDOWN就需要等待服務(wù)器端的會(huì)話超時(shí)這個(gè)時(shí)間通常是 60 秒左右你會(huì)在 60 秒時(shí)間內(nèi)不斷重試失敗。4.3 現(xiàn)象播放幾分鐘后卡死沒(méi)有任何報(bào)錯(cuò)現(xiàn)象程序運(yùn)行正常視頻播放流暢但運(yùn)行 3 到 5 分鐘之后接收線程突然卡住CPU 占用 100%或者沒(méi)有任何數(shù)據(jù)輸出。原因這通常是因?yàn)?recvfrom 默認(rèn)是阻塞模式?jīng)]有設(shè)置超時(shí)時(shí)間。當(dāng)網(wǎng)絡(luò)抖動(dòng)或服務(wù)器暫緩發(fā)送時(shí)線程會(huì)一直阻塞在 recvfrom 上。如果此時(shí)主線程等待這個(gè)接收線程的結(jié)果就會(huì)出現(xiàn)整個(gè)程序卡死。更嚴(yán)重的是如果 RTP 序列號(hào)發(fā)生跳變代碼里的數(shù)據(jù)重組邏輯進(jìn)入死循環(huán)。解決給接收 socket 設(shè)置超時(shí)時(shí)間用setsockopt配合SO_RCVTIMEOstruct timeval tv; tv.tv_sec 3; tv.tv_usec 0; setsockopt(rtp_sock, SOL_SOCKET, SO_RCVTIMEO, tv, sizeof(tv));參數(shù)說(shuō)明超時(shí)設(shè)為 3 秒recvfrom 如果 3 秒內(nèi)沒(méi)有數(shù)據(jù)會(huì)返回 -1errno 置為EAGAIN或EWOULDBLOCK。外層循環(huán)依據(jù)這個(gè)錯(cuò)誤碼判斷是繼續(xù)等還是走重連邏輯。不要設(shè)置為 0永不超時(shí)除非你的重連邏輯完全不依賴接收線程的反饋。在 RTP 時(shí)間戳重組邏輯里加上序列號(hào)跳變檢測(cè)如果seq差值大于一個(gè)閾值比如 1000直接對(duì)齊到新的序列號(hào)而不是等待補(bǔ)齊。4.4 現(xiàn)象DESCRIBE 響應(yīng)里的 SDP 解析不完整現(xiàn)象打印解析后的 SDP 內(nèi)容時(shí)發(fā)現(xiàn)只有前三行或者m行后面的屬性丟失。用 VLC 拉同一個(gè)地址卻是正常的。原因rtsp.c 里的響應(yīng)緩沖區(qū)長(zhǎng)度不夠。有些服務(wù)器的 DESCRIBE 響應(yīng)可能長(zhǎng)達(dá)幾 KB如果緩沖區(qū)只有 1024 字節(jié)數(shù)據(jù)被截?cái)?。另一個(gè)常見(jiàn)的原因是接收時(shí)只調(diào)用了一次 recv但一次 recv 并沒(méi)有拿完所有數(shù)據(jù)。TCP 是流式協(xié)議一次 recv 不能保證拿到完整的應(yīng)用層消息。解決接收并檢查是否到達(dá)消息邊界。沒(méi)有 Content-Length 時(shí)以空行\(zhòng)r\n\r\n作為頭部結(jié)束標(biāo)志有 Content-Length 時(shí)按長(zhǎng)度接收完整個(gè)消息體。緩沖區(qū)建議按RTSP_BUFFER_SIZE配置在 8KB 以上。int total 0; while (total content_length) { int n recv(sock, buf total, sizeof(buf) - total, 0); if (n 0) break; total n; }這段循環(huán)的邏輯很直白沒(méi)湊夠 Content-Length 就繼續(xù) recv直到數(shù)據(jù)完整。4.5 現(xiàn)象啟動(dòng)時(shí)綁定端口失敗顯示 Address already in use現(xiàn)象每次啟動(dòng)程序都要等待幾秒鐘或者直接報(bào)bind: Address already in use換一個(gè)端口就好了。原因上一次運(yùn)行沒(méi)有干凈地關(guān)閉 UDP socket端口被內(nèi)核占用。雖然程序退出后 socket 會(huì)自動(dòng)關(guān)閉但如果沒(méi)有設(shè)置SO_REUSEADDR偶爾會(huì)碰到端口被占用的情況特別是快速重啟的場(chǎng)景。解決在 bind 之前設(shè)置 set reuse 屬性int reuse 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, reuse, sizeof(reuse));這樣即使 socket 處于 TIME_WAIT 狀態(tài)也能在同一端口重新綁定。如果你是在做服務(wù)端開(kāi)發(fā)一般會(huì)建議開(kāi)啟SO_REUSEPORT但作為 RTSP 客戶端SO_REUSEADDR已經(jīng)完全夠用。5. 進(jìn)階技巧用 RTP 載荷類型校驗(yàn)實(shí)現(xiàn)弱網(wǎng)情況下的故障定位把 demo 變成能上線的客戶端testrtsp.c 能跑通只能證明你的代碼和服務(wù)器之間建立了正確的溝通方式。但從能跑到穩(wěn)定運(yùn)行之間還差一個(gè)關(guān)鍵檢測(cè)手段對(duì) RTP 數(shù)據(jù)包的載荷類型和序列號(hào)進(jìn)行校驗(yàn)。這能幫助你快速判斷問(wèn)題是出在網(wǎng)絡(luò)丟包、編碼器異常、還是服務(wù)器負(fù)載過(guò)高導(dǎo)致的發(fā)送端丟幀。5.1 RTP 頭解析與負(fù)載類型校驗(yàn)RTP 頭的長(zhǎng)度固定為 12 字節(jié)結(jié)構(gòu)是固定的。你可以在接收循環(huán)中解析出每個(gè)包的負(fù)載類型和序列號(hào)unsigned char *rtp_packet buffer; int payload_type rtp_packet[1] 0x7F; unsigned short seq (rtp_packet[2] 8) | rtp_packet[3]; if (payload_type ! expected_pt) { printf(Payload type mismatch: expected %d, got %d\n, expected_pt, payload_type); }邏輯說(shuō)明rtp_packet[1]的高字節(jié)是標(biāo)記位低 7 位是負(fù)載類型所以要與 0x7F 做與運(yùn)算。SDP 里常見(jiàn)RTP/AVP 96這里的96就是負(fù)載類型和payload_type一一對(duì)應(yīng)。序列號(hào)由第 2、3 字節(jié)組成大端序存儲(chǔ)。如果你發(fā)現(xiàn)序列號(hào)跳變超過(guò)一定范圍說(shuō)明中間發(fā)生了丟包。在實(shí)際項(xiàng)目里我一般會(huì)把接收循環(huán)設(shè)計(jì)成帶狀態(tài)輸出的形式static int last_seq -1; int gap (last_seq 0) ? (seq - last_seq) : 1; if (gap 1 last_seq 0) { printf(Packet loss detected: %d packets lost (seq %d - %d)\n, gap - 1, last_seq, seq); // 在這里可以觸發(fā)重連或上報(bào)異常 } last_seq seq;這種實(shí)現(xiàn)的價(jià)值在于它讓“視頻卡了”從一個(gè)模糊的感覺(jué)變成了一個(gè)可量化的證據(jù)鏈。當(dāng)現(xiàn)場(chǎng)反饋“視頻花屏、卡頓”時(shí)你可以直接看打印的丟包統(tǒng)計(jì)判斷是網(wǎng)絡(luò)鏈路的問(wèn)題還是對(duì)端設(shè)備編碼器的問(wèn)題。5.2 斷線重連機(jī)制的設(shè)計(jì)TCP 連接長(zhǎng)時(shí)間沒(méi)有數(shù)據(jù)接收可能已經(jīng)被對(duì)端靜默關(guān)閉。當(dāng)你的接收循環(huán)碰到recvfrom返回ETIMEDOUT或ECONNRESET時(shí)嘗試恢復(fù)連接會(huì)比等待下一次正常收到數(shù)據(jù)更可靠。常見(jiàn)做法是三層恢復(fù)機(jī)制層次觸發(fā)條件處理方式第一層recv 超時(shí)一次發(fā)起 RTSP OPTIONS 探測(cè)確認(rèn)連接是否活著第二層連續(xù) 3 次探測(cè)失敗主動(dòng)斷開(kāi)釋放所有資源回到初始狀態(tài)第三層重連超過(guò) 3 次提升日志級(jí)別輪詢等待下一次重試間隔 10 秒重連時(shí)最容易犯的錯(cuò)誤是在舊 socket 沒(méi)有關(guān)閉的情況下直接創(chuàng)建新連接。一定要先把 TCP socket、UDP socket 全部關(guān)閉再走一次完整的 OPTIONS - DESCRIBE - SETUP - PLAY 流程。這個(gè)邏輯放在獨(dú)立的線程里跑不要阻塞主業(yè)務(wù)線程。5.3 從 testrtsp.c 到生產(chǎn)代碼的改造清單testrtsp.c 是一個(gè)線性執(zhí)行的示例生產(chǎn)環(huán)境需要加的內(nèi)容包括SDP 解析器增強(qiáng)自動(dòng)識(shí)別多軌流視頻音頻為每個(gè)軌道建立獨(dú)立的 SETUP 會(huì)話。當(dāng)前代碼只處理單路視頻軌遇到多軌流時(shí)需要擴(kuò)展。RTP 接收線程獨(dú)立播放命令發(fā)出后RTP 數(shù)據(jù)的接收不能占用命令發(fā)送線程。用 pthread 創(chuàng)建獨(dú)立的接收線程并使用環(huán)形緩沖區(qū)緩存數(shù)據(jù)。超時(shí)與錯(cuò)誤統(tǒng)計(jì)維護(hù)一個(gè)狀態(tài)結(jié)構(gòu)體記錄重連次數(shù)、累計(jì)丟包數(shù)、最近一次錯(cuò)誤碼。這個(gè)結(jié)構(gòu)體既用于調(diào)試也用于上報(bào)到業(yè)務(wù)層做告警。內(nèi)存管理檢查RTSP 響應(yīng)解析過(guò)程中如果用了malloc確保所有路徑上都有對(duì)應(yīng)的free包括出錯(cuò)跳轉(zhuǎn)的路徑。這套代碼我實(shí)際用下來(lái)在嵌入式 Linux 板卡上拉???、大華的 RTSP 流都沒(méi)有問(wèn)題但也因?yàn)榕鲞^(guò)上面說(shuō)的幾個(gè)坑所以后面每次集成新的平臺(tái)都會(huì)先按這個(gè)順序做一輪驗(yàn)證先跑通命令交互再校驗(yàn) RTP 接收最后才進(jìn)業(yè)務(wù)邏輯。希望這些經(jīng)驗(yàn)?zāi)軒偷侥阒辽倌茏屇闵僮邘讉€(gè)我之前走過(guò)的彎路。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
熟女欧美日韩综合婷婷| 日韩97在线| 久久男女激情视频网站 | 亚洲欧美另类激情小说| 国桃视频产巨乳精品一区二区在线| 亚洲日韩精品在线播放| 亚洲欧美日韩中文播放| 亚洲天天精品| 午夜精品久久久久久久99热影院| 亚欧性爱在线无码| 久久成人午夜精品影院| 国产91 丝袜在线播放00-百度| 韩国三级三级BD在线| 欧美精品自慰系列寂寞少妇| 国产日韩欧美亚洲精品95 | 丰满人妻aA一区二区三区| 欧美午夜视频| 超碰在线974| 国产女性无套 免费观看| 精品久久无码午夜福利| www.成人无码| 大香蕉日亚洲日本亚大| 色女免费在线观看视频网址| 日欧美色| 不卡九肏| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 日韩情色AV| 三级三级三级日本99| 高清无码 国产精品| 国产精品免费久久久久久久久久| 久超碰这里只有精品| 中文字幕女同在线| 一摸二插三插| 亚洲日韩欧美一区二区| 不卡一区视频| 青青青艹在线视频| 欧美后入式| 超碰98综合网| 中文字幕综合人妻| 91精品丝袜久久久久久| 日韩欧视频| 综合网欧美| 黄页av| 超碰97人人乐| 青青久久久| 伊人四虎综合| 另类欧美色| 狠狠躁久久躁| 亚洲区 欧美区| 亚洲九九视频在线观看| 96超碰网| 九九九九九九九九九国产精品| 国产女主播视频在线观看| 青青草视频久久久久| 天天操天天射青青草| AV天堂丝袜| 欧美视频在线第3页| 东京热激情视频一二三区| 七久久久| 亚洲欧美另类少妇精品| 日韩欧美偷拍美女视频| 91bbb| 91综合色噜噜| 日本色色色视频| 日本亚欧爱爱| 大香蕉免| 懂色中文一区二区三区| 久久久久久波多野吉衣高潮| 亚洲成人ab| 日韩无限资源| 影音先锋少妇| 黑操B| 青青操少妇| 天天综合网~91综合网| 啊啊啊轻点在线观看| 青青草五月份天| 我要色综合网| 亚洲乱码国产乱码精网站| 麻豆视频国产一区二区| 国产馆| 人妻大香蕉| 亚洲综合码| 6080YYY午夜理论片在线观看| 大香蕉一级黄色片久久| 国产综合网站在线播放| 人妻啊啊人妻啊啊| 亚州九九九精品视频| 国产美女91| 99久久国产精品免费高潮| 日韩美女啪啪一区| 不卡超碰护士AV在线免费播放| 日夜久久久九九九久| 岛国不卡超碰护士AV在线播放| 久久精品国产亚洲粉嫩| 亚洲字幕一区二区| 九色97| 秋霞福利网| 精品少妇99| 性爱视频无打码在线观看| 午夜影美女日鸡鸡天天视频国产| 精品一区二区三区最新| 死我十八禁| 操东北女人| 一级黄色性爱A级片| 国精品一区二区三| 嗯嗯嗯啊啊啊干死我吧| 精品国产一区探花在线观看| 丁香色五月 97干| 欧美 传媒 麻豆 日韩 偷拍| 蜜臀99久久国产| 国产精品探花色| 久久久无码av精| 日本三级小说中文字幕| 欧美十八禁视频| 91中文在线| 99热只有| 麻豆av一区二区| 南澳成人一级片在线播放| 性爱视频免费网址| 强奸乱伦AV一天堂网| 欧综合网| 午夜精品久久一区二区| 日本一级特级毛片视频| 很黄很污的免费网站| 中文字幕第二页| 欧美色图人妻| 色偷综合| 91 丝袜在线播放| 视频一区二区免费在线| 亚洲 欧美 日韩 国产一区二区| 亚洲精品人体| 国产福利电影| 成人免费毛片| 8050无码八戒| 欧美人妻一区| 精品网站9999| 久久6热精品99视频| 偷拍色图| 无码精品久久久久久亚洲| 激情小说成人日本无码一| 啊啊啊好大好湿| 超碰97人人cao| 亚洲免费日韩在线一区二区| 国产99精品一区二区三区免费| 日日摸日日碰| 日韩欧美国产高清视频| 久久久极品| 九九RE视频在线精品| 天天操天天舔| 日本中文字幕高跟| 久久精品国产亚洲AV高级北京| 欧美日动态视频| 亚洲午夜福利在线影院| 97AV在线观看| 婷婷国产精品九区| 中文字幕在线高清男人的天堂| 老司机福利社视频在线观看| 91丝袜美腿网站| 亚洲在线网站| 东方亚洲在线操逼天堂| 91麻豆天美国产欧美| 无码视频一区二区| 综合网欧美在线| 秋霞视频一区二区| 日日躁狠狠躁天天躁精品| 小骚逼被操的爽不爽| 久草男人天堂| 97超久碰| 亚洲熟妇图片| AV综合中文字幕干| 国产亚洲99久久精品熟| 使劲用力艹少妇视频一区二区| 95自拍视频在线观看| 无马一区二区| 成人久久精品| 日本大片日本一区二区免费高清| 精品亚洲国产成人精品| 亚洲图片第一页| 九九九久久久久| 啊啊啊啊嗯嗯嗯用力好爽 | 中文字幕 码 自拍 视频 区| 在线日韩日本亚洲国产| 久久中文字幕女同性恋一区| 九久9热| 日韩国产不卡在线视频| 亚洲久9| 东北女人操比视频| 亚洲天堂东京热| 亚欧无码在线| 黄人人操人人操| 九久9精品| 国产白丝在线| 国产成自自拍在线观看| 国产精品久久久蜜臀| 探花在线免费观看视频国产一区| 国产日韩精品suv| 国产后入式在线观看| 2020中文字幕在线观看| 岛国黄色短视频| 国产一区二区精品久久99| 91人妻做a观看视频| 怡红院亚洲怡春院av| 国产av高清版| 五月激情综合网| 家庭乱伦性爱av| a片自拍直播视频| 黑人性暴力毛片| 亚洲999综合| 91老熟女逼| www超碰| 亚洲色图欧美色18直播在线| 蜜乳中文字幕a在线| 在线电影亚洲色图| av2014 日韩在线中文字幕| 伊人一区二区三区| 超碰夫妻97| 日本不卡高清免v欧美日韩在线观看| 333kkkk·亚洲com久久| 色乱二区| 国产综合操逼高清| 免费看A片毛毛片在线播| 亚洲欧洲自拍图片专区满春格| 上床啊啊啊| 日韩欧美中文字幕搭讪巨乳美人妻视频| 老司机久久| 国产精品亚洲四五区在线观看| 操狠狠| 天天夜夜久久| 午夜啊啊啊| 美女在线H91| 久热一区二区| 超碰午夜| 91N综合网在线| 日韩资源网| 国产妇女精品视频青青草| 色眯眯射| 四虎在线观看网站| 日韩欧美中文字幕搭讪巨乳美人妻视频| 亚洲男人天堂2013| 精品无人区麻豆乱码1区2区图片| 亚洲高清少妇| 中文字幕一区二区三区人妻不卡| 日本二三四区| 97视频网站| 精品国产91内射久久| 八戒午夜福利理论片| 日本操逼二区| 成人AV在线电影| 国产原创自拍| 97视频新免费| 国产自偷| 午夜精品久久一区二区| 欧美性生活免费网| www.色操逼| 五月丁香成人网| 最新一二三区视频| 欲色啪| 亚洲激情深爱文学小说网站| 亚洲综合20p| 人人做天天爱| 天天日天天插| 老女人碰碰在线碰碰视频| 97综合久第一页| 日韩精品资源专区二区| 日本精品一区二区中文字幕| 极品丝袜无码| 91黄射| 国产91福利小视频在线观看| 亚洲国产日韩欧美熟妇在线| 亚洲色图美腿丝袜| 欧美日韩久久精品爱爱| a一区二区三区乱码在线| 中文字幕免费看大片| 天天操女人| 亚洲综合 欧美| 久久专区| 中文字幕五区| 亚洲天堂电影网99999| 亚州性色| 综合自拍| 动漫av中文| 蜜臀99久久精品久久久懂爱| 静品嫩模一区二区| 青青操视频在线| 黄色免费网| 少妇一线天久久久久久| 狠狠97| 蜜臀久久99精品久久久久久无删减 | 99re69综合| 草B在线| 高清在线不卡一区二区 视频| 99色热| 一级黄碟在线看| 亚洲?V高清一区二区三区尤物| 双插性欧美一二三区| 97中文字幕色| 美女操逼A A| 中文字幕艹艹| 国产精品熟女一区二区三区| 婷婷综合视频| 97久久国产精品女不卡| 一区二区三区精品黑丝白丝酒店对鸡| 人人爽夜夜玩视频| 国产AV高清AV无码| 欧美综合综合| 激情五月天婷婷| 99re这里只有精品2| 国产真实野战在线视频| 久久色AV线| 十八禁视频一区二区| 熟妇人妻一区二区三区| 人妻偷拍一区二区三区| 1204av韩国| 91视频精品| 玖玖爱综合网| 久久久一区二区三区三州| 丝袜色综合| 一区二区免费电影久久| juliaann丝袜大战黑鬼| 成人无码在线超碰网| 色噜噜国产在线| 欧洲综合色图| 91精品国产综合久久久蜜臀| 人妻夜夜爽天天爽麻豆三区网站 | 神马久久网| 久久透逼视频| 青青草无码视频| 少妇干B| 色逼综合| 最近2019中文字幕国语免费版| 亚洲国产青青| 国产精品久久久吖| 先锋音影AV| 国产精品极品美女视频| 人人爽夜夜玩视频| 日本男人插女人的逼黄色| 激情婷婷黑人91| 欧美色道啊| avav青青草久久夜| 一本色道人妻久久| 97chaopengongkai| 爽爽爽免费视频| 日韩乱伦影音先锋| 欧美色另类| 精品人人| AV大香蕉| 自拍偷拍 日韩无码| 日本道人妻久久久在线不卡色视频| 亚洲经典啪啪| 热无码中文亚洲H一道本一区二区| 美女露胸露奶头| 18禁美女裸体无遮挡啪啪| 精品熟妇视频一区二区| 日韩久久艹| 狠狠干综合| 性暴力欧美猛交在线直播| 青操影院| 国产精品2020| 六月丁香啪啪啪| 国产欧美精选激情视频| 一级二级在线观看| 日本国产二线女色| 校园春色综合色| 欧美性爱在线无码| 日本免费专区| 亚洲色交| 欧美男人亚洲天堂| 久久久偷拍| 18禁网站在线播放| 99re99在线视频| 熟妇艹鸡八| 五月婷丁香| 九九干| 91网站18| 丝袜性亚洲| 中文字幕在线2| 97干天天| 中文?日韩?免费?精品| 中文字幕免费观看| 啊啊啊好舒服视频在线观看| av一区二区三区四区| 免费看污网站| 国模限制级电影| 五月丁香六月婷综合成人综合| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 综合少妇网| 日本999精品| 综合网~91综合网| 开心五月婷婷| 青草草免费网站av| 日本免费二区三区| 欧美在线亚洲| 丁香7月婷婷| 国产97视频免费观看| 天天噜| 色999偷自拍拍| 国产精品熟女一区二区三区| 992视频一区| 蜜桃天美传媒AV一区二区三区| 亚洲色图 图片| 九九热精彩视频| 亚洲成人色情五月天丁香花| 日韩一级二级三级免费看完整版国语版 | 亚洲免费97免费| 97超碰色屌| 东京日日夜夜| 国产有码一区| 日韩精品人妻中文字幕久久久| 中文字幕天天天天天| 99re视频在线观看这里只有精品| 五月婷婷色色| 英伦大奶子熟妇吊带| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 十八禁成人网站在线观看| 色色福利| 欧美在线官网| 蜜色网色哟哟| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 久久线上视频免费看| 亚洲色电影在线| 97超碰精品| 欧美精品久久96人妻无码| 午夜男女爽爽大片免费观看| 亚洲成人日韩小说| 五月婷婷性爱| 嗯嗯啊啊用力视频免费| 九九av| 四虎av在线| 99亚洲国产精品色一区二区三区| 岛国黄色大片网站| 大香蕉碰碰| 青青草伊人久久| 香蕉一区二区三区在线视频| 日本操逼视频导航| 久操精品网| 精彩视频日韩| 久久人人爽av亚洲精品天堂桃色 | 美女91av| 国产精品国产亚洲区艳妇糸列| 亚洲精美粉嫩嫩泬在线观看 | 亚洲精品天天影视综合网 | 日欧美色| 91女色| 大屁股人妻女教师撅着屁股| 成视频在线观看免费看| 中文字幕版| 91插B网站| 91AV入口| 国内91熟女人妻丝袜天天精品视频在线| 懂色AV中文| 91爱网| 99热只有这里有精品| 五月天激情国产综合婷婷婷| 蜜奶av| 91麻豆天美传媒在线| 精品午夜福利国产一区二区在线观看 | 午夜.DJ高清在线观看免费7| 97超级久久强资源| 67914在线兔费成人视频| 自拍偷拍草一草| 久久一二三四五六七八九区区区| 91久久久久久久| 综合影院永久入口国产| 啪啪综合网| 99re6国产精品99re| 久久天堂| 97在线免费看| 欧洲性爱无码区| 婷婷五月成人| 欧美激情在线观看视频| 岛国视频一二三区| 色五月第四色| 国产又黄又爽又刺激久久久久久| 牛黄色久午久| 五月婷婷啪啪| 乱欲性色| 国产91亚洲精品一区二区三区| 亚洲精品国产精品乱码不99| 色香伊人| 熟女色综合久久| 一直超碰| 可以在线观看AV的网站| 色九九九九| 日本高清视频xxxx| 伊人网在线观看| 国产福利电影| 蜜臀久久在线视频| 国产亚洲精品A在线观看下载| 爱爱动态120秒| 欧美色乱| 国产一区二区三区影片| 98超碰欧美| 亚洲五月天激情| AV天堂因数| 欧美亚性天堂| 日韩精品一二三| 99精品在线观看| 欧美中文综合| 亚洲高清视频在线观看| 国产野战露脸在线播放| 色妇91| 国产一级特黄大片处女| av 模特一区了| 99日精品欧美国产| 97免费视频在线| 超碰97欧美在线| 性爱视频免费网址| 老熟女中文字幕高清| 思思久热在线精品66| 中文字幕丝袜美腿| 色久桃花影院在线观看| 乱色老一区二区三区的观看方式| 日韩午夜啪啪视频| 一级性爱视频免费观看| 蜜奶av| 大香蕉久| 日本精品五区| 中文字幕日韩人妻视频一区二区三区交换夫妻| 伊人aaa| 久久免费精品视频免一| 欧美美女视频| 啊啊啊免费视频| 久久中文色图| 超碰人人妻| 欧美一级黄片视频在线| 免费男人的天堂| 98一区二区精品| 无码人妻精品一区二区中文| 中文字幕AV中出| 欧美日韩一干二干| www色婷婷| 欧美大香蕉久| 91九色丨国产丨爆乳| 国产多人在线观看视频| 日曰骚久久精品| 岛国不卡超碰护士AV在线播放| 色综合美国| 亚洲性爱无码乱伦av| 亚洲性爱乱操x| 国产三级片在线观看| 99精品在线| 欧美页片| 小泽玛利亚一二三| 郑州宾馆老熟女露脸啪啪| 久久一区二区三区四区五区| 久欲AV| 亚洲天堂,男人| 免费看国产曰批40分钟怎么下载| 亚洲综合91| 992大香蕉| 欧美爆操91| 欧美操逼一二三区| 五月婷婷久久综合| 久久性爱网站| 女同女同恋久久级三级| 国产精品久久久久无码A√| 91人精品妻入口| 精品国产av一区二区三区四区入口| 97天天| 极品五月天噜噜| 肉嘟嘟www视频在线观看高清| 性爱视频啪啪啪啪| 国产亚洲精品美女久久久| 国产精品扒开腿做爽爽爽视频| 97在线观视频免费观看| 欧美性生活内射| 亚码人妻| 夜夜爽夜夜摸夜夜操免费视频| 天天拍天| av影院十区| 91爱剪切久久| 国产 日韩 欧美一区| TS人妖另类精品视频系列| 伊人天天久久动态图| 亲子敌伦对白在线播放| 思思视频免费看网站| 国产精品永久免费10000| 国产精品一区二区校花| 国产精品久久久久久片| 柠檬AV导航| 日韩精品.久久精品.AV女优.天美传媒| 日本在线不卡123| 色婷婷综合久久中文字幕雪峰| 四季AV一区二区凹凸精品小说| 日本999精品| 日本一卡二区在线| 国产偷人伦激情在线观看| www.伪伪| 亚洲国产精品久久久久久久久久| 蜜臀亚洲中文| 91夜夜蜜桃臀1区2区3区| 美日韩一卡二卡三卡免费人妻精品| 长长久久88视频| 亚洲色五月| 久久久久久久78| 中文字幕诱惑制服人妻丝袜美丝袜美 | 91日产桃蜜| 日本一区二区亚洲综合| 福利伊人玖玖国产| 久久久久久大| 久久中文字幕人妻熟av女蜜柚| 天天射夜夜操| 中国探花熟女| 青青操少妇| 欧美黑人与女人91| 少妇高潮流水av免费| 中国熟妇| 在线有码中文字幕| 五月色综合| 五十路熟女工口| 亚洲av资源| 国产一进一出视频网站| 国产丝袜视频| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 春色校园综合网| 夜夜春夜夜操| 亚洲伊人a线观看视频| 狠狠干,狠狠操| 蜜臀一二三| 亚洲一区二区三区在线激情| 99色色网| 亚春色色| 操比国产| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 国产成人99久久亚洲综合| 另类天堂| 丝袜美腿操av| 久久‘黄片视频| 秋霞午夜视频一区二区| 国内偷拍精品一区二区| 欧美综合站| 欧美高清16| 亚洲第一在线视频| 人澡逼| 亚洲最新av无码成人精品区 | 精品黄色电影| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 欧美 亚洲 91| 国产 v乱码一区二| 人妻在线臀日韩| 在线观看日韩av不卡| 97天天操天天干| 性爱网站一区二区| 图色综合网| 操一操摸一摸| 男人天堂站| 97操| 2025亚洲男人天堂| 午夜性生活av免费在线看| 日韩一级二级| 91五十路| 美女啊啊啊啊pc| 国产精品内射婷婷一级二| 日韩乱码av| 黄骗免费网站| 伊人久久国产免费观看视频| 欧美日韩国产成人高清| 欧洲免费一区二| 日本性交操一区二区不卡系列| 欧美在线伊人色| 青青青国产手线观看视频2| 好吊色一区| 美国一区二区三区视频| 亚欧洲一区二区视频| 操逼操网| 丰满人妻-区二区三区免费看 | 91艹逼精品| 无码国产Av| q2午夜理论片夜色av| 国产精选三级在线观看| 久久精品国产亚洲粉嫩| 伊人97超碰| 亚洲国产成人精品999| 欧美韩国你懂得在线 | 一区二区三区日韩欧美| 影视综合无码少妇| 玖色av| 人人爽天天爽| 波多野42部无码喷潮在线观看| 日本久久999| 九九久久精品| 欧美精品久久96人妻无码| 97er欧美性| 色九月婷婷| 1769国内精品视频| 天天综合欧美黑人| 久久的网站啊啊啊啊啊| 国产精品自拍欧美在线| 夜色AV无码手机在线影院| 欧美天堂超碰97| 91九色在线| 伊人网青青| 99精品无码| 青青草原狼av| 精品伊人久久久大香线蕉小说| 天天日夜干| 天天操人人操骚逼网站| 日日骚中文字幕| 玖玖爱一区在线| 五月婷婷丁香六月| 日韩一性一交一A片俄罗斯| 日日夜夜免费| 99这里只有精品| 日韩三级在线观看mp4| 翔田千里一区二区三区奶水| 国产熟女精品区| 国产成人亚洲精品自产在线| 一级AV性爱| 一区二区三区男人的天堂| 国产熟女| 久久精品亚洲成a人天堂| 欧美爱爱97| 亚洲熟女av日韩熟女| 大香蕉伊人75| 欧美色日| 九九成人精品| 5278欧美一区二区三区| 女欧美一区二三区| 欧美 亚洲 综合 制服| 成人97人人超碰人人| 青青草大香蕉在线视频| 国产 亚洲 丝袜 制服| 色吧5亚洲| 人人爽夜夜玩视频| 不卡超碰护士AV在线免费播放| 久草免费在线一区二区| 日韩性爱1级片视频| 91P0RNY大屁股人妻| 天天肏天天干| 91色宗合| 91日韩国产欧美亚洲另类精盘州至城都| 99日免费视频中文字幕| 亚洲自拍欧美色综合| 日逼五月天| 麻豆久久久久久久久丝袜 | 国产福利精品98视频| 亚洲色阁| 极品色| 综合夜夜| 人妻色偷色噜| 干我久操| 二男一女成人A片| 欧美日韩制服| 超碰久超碰久| 激情欧美97| 91亚洲欧洲| 97久久网| 翔田千里Av在线| 国产视频一区二区三区在线免费观看| 国产91av在线播放| 成人日韩3| 特级丰满少妇一级AAAA爱毛片| 日韩丰满熟妇| WWW黄片COM| 成人短视频在线观看| 五月婷婷色| 少妇高潮99p| 亚洲日韩青青草色月| 夜夜综合| 加勒比av网| 精品天堂| 91av熟女人妻| 久久久久久久国产视频| 欧美性爱系列| 欧美日韩性感| 最新精品久久蜜桃 | 欧美劲爆视频一区二区| 亚洲九九夜夜| 用力操死我| 操曰本熟女| 操一对老熟妇爽上天视频| 蜜臀久久99精品久久久| 亚洲密乳AV| 国产亚洲国产超碰| 日本免费不卡二区| 九九九九久久久| 巨爆乳肉感一区二区三区竹菊影视 | 五月综合视频| 久久天天躁日日躁狠狠躁| 男女性扦B| 777超碰| 免费αⅴ在线观看| 亚洲欧美精品91| ai欧美亚洲小说| 精品对白久久不卡| 日韩无码三级影院| 婷婷激情啪啪| 91无码人妻| 亚洲美女av无码| 干日本人少妇午夜寂寞影院| 淫妻综合网| 亚洲素人网| 亚洲国产综合视频| 成人精品在线| oumeizonghese,www| 欧美色乱| 欧美刺激色黄片免费看| 久久水蜜臀亚洲AV无码精品| 日韩大香蕉AV影片| 欧美性爱中文字幕无线码| 欧美久久九九| 国产2.3.4区| 国产最新小视频在线播放下载 | 99999久久精| 丁香五月婷婷色| 精品国产网站| 亚洲精品97久久| 天天干人妇| 国产精品天干天干综合网麻豆 | 色五月亚洲| 蜜臀av网址| 国产强奸乱伦xd| 真实高潮91| 日本女人久久久| 国产伦精品一区二区三区在线观| 亚洲男人天堂2013| 亚洲av无码成电影在线播放| 97视频在线播放| 天天躁日日躁AAA片李宗瑞| 99色骚| 国产丝袜欧美在线视频| 亚洲AV无码天美传媒一区| 天干天干天干天天做| 欧美日韩一区二区三区四区蜜桃| 久久久熟妇熟女国产| 欧美日韩在线视频网站| 91九九九馒头| 国产一区二区二区按摩精品啪视频| 成人片在线播放| 黑丝制服中文字幕| 丁香五月天激情网站| 日韩有码回春沙龙第一页| 久久黄色性爱视频| 蜜臀久久久国产| 色五天伊人| 视频二区熟女人妻| 丁香五月综合| 四虎884| 九九Av| 亚洲黄色AV电影| 天天综合91在线| 四虎免费在线观看| 天天操天天射青青草| 亚洲无992tv| 午夜天堂精品久久| 91影库| 成人精品欧洲亚洲| 操比国产| 亚洲性高潮| 97干在线看| 亚洲国产91精品一区二区久久| 亚洲综合113页| 天天弄天天操| 天欧美在线| 日韩精品中文字幕二区| 日本不卡一二区| 超碰97欧美在线| 不卡中文字幕aⅴ在线| 国产免费久久精品99re韩国| 1024人妻熟女一区二区三区| 美女黄页网站| 91久青| 91精品女厕偷拍视频| 好属操| 极品丝袜无码| 国产成人无码a| 999 久久久| 大香蕉乱伦视频网| 亚洲av青草久久一区二区| 欧美高潮在线| 粉嫩在线一区二区懂色| 欧美第二页| 97一区二区三区视频| 无码在线亚洲| 成人精品无码| 欧美国产操逼| 亚洲18禁| 嫖老熟女A片一二三区| 大香蕉综合网| 蜜桃臀一区二区aV| 97国产精品国| 亚洲一区二区中文字幕| 午夜精品久久一区二区| 伊人久久亚洲色欲综合网站| 一本一道人妻久久一区二区三区 | 婷婷伊人| 午夜视频好爽啊| 91丝袜视频在线观看| 精品久久久久久久久久久久| 日本一级黄色电影| 欧美一级特黄淫片在线观看| 91爱剪切久久| 欧美第二页午夜| 中文字幕加勒比海高清无码免费视频| 日本视频在线观看污污污| 日韩97P| 九九九九一区| 久草男人天堂| 蜜桃久久久久久久| 婷婷五月天成人网| 无码国产精品久久久久| 精品国产乱码| av三级电影在线播放| 97中文综合| 色悠久久久av| 少妇69中文| 青青草原人妻| 人妻少妇色综合| 亚欧高清在线| 中文字幕日韩人妻视频一区二区三区 | av天堂加勒比| 九九九精品色乱九九九| 欧美大香蕉97| 日韩精品亚洲一二三| 东京热精品97综合网| 人妻在线中出视频| 91亚洲黑人| 夜夜操狠狠操| 色婷婷综合网站| 日韩AV一起草| 嫖老熟女A片一二三区| 亚洲精品xxx| 久久首页| 高潮的A片激情扒开一区| 国产精品日本无码A片| 九九碰九九爱97超碰| 国产精品乱码久久| 玖玖爱影院| 射久久| 午夜毛片亚洲精品片国产久久久| 亚洲 欧美 第一页 | 九九干| 欧美精品日韩久久久九| 天天干天天燥| 一级黄色视频网| www.黄色在线| 成人网站 免费观看| 无码乱人伦中文视频| 日本精品不卡一二三区| 亚洲国产欧美中日韩成人综合视频| A片三级无码| 99在线精品观看99| 校园春色 男人天堂| 亚州宗合另类| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 日本九九久久99| 狠狠干综合| 国产精品香蕉| 超碰91在线| 午夜性生活av免费在线看| 97免费在线视频| 夜夜草天天| 亚洲一区二区三区播放在线| 欧美亚洲另类在线蜜桃| 天天躁日日躁AAA片李宗瑞| 欧洲熟妇xxXx欧美老妇裸体| www.超碰| 精品人妻二区三区| 国产丰满少妇久久久精品影院| 97频视在线| 一区二区无码视频| 日日爱99| 中文字幕一二区二三区人妻专区| 亚洲精品第一| 亚洲熟妇自偷自拍另欧美| 亚洲男人的天堂V| 青青草色插素人| 久久久久久久久久久精| 中文字幕乱亚洲美女精品一区| 日韩免费福利在线观看| 久久精品店| 男人天堂2019亚洲| 久久免费精品96| www.人人摸在线视频| 毛片一区二区| 国岛片视频| 亚洲图片 91| 91男同| 啊啊啊啊啊在线| 2020中文在线一区二区三区| 丁香啪啪| 成人一区二区三区四区| 精品国产乱子伦一区二区三区,精品一| 人人爱人人乐人人操| 免费A V在线播放| 玖玖97综合| 九99久久| 五月天久久综合网| 99在线免费视频| 国产一区二区久久| 综合久久97| 婷婷五月天激情网| 97超碰色屌| 欧美性91| 国产精品无码论坛| 国产福利影视| 超碰79人人乐| 蜜臀久久精品久久久久视频| 91啪啪视频| 乱伦图一区| 欧美色偷拍| 国产超碰97| 一级@啪啪视频| 情色AV电影| 超碰偷拍| 高清成年美女黄网站免费大全| 成人在线视频二区| 蜜汁欧美| 人人操,操人人| 欧亚不卡| 久久久999| 人妻久久久久久| 果冻传媒一区二区三区| 久久久久久一日韩字幕无码| 99国产精品人妻人伦| 日本幼女18+| A 天堂在线观看视频| 国产精品suv一区| 放黄片放3级黄片没穿衣服| 97福利视频| 国产乱码久久久| 在线性黄高清免费视频| 射丝袜大香蕉| 色区久久| 日本国产成人亚洲精品无码| 日韩AV一区二区三区三州三州| 欧美少妇高潮| 日本成人电影资源网| 久久久久久久久久久久黄色 | 国产精品一二三在线看| 婷婷丁香一区二区三区| 午夜男女爽爽爽影院视频| 中文字幕 人妻不满 在线视频| 欧美日韩中文字幕不卡| 天美麻花大全视频| 东北女人性交| 国产67194| 午夜一区| 日韩pv中文| 欧美乱伦专区| 78p欧美| 欧美色www亚洲国产阿娇要播| 国产精品乱人伊人网| 美女裸体无遮挡永久免费观看网站 | 国产精品网站免费| 国产精品久久久久久久久久梁医生| 午夜激情床戏激情| 国产高清午夜成人在线观看| 91jk色拍| 亚一综合久久久久久久久久| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 精品视频久久| 俺去久久| 成人97人人超碰人人| 亚洲的天堂网| 亚洲人体视频在线观看| 久久久久久九九九| 国产丝袜美女诱惑| 三级日韩一区二区三区| A啊啊在线观看| 精品美女人人干| 国产精品一区二区黄片| 亚洲欧美洲综合| 欧美成人性爱视频在线播放| 丝袜剧情| 啊啊啊水好多| 精品妇女一区二区三区| 在线播放成人高清免费视频| 亚洲人91| 99热这里是精品| 国产精品久久久| 国产丰满少妇久久久精品影院| 91社区拍啪人妻| 91色欧美| 久久做97| 影音先锋国产精品| 欧美性xxxxx狂欢| 人妻丝袜肏逼| 男人天堂2019亚洲| 18啪啪手机免费性爱| 淫纸中9区| 91jk色拍| 91精品大奶人妻| 国产精品第一区第一页| 熟女露脸激情自拍视频| 亚洲国产成人精品久久久国产成人一区二区 | 久久久久久亚洲Av无码| 久久成人精品| 亚洲一区二区三区麻豆传媒| 国产成人精品日本视频| 日语五十路和六十路亚洲国产精品| 日韩一级二级三级免费看完整版国语版| 日韩中文字幕二区| 欧美呦呦性爱| 日韩在线电影| 天天情欲宗合网| 91美女視頻| 九九九九九九视频| 色综合av男人天堂| 探花精品视频| 亚洲欧美性生活| 国产999精品久久久久久| 操穴国产| 96久久久精品| 国产欧美另类久久久精品课程| 丝袜美腿操av| 免费中文综合精品| 久久久久国产精品片区无码直播| 免费一级精品啪啪视频| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 亚洲欧洲偷拍一区| 蜜臀AV网站| 人妻中文字幕精品无码| 国产一区二区三区高清视频| 人妻第一页| 高清孕妇孕交 交孕妇| 白 大 人妻 区 在线| 国产性感骚丝袜在线| 天天射影院| 噜噜吧,噜噜色,噜噜| 超97在线精品视频| 日本一区二区三区午夜观看| 综合网天天| 91性感在线| 亚洲 日本 不卡| 成人日本片久久久蜜桃| 蜜臀th| 丝袜av一区二区三区| 久久综合精品一区二区三区| 啊啊啊啊啊啊啊国| 蜜桃视频精品一区二区| 日本色婷婷| 五月婷婷综合激情| 狠狠操狠狠爱| 色婷婷丁香五月| 欧美熟爽综合| 丁香婷婷色五月| 久操热| 久久性爱视频| 亚洲五月丁香花狠狠干一区二区三区 | 红桃视频高潮| 殴美日韩m| 爱爱动态试试看6 0秒| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 国产久久久| 2020中文字幕在线观看| 精品传媒在线一区| 亚洲丝袜综合| 在线视频免费观看午夜| 高清有码一区二区| 日韩性爱一级片| 欧美精品23| 国产精品久久久久亚洲av| 久久久免费的精品| 国产一区二区三区影片| 五月大香蕉| 日韩人妻少妇中文字幕| 五月天婷婷欧美三区| 欧美另类天堂| 91丝袜人妻|