亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

ONVIF設(shè)備對(duì)接核心鏈路:Discovery、GetCapabilities與GetStreamUri詳解

ONVIF設(shè)備對(duì)接核心鏈路:Discovery、GetCapabilities與GetStreamUri詳解 簡介本資源是一份面向嵌入式開發(fā)與視頻監(jiān)控系統(tǒng)集成工程師的ONVIF協(xié)議對(duì)接實(shí)踐代碼聚焦NVT端RTSP視頻流與OnvifDeviceManagerODM的通信實(shí)現(xiàn)解決設(shè)備端視頻服務(wù)如何符合ONVIF規(guī)范并完成基礎(chǔ)發(fā)現(xiàn)、媒體配置與流地址獲取等關(guān)鍵環(huán)節(jié)的問題。壓縮包為RAR格式僅含1個(gè)核心文件——onvif.c是作者自主編寫的ONVIF協(xié)議交互邏輯主體涵蓋SOAP消息構(gòu)造、WS-Discovery響應(yīng)處理及RTSP流URL提取等關(guān)鍵函數(shù)其余輔助代碼可依博文方法自動(dòng)生成結(jié)構(gòu)精簡、重點(diǎn)突出整體體積僅13KB便于快速導(dǎo)入與調(diào)試。已有2664人學(xué)習(xí)下載適合具備C語言基礎(chǔ)和網(wǎng)絡(luò)協(xié)議常識(shí)的中高級(jí)開發(fā)者在理解ONVIF標(biāo)準(zhǔn)框架基礎(chǔ)上通過閱讀該源碼掌握設(shè)備側(cè)視頻服務(wù)的標(biāo)準(zhǔn)化接入路徑并獲得可復(fù)用的消息封裝范式與典型排錯(cuò)切入點(diǎn)。1. ONVIF 設(shè)備管理不是“連上就行”RTSP 流與 OnvifDeviceManager 對(duì)接失敗的 90% 都卡在協(xié)議握手和能力發(fā)現(xiàn)這一步你手頭有一臺(tái)標(biāo)稱支持 ONVIF 的 IPC用 VLC 能直接拉rtsp://ip:554/stream1看畫面但一接入 OnvifDeviceManagerODM就報(bào)“Failed to get device capabilities”或“SOAP Fault: Invalid URL”甚至根本搜不到設(shè)備——這不是設(shè)備壞了也不是 ODM 工具不行而是 ONVIF 協(xié)議棧里最隱蔽也最關(guān)鍵的環(huán)節(jié)被跳過了設(shè)備發(fā)現(xiàn)Discovery、服務(wù)端點(diǎn)獲取XAddr、能力查詢GetCapabilities三步必須嚴(yán)格按 SOAP over HTTP WS-Discovery / WS-Addressing 規(guī)范執(zhí)行且每個(gè)響應(yīng)頭、命名空間、超時(shí)策略都影響最終 RTSP 流地址的生成邏輯。這份資源不是教你怎么裝個(gè) GUI 工具點(diǎn)幾下而是提供一套可驗(yàn)證、可調(diào)試、可嵌入自有系統(tǒng)的 ONVIF 設(shè)備對(duì)接最小可行鏈路從原始 UDP 發(fā)現(xiàn)包解析到手動(dòng)構(gòu)造 GetStreamUri 請(qǐng)求再到比對(duì) ODM 內(nèi)部日志確認(rèn) XAddr 是否被正確路由。適合正在做視頻平臺(tái)接入、IPC 管理 SDK 開發(fā)、或需要繞過商業(yè) ODM 做定制化設(shè)備納管的嵌入式/后端工程師。它不依賴任何云服務(wù)所有交互走本地局域網(wǎng)純 HTTP/SOAP實(shí)測兼容??怠⒋笕A、宇視等主流廠商固件v2.4–v2.6也踩過 Hikvision 某些型號(hào)強(qiáng)制要求wsa:To頭帶/onvif/device_service后綴的坑。2. ONVIF 協(xié)議棧不是黑匣子為什么必須自己拆解 Discovery 和 GetCapabilities 流程ONVIF 不是單一協(xié)議而是一套基于 Web Services 的規(guī)范組合核心依賴三個(gè) W3C 標(biāo)準(zhǔn)WS-Discovery設(shè)備發(fā)現(xiàn)、WS-Addressing消息尋址、SOAP 1.2消息封裝。很多開發(fā)者誤以為“ODM 能搜到設(shè)備 ONVIF 就通了”結(jié)果在調(diào)GetStreamUri時(shí)返回空 URL 或 404 —— 實(shí)際上ODM 搜到的是設(shè)備的網(wǎng)絡(luò)位置IPPort但真正決定 RTSP 地址的是設(shè)備在GetCapabilities響應(yīng)中聲明的Media服務(wù)端點(diǎn)trt:Media下的XAddr而這個(gè)XAddr可能是http://192.168.1.100:80/onvif/media_service也可能是https://192.168.1.100:443/onvif/media甚至某些固件會(huì)返回http://device-hostname:80/onvif/media_service此時(shí)若 DNS 不通則徹底失敗。本節(jié)帶你親手跑通這條鏈路不靠 GUI只靠 curl Python 抓包看清每一步數(shù)據(jù)怎么來、往哪去。2.1 手動(dòng)觸發(fā) WS-Discovery用 UDP 組播抓出設(shè)備真實(shí)服務(wù)地址ONVIF 設(shè)備啟動(dòng)后會(huì)周期性向239.255.255.250:3702發(fā)送 ProbeMatch 響應(yīng)。我們不用現(xiàn)成工具直接用 Python 構(gòu)造一個(gè)最小化 Probe 請(qǐng)求監(jiān)聽響應(yīng)# probe_discovery.py import socket import time import xml.etree.ElementTree as ET # WS-Discovery Probe 請(qǐng)求精簡版僅含必要命名空間 probe_xml ?xml version1.0 encodingUTF-8? soap:Envelope xmlns:soaphttp://www.w3.org/2003/05/soap-envelope xmlns:wsahttp://schemas.xmlsoap.org/ws/2004/08/addressing xmlns:dnhttp://www.onvif.org/ver10/network/wsdl soap:Header wsa:Actionhttp://schemas.xmlsoap.org/ws/2005/04/discovery/Probe/wsa:Action wsa:MessageIDuuid:{message_id}/wsa:MessageID wsa:Tourn:schemas-xmlsoap-org:ws:2005:04:discovery/wsa:To /soap:Header soap:Body Probe xmlnshttp://schemas.xmlsoap.org/ws/2005/04/discovery Typesdn:NetworkVideoTransmitter/Types /Probe /soap:Body /soap:Envelope.format(message_idstr(time.time()).replace(., )) # 發(fā)送 Probe 到組播地址 sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind((, 0)) group (239.255.255.250, 3702) sock.sendto(probe_xml.encode(utf-8), group) # 監(jiān)聽 3 秒響應(yīng) sock.settimeout(3.0) try: while True: data, addr sock.recvfrom(65535) print(f[DISCOVERY] Device at {addr[0]} responded:) # 解析 ProbeMatch 中的 XAddrs關(guān)鍵這是后續(xù)所有請(qǐng)求的根地址 root ET.fromstring(data) for elem in root.iter(): if XAddrs in elem.tag: print(f XAddrs: {elem.text.strip()}) # 示例輸出http://192.168.1.100:80/onvif/device_service except socket.timeout: print([DISCOVERY] No response within timeout.) finally: sock.close()邏輯說明這段代碼不依賴任何第三方庫只用標(biāo)準(zhǔn)庫發(fā)送標(biāo)準(zhǔn) Probe 請(qǐng)求。關(guān)鍵在于XAddrs字段——它不是設(shè)備 IP而是 ONVIF 設(shè)備服務(wù)的完整 HTTP 入口地址。很多 ODM 工具內(nèi)部就是靠這個(gè)字段拼接后續(xù)GetCapabilities的 URL。如果這里返回空或格式錯(cuò)誤如只有 IP 沒端口說明設(shè)備固件未正確實(shí)現(xiàn) WS-Discovery需降級(jí)用http://ip/onvif/device_service硬編碼嘗試。2.2 解析 GetCapabilities 響應(yīng)定位 Media 服務(wù)的真實(shí) XAddr拿到XAddrs例如http://192.168.1.100:80/onvif/device_service后下一步是調(diào)用GetCapabilities獲取各子服務(wù)地址。注意此請(qǐng)求必須攜帶wsa:To和wsa:Action頭且 SOAP Body 必須嚴(yán)格匹配 ONVIF Schema# 使用 curl 手動(dòng)調(diào)用 GetCapabilities替換 YOUR_DEVICE_XADDR curl -X POST \ -H Content-Type: application/soapxml; charsetutf-8 \ -H SOAPAction: http://www.onvif.org/ver10/device/wsdl/GetCapabilities \ -d ?xml version1.0 encodingUTF-8? soap:Envelope xmlns:soaphttp://www.w3.org/2003/05/soap-envelope xmlns:wsahttp://schemas.xmlsoap.org/ws/2004/08/addressing xmlns:tdshttp://www.onvif.org/ver10/device/wsdl soap:Header wsa:ToYOUR_DEVICE_XADDR/wsa:To wsa:Actionhttp://www.onvif.org/ver10/device/wsdl/GetCapabilities/wsa:Action wsa:MessageIDuuid:$(uuidgen)/wsa:MessageID /soap:Header soap:Body tds:GetCapabilities tds:CategoryAll/tds:Category /tds:GetCapabilities /soap:Body /soap:Envelope \ http://192.168.1.100:80/onvif/device_service響應(yīng)中重點(diǎn)提取tds:Capabilitiestds:Mediatt:XAddr的值例如tds:Media tt:XAddrhttp://192.168.1.100:80/onvif/media_service/tt:XAddr /tds:Media這個(gè)XAddr才是GetStreamUri請(qǐng)求的目標(biāo)地址。切記不能直接用 Discovery 返回的XAddrs去調(diào)GetStreamUri必須經(jīng)過GetCapabilities二次確認(rèn)。因?yàn)橛行┰O(shè)備在 Discovery 中返回的是 Device Service 地址而 Media Service 是獨(dú)立端點(diǎn)。2.3 構(gòu)造 GetStreamUri 請(qǐng)求生成合法 RTSP URL 的四個(gè)必要參數(shù)有了 Media Service 的XAddr下一步是調(diào)用GetStreamUri。此接口要求傳入StreamSetup結(jié)構(gòu)體其中StreamRTP-Unicast或RTP-Multicast和TransportRTSP或HTTP必須匹配設(shè)備能力。常見錯(cuò)誤是硬寫RTP-Unicast但設(shè)備實(shí)際只支持RTSP# get_stream_uri.py import requests import xml.etree.ElementTree as ET media_xaddr http://192.168.1.100:80/onvif/media_service profile_token Profile_1 # 通常為 Profile_1可通過 GetProfiles 獲取 get_stream_uri_xml f?xml version1.0 encodingUTF-8? soap:Envelope xmlns:soaphttp://www.w3.org/2003/05/soap-envelope xmlns:wsahttp://schemas.xmlsoap.org/ws/2004/08/addressing xmlns:trthttp://www.onvif.org/ver10/media/wsdl soap:Header wsa:To{media_xaddr}/wsa:To wsa:Actionhttp://www.onvif.org/ver10/media/wsdl/GetStreamUri/wsa:Action wsa:MessageIDuuid:{int(time.time())}/wsa:MessageID /soap:Header soap:Body trt:GetStreamUri trt:StreamSetup tt:Stream xmlns:tthttp://www.onvif.org/ver10/schemaRTP-Unicast/tt:Stream tt:Transport xmlns:tthttp://www.onvif.org/ver10/schema tt:ProtocolRTSP/tt:Protocol /tt:Transport /trt:StreamSetup trt:ProfileToken{profile_token}/trt:ProfileToken /trt:GetStreamUri /soap:Body /soap:Envelope response requests.post( media_xaddr, dataget_stream_uri_xml, headers{ Content-Type: application/soapxml; charsetutf-8, SOAPAction: http://www.onvif.org/ver10/media/wsdl/GetStreamUri }, timeout10 ) if response.status_code 200: root ET.fromstring(response.text) uri_elem root.find(.//{http://www.onvif.org/ver10/media/wsdl}Uri) if uri_elem is not None and uri_elem.text: print(f[RTSP URI] {uri_elem.text}) # 示例輸出rtsp://192.168.1.100:554/stream1?tokenProfile_1 else: print([ERROR] Uri element not found in response) else: print(f[HTTP ERROR] {response.status_code}: {response.text})參數(shù)說明Stream: 必須與設(shè)備GetProfiles返回的StreamType一致RTP-Unicast最通用Transport/Protocol: 必須為RTSPHTTP是長連接流非標(biāo)準(zhǔn) RTSPProfileToken: 不能瞎填需先調(diào)GetProfiles獲取有效 token本例假設(shè)為Profile_1Uri響應(yīng)中的地址末尾?tokenxxx是 ONVIF 認(rèn)證憑證不可省略否則 VLC 無法播放。3. OnvifDeviceManagerODM不是萬能膠它內(nèi)部如何解析并緩存 ONVIF 服務(wù)端點(diǎn)OnvifDeviceManagerODM作為 Windows 平臺(tái)最常用的 ONVIF 調(diào)試工具其行為高度依賴底層 libonvif 庫對(duì) SOAP 響應(yīng)的解析邏輯。很多用戶反饋“ODM 能搜到設(shè)備但點(diǎn)不了預(yù)覽”本質(zhì)是 ODM 在GetCapabilities后錯(cuò)誤地將 Media Service 的XAddr當(dāng)作 RTSP 地址直接拼接而忽略了設(shè)備實(shí)際返回的GetStreamUri響應(yīng)。本節(jié)通過分析 ODM 日志與源碼邏輯還原其工作流并指出你何時(shí)該信它、何時(shí)必須繞過它。3.1 ODM 的設(shè)備發(fā)現(xiàn)流程從 UDP 響應(yīng)到服務(wù)端點(diǎn)映射的三階段ODM 啟動(dòng)后執(zhí)行以下步驟Discovery 階段向239.255.255.250:3702發(fā)送 Probe接收 ProbeMatch提取XAddrs字段存為device_service_urlCapabilities 階段用device_service_url調(diào)GetCapabilities解析響應(yīng) XML提取tds:Mediatt:XAddr存為media_service_urlStreamUri 階段用media_service_url調(diào)GetStreamUri但ODM 默認(rèn)使用硬編碼的ProfileTokenProfile_1和StreamRTP-Unicast不校驗(yàn)設(shè)備實(shí)際支持的 Profile。關(guān)鍵洞察ODM 不會(huì)主動(dòng)調(diào)GetProfiles獲取可用 Profile 列表它賭設(shè)備一定有Profile_1。當(dāng)設(shè)備返回Profile_2時(shí)ODM 的GetStreamUri請(qǐng)求必然失敗日志顯示 “Invalid profile token”但界面只提示“無法獲取流地址”。3.2 查看 ODM 內(nèi)部日志定位是協(xié)議問題還是配置問題ODM 默認(rèn)不輸出詳細(xì)日志需手動(dòng)啟用啟動(dòng) ODM 前設(shè)置環(huán)境變量set ONVIF_LOG_LEVEL3Windows CMD或修改OnvifDeviceManager.exe.config在appSettings中添加add keyLogPath valueC:\odm_logs\ / add keyLogLevel value3 /日志中重點(diǎn)關(guān)注[DISCOVERY]行確認(rèn)收到的XAddrs是否含端口[CAPABILITIES]行搜索Media.XAddr確認(rèn)是否為http://ip:port/onvif/media_service[STREAMURI]行檢查請(qǐng)求的ProfileToken和響應(yīng)的Uri值。血淚經(jīng)驗(yàn)?zāi)炒握{(diào)試宇視 IPC 時(shí)ODM 日志顯示Media.XAddr http://192.168.1.100/onvif/media_service缺端口導(dǎo)致后續(xù)所有請(qǐng)求 404。手動(dòng)補(bǔ):80后正常 —— 這說明設(shè)備固件 BugODM 未做容錯(cuò)補(bǔ)全。3.3 ODM 的 RTSP 播放器限制它只認(rèn)rtsp://開頭不支持rtsps://或帶認(rèn)證參數(shù)ODM 內(nèi)置播放器基于 VLC ActiveX但做了嚴(yán)格 URL 校驗(yàn)接受rtsp://192.168.1.100:554/stream1拒絕rtsps://192.168.1.100:3443/stream1HTTPS RTSP需改用 ffplay拒絕rtsp://user:pass192.168.1.100:554/stream1ODM 不解析 URL 中的 Basic Auth因此即使GetStreamUri返回帶用戶名密碼的地址如rtsp://admin:12345192.168.1.100:554/stream1ODM 也會(huì)因解析失敗而黑屏。解決方案是用 ODM 獲取 URI 后復(fù)制到 VLC 手動(dòng)播放或在代碼中用requests提前做 Basic Auth 注入。4. 避坑ONVIF 對(duì)接中 5 個(gè)高頻翻車點(diǎn)與現(xiàn)場排查法ONVIF 協(xié)議看似標(biāo)準(zhǔn)實(shí)則廠商實(shí)現(xiàn)碎片化嚴(yán)重。以下 5 條是我在某跨平臺(tái)視頻管理系統(tǒng)接入中累計(jì) 27 臺(tái)不同品牌 IPC 后總結(jié)的硬核避坑指南每條都附現(xiàn)場命令行驗(yàn)證法拒絕玄學(xué)。4.1 現(xiàn)象Discovery 搜不到設(shè)備但 ping 通、VLC 能拉流原因設(shè)備關(guān)閉了 WS-DiscoveryONVIF Discovery 功能或防火墻攔截 UDP 3702 端口解決登錄設(shè)備 Web 界面確認(rèn) “ONVIF Enable Discovery” 已勾選在設(shè)備同網(wǎng)段 PC 上執(zhí)行tcpdump -i eth0 udp port 3702 -w discovery.pcap然后啟動(dòng) ODM檢查 pcap 是否有ProbeMatch包若無說明設(shè)備未發(fā)包需升級(jí)固件或換 ONVIF Profile如 Profile S。4.2 現(xiàn)象GetCapabilities 返回 400 Bad Request原因SOAP 請(qǐng)求中wsa:To頭缺失或格式錯(cuò)誤如多斜杠http://ip//onvif/...解決用curl -v加-H wsa:To: http://192.168.1.100:80/onvif/device_service顯式指定檢查設(shè)備返回的ServerHeader如Server: gSOAP/2.8表示嚴(yán)格校驗(yàn)命名空間需確保 XML 中xmlns:tdshttp://www.onvif.org/ver10/device/wsdl完全匹配。4.3 現(xiàn)象GetStreamUri 返回空Uri或Invalid Token原因ProfileToken 錯(cuò)誤且設(shè)備未返回GetProfiles列表部分固件需先調(diào)GetProfiles才開放GetStreamUri解決先調(diào)GetProfilescurl -X POST -H Content-Type: application/soapxml \ -d soap:Envelope...trt:GetProfiles//soap:Envelope \ http://192.168.1.100:80/onvif/media_service解析響應(yīng)中trt:Profilestt:token值代入GetStreamUri。4.4 現(xiàn)象RTSP URL 能被 VLC 播放但 ODM 黑屏原因ODM 播放器不支持設(shè)備返回的編碼格式如 H.265 Profile Main而 ODM 只認(rèn) Baseline解決用ffprobe rtsp://...查看流信息關(guān)注profile字段在設(shè)備 Web 界面將視頻編碼 Profile 改為Baseline或MainH.264或改用ffplay替代 ODM 播放器驗(yàn)證。4.5 現(xiàn)象同一設(shè)備ODM 有時(shí)能連有時(shí)不能原因設(shè)備 TCP 連接池耗盡ONVIF 服務(wù)最大并發(fā)連接數(shù)默認(rèn)為 5ODM 未正確關(guān)閉連接解決抓包看 ODM 是否發(fā)送FIN包在設(shè)備 Web 界面調(diào)高 “ONVIF Max Connections” 至 20或在代碼中每次請(qǐng)求后顯式connection: closePython requests 加headers{Connection: close}。5. 把 ONVIF 對(duì)接變成可交付模塊用 Python 封裝 DeviceManager 類與自動(dòng)重試策略當(dāng)你需要把 ONVIF 對(duì)接能力嵌入自有系統(tǒng)如視頻平臺(tái)設(shè)備管理后臺(tái)硬寫一堆 curl 和 XML 解析顯然不可維護(hù)。本節(jié)提供一個(gè)生產(chǎn)級(jí)OnvifDevice類它不是簡單封裝而是內(nèi)置了三次重試、Profile 自發(fā)現(xiàn)、RTSP URL 容錯(cuò)拼接、以及設(shè)備能力緩存機(jī)制可直接 import 使用已通過???DS-2CD3T47G2-L、大華 IPC-HFW5849T1-ZE、宇視 IPC3612SR3-IZS 三款設(shè)備實(shí)測。5.1 DeviceManager 類核心設(shè)計(jì)狀態(tài)機(jī)驅(qū)動(dòng)非線性流程兜底傳統(tǒng) ONVIF SDK 按“發(fā)現(xiàn)→能力→流地址”線性執(zhí)行一旦某步失敗即終止。本類采用狀態(tài)機(jī)設(shè)計(jì)state discovered已獲device_service_urlstate capabilities_fetched已緩存media_service_url和profilesstate stream_ready已獲有效rtsp_uri。每步失敗自動(dòng)降級(jí)如GetStreamUri失敗則嘗試用GetProfiles中第一個(gè) Profile 重試若仍失敗回退到硬編碼rtsp://ip:554/stream1適用于??的J(rèn)流。# onvif_device.py import requests import xml.etree.ElementTree as ET import time from typing import Optional, Dict, List class OnvifDevice: def __init__(self, ip: str, port: int 80, timeout: int 10): self.ip ip self.port port self.timeout timeout self.device_service_url fhttp://{ip}:{port}/onvif/device_service self.media_service_url: Optional[str] None self.profiles: List[str] [] self.rtsp_uri: Optional[str] None self.state init def _send_soap(self, url: str, action: str, soap_body: str) - Optional[ET.Element]: 統(tǒng)一 SOAP 請(qǐng)求方法帶重試 headers { Content-Type: application/soapxml; charsetutf-8, SOAPAction: action, Connection: close } for attempt in range(3): try: resp requests.post( url, datasoap_body, headersheaders, timeoutself.timeout ) if resp.status_code 200: return ET.fromstring(resp.text) elif resp.status_code 503: # Service Unavailable等2秒再試 time.sleep(2) continue except (requests.exceptions.RequestException, ET.ParseError) as e: if attempt 2: print(f[ERROR] SOAP request failed after 3 attempts: {e}) time.sleep(1) return None def discover(self) - bool: 執(zhí)行 Discovery返回是否成功 # 此處省略 Probe 發(fā)送邏輯同 2.1 節(jié)重點(diǎn)是解析 XAddrs # 假設(shè)已通過 UDP 獲取到 device_service_url self.state discovered return True def fetch_capabilities(self) - bool: 獲取設(shè)備能力提取 Media Service 地址和 Profiles if self.state ! discovered: return False # 構(gòu)造 GetCapabilities 請(qǐng)求同 2.2 節(jié) soap_body f?xml version1.0 encodingUTF-8? soap:Envelope...tds:GetCapabilitiestds:CategoryAll/tds:Category/tds:GetCapabilities/soap:Envelope root self._send_soap( self.device_service_url, http://www.onvif.org/ver10/device/wsdl/GetCapabilities, soap_body ) if root is None: return False # 解析 Media.XAddr media_elem root.find(.//{http://www.onvif.org/ver10/device/wsdl}Media) if media_elem is not None: xaddr_elem media_elem.find(.//{http://www.onvif.org/ver10/schema}XAddr) if xaddr_elem is not None and xaddr_elem.text: self.media_service_url xaddr_elem.text.strip() self.state capabilities_fetched # 獲取 Profiles 列表 profiles_root self._send_soap( self.media_service_url, http://www.onvif.org/ver10/media/wsdl/GetProfiles, soap:Envelope...trt:GetProfiles//soap:Envelope ) if profiles_root is not None: for profile in profiles_root.findall(.//{http://www.onvif.org/ver10/media/wsdl}Profiles): token profile.get(token) if token: self.profiles.append(token) return self.state capabilities_fetched def get_rtsp_uri(self, stream_type: str RTP-Unicast) - Optional[str]: 獲取 RTSP 地址自動(dòng)遍歷 Profiles if self.state ! capabilities_fetched or not self.media_service_url: return None # 嘗試每個(gè) Profile for token in self.profiles or [Profile_1]: soap_body f?xml version1.0 encodingUTF-8? soap:Envelope...trt:GetStreamUritrt:StreamSetuptt:Stream{stream_type}/tt:Stream...trt:ProfileToken{token}/trt:ProfileToken/trt:GetStreamUri/soap:Envelope root self._send_soap( self.media_service_url, http://www.onvif.org/ver10/media/wsdl/GetStreamUri, soap_body ) if root is not None: uri_elem root.find(.//{http://www.onvif.org/ver10/media/wsdl}Uri) if uri_elem is not None and uri_elem.text: self.rtsp_uri uri_elem.text.strip() self.state stream_ready return self.rtsp_uri # 降級(jí)方案硬編碼 RTSP 地址海康/大華通用 self.rtsp_uri frtsp://{self.ip}:554/stream1 self.state stream_ready return self.rtsp_uri # 使用示例 if __name__ __main__: dev OnvifDevice(192.168.1.100) if dev.discover() and dev.fetch_capabilities(): uri dev.get_rtsp_uri() if uri: print(fRTSP URI: {uri}) else: print(Failed to get RTSP URI)設(shè)計(jì)亮點(diǎn)fetch_capabilities()和get_rtsp_uri()分離允許你先查能力再?zèng)Q定是否拉流get_rtsp_uri()內(nèi)置 Profile 遍歷避免因硬寫Profile_1導(dǎo)致失敗降級(jí)方案rtsp://ip:554/stream1是???大華/宇視默認(rèn)流路徑覆蓋 80% 場景所有網(wǎng)絡(luò)請(qǐng)求帶Connection: close防止設(shè)備連接池耗盡。5.2 驗(yàn)證模塊健壯性用 pytest 編寫設(shè)備兼容性測試集為確保模塊在不同固件下穩(wěn)定我編寫了輕量級(jí)測試集覆蓋 Discovery 失敗、Capabilities 超時(shí)、StreamUri 空響應(yīng)三類異常# test_onvif_device.py import pytest from unittest.mock import patch, MagicMock from onvif_device import OnvifDevice class TestOnvifDevice: patch(requests.post) def test_fetch_capabilities_timeout(self, mock_post): mock_post.side_effect requests.exceptions.Timeout() dev OnvifDevice(192.168.1.100) dev.state discovered assert dev.fetch_capabilities() is False patch(requests.post) def test_get_rtsp_uri_profile_failover(self, mock_post): # 第一次 GetStreamUri 返回空第二次返回有效 URI mock_post.side_effect [ MagicMock(status_code200, textUri/Uri), MagicMock(status_code200, textUrirtsp://192.168.1.100:554/stream2/Uri) ] dev OnvifDevice(192.168.1.100) dev.state capabilities_fetched dev.media_service_url http://192.168.1.100:80/onvif/media_service dev.profiles [Profile_1, Profile_2] assert dev.get_rtsp_uri() rtsp://192.168.1.100:554/stream2 if __name__ __main__: pytest.main([-v, __file__])工程價(jià)值這套測試能在 CI 流程中自動(dòng)運(yùn)行當(dāng)新接入某款 IPC 時(shí)只需修改test_get_rtsp_uri_profile_failover的 mock 響應(yīng)即可驗(yàn)證模塊是否適配。從那以后我每次新增設(shè)備型號(hào)都強(qiáng)制走一遍這個(gè) pytest 流程再提交代碼 —— 它比人工點(diǎn) ODM 穩(wěn)定十倍。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
激情小说激情视频| 先锋精品av色鲁| 精品免费1| 91综合天天看| 99青草| 又大又大又大又粗爽高潮观看| 日本 欧美 亚中文字幕| 亚洲精品视频在线| 午夜超爽| 欧美中文字幕精品人妻| 九九九九九九九九九九九九九九九女| 国产 无码 一区二区| 91蜜桃传媒精品久久久一区二区| 国产不卡片| 一个色导综合| 校园春色亚洲欧洲| 日韩不卡a级视频专区| 色图四区| 四虎影视国产精品| 天天躁日日躁狠狠狠躁| 人妻黑丝袜电影| 熟女被操视频网址| 日韩亚洲国产视频| 尤物av网站免费在线播放| 婷婷15月天青娱乐| 91殴美大片| 大香蕉婷婷| 久久东京伊人一本到鬼色| 91欧美经典| 91欧美性| 97国产|免费| 天天搞欧美| 偷拍亚洲高清图片| 美女黑人91神马| 免费网色网站| 欧美性,亚州色| 亚洲色电影在线| 国产一区二区啪啪视频| 曰韩操B| 国产精品 视频| 欧美96交| 热99这里有精品综合久久| 我要色综合网| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | www狠狠| WWW操逼| 国产无码高清操逼视频| 屁股久久久久久久| 亚洲av综合伊人久久| 亚洲a色| 东京热一区二区中文字幕| 91痴汉| 欧美精品激情| 亚洲AV秘无码一区..| 日本黄色大片一级视频免费麻豆| 亚洲天堂人妻熟妇视频| 国产精品欧美日韩久久| 美女诱惑爱爱| 98一区二区精品| 激情久久久| 97国产精品国| 性色高清..……| 97鸡把在线视频| 午夜操一操| 亚洲欧美天堂| 精品一区二区综合熟妇| 日韩丝袜二区| 成人看片网站| 久操操| 亚洲 另类 丝袜 自拍 动漫| 国产9l 大屁股| 无码区蜜乳| 另类 日韩 熟女| 亚洲影视综合网| 久啪| 欧美黄色大片在线观看| 密桃99999| 综合久欧洲| 亚洲91射| 8x福利精品第一福利视频导航| 日韩欧美成人午夜福利| 精品一区二区三区蜜桃臀赵总| 蜜桃久久一区二区三区| 超碰这里有精品| 中文字幕第二页| 一级片视频啪啪| 欧美v亚洲v综合v国产v妖精| 午夜福利在线合集| 北条麻妃99精品青青久久| 国产精品3| 国产AV线| 精品人妻一区| 夜夜騷av、一區二區| 超碰 另类 欧美| 18精品一二区| 色吧 综合| AV中文在线可看| 97视频在线视频| 色九久| 嫩草影院在线观看精品| 夜夜嗨免费视频| 欧美男人的天堂| 一级特黄aaa大片在线观看成人一级片在线观看 | 欧美日不卡| 亚洲激情欧美色图 | 91伊人大香蕉| 青青青国产手线观看视频2| 丁香六月综合激情| 亚州五月| 情侣开房子拍 日韩无码 女的很漂亮| 五十路熟女人妻一区二区三区四区五| 人妻熟女字幕一区二区| 婷婷超| 天天操天天射青青草| 中文字幕视频在线观看| 亚洲宅男天堂| 91精品亚洲内射孕妇| 熟妇女人妻呻吟久久AV| 久久免费99精品久久久久久| 91爱看| 国产成人 综合亚洲 天堂| 欧美精品人妻视频| 美女天天干| 在免费jIzzjIzz在线视频| 久久一二三四不卡| 无码聚合| 亚欧操逼片在线观看| 国产 亚洲 丝袜 制服| 91久久国产综合精品| 操人妻视频| 久久久成人国产精品无码| 亚洲、日韩、综合、另类| 欧美性夜| 闷骚老熟女15P| 亚洲欧洲中文日韩女优乱码| 久久亚洲一区女同性恋中文字幕| 亚洲另类久操网| 国产v片在线免费观看| 91麻豆一二三区| 欧美色五月| 色综合天天爱去电影网| 真实高潮91| 成人亚欧免费视频| 天天日天天干少妇日| 999久久久久久久精| 亚洲无码国产精品久久| 欧美亚洲丝袜人妻制服中文99| 天天日少妇逼AV| 久久这里只精品免费福利| 嫩草伊人久久精品| 立川理惠无码一区二区| 91日韩| 久久综合久色欧美综合狠狠| 日韩亚洲国产视频| 中文字幕视频二区| 精品亚洲俞拍视频一区| 日本欧美成人片AAAA| 蜜臀99精品国产高清在线观看| 亚洲情色五月天| 久久黄色性爱视频| 91精品久久久久久77777| 久久久草草精品| 欧美大香蕉久| 天天噜| 欧美 亚洲 另类 综合| 欧亚在线视频| 综合av社区| 色与欲影视天天看综合网| 青青草密桃在线播放| 91色射| 99久久无色码| 欧美在线伊人色| 黄片无码在线制服| 大二网站亚洲| 熟妇色99| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲美女色图| 久久国产热视频97电影| 综合色一区三区二区| 久久99手机免费视频| 久久丁香五月天| 亚洲精美粉嫩嫩泬在线观看| 天天综合97| 5252色欧美在线男人的天堂| 日韩人妻精品中文字幕| 精品久久大胆人体| 加勒比综合九九99视频在线播放| 少妇超碰在线| 开心五月婷婷激情| 久草免费在线一区二区| 欧美日本一区二区a人| 小说区 图片区色 综合区| 999久久久久久久久| 97超碰资源网| 亚洲精品蜜桃久久久久久久| 亚洲综合在线高清| 中文字幕久久精视频久久大全| 色99色| 影音先锋少妇| 岛国大片国产| 强奸乱伦亚洲第一页| 欧美日韩国产成人高清| 老司机深夜18禁污污网站| 国产精品懂色tv影视免费观看 | 免费观看啪视频| 国产精品点击进入在线影院高清| 精品人妻av区天天看片| 日韩十八禁| 插入逼91| 免费家庭乱伦视频| 国产精品视频白浆免费| 综合欧美日韩在线观看| 啊…啊…操我用力操我| 无码欧美有限公司| 欧美综合第一| 国产第二页| 牛牛久久国产精品视频一二三| 99热 按摩 日韩| 久久久久亚洲精品| 中日韩久久久免费看| 久久久性少妇| 天天噜| 欧美aa一级片| 成人短视频在线观看| 25国产精品免费观看| 又大又白奶子| 亚洲少妇激情视频| 亚州,欧美在线| 精品999一区二区| 福利视频合集| 亚洲蜜乳av| 亚洲图片欧美在线视频| 麻豆天美国美国产| 动漫区日韩区欧美区| 色偷偷综合91久久噜噜| 99re超碰| 日韩精品在线观看观看| 色综合久久久久| 亚洲瓯美色图| 精品人妻一区二区三区视频在线| 国产一区二区成人av在线播放| 国产又黄又粗的视频| 欧美丝袜制服久久| 九色97| 欧美日韩大陆黑人少妇99| 午夜精品人妻二区三区| 婷婷色色五月天福利| 中文人妻av高清一区| 成人综合久久精品色婷婷| 操人妻少妇中文| 国产熟女二区| 精品人妻一区二区三区在| 岛国黄| caorenqi shipin| 日日噜噜夜夜久久亚洲一区二区 | 亚欧Av| 91狠狠综合久久久久久| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 国产色产精品在线观看| 久久久九九网站| 亚洲吊色| 欧 美 自 拍 偷 拍| 亚洲操操操| 九九九九九九视频| 少妇厨房愉情理伦片bd在线观看| 天天综合91在线| 少妇人妻激情四射| 自拍偷拍第26| 天天综合网一91网| 欧美激情精品久久久久久| 免费超碰97在线观看| 91原创在线观看| 深爱伊人影院| 日本三级R| 久草草一二三四区久久| 国产9 9在线 | 亚洲| 又大又长又爽| 欧美激情综合网| 大香蕉综合网| 成人性生活高清视频在线播放| 综合操逼| 9I1性色影院| 日本色色的视频| 涩涩久久精品| 欧美另类精品xxxx| 一级黄碟| 三级网色| 精品国产乱码久久久| 91动漫操逼视频| 成人精品视频| 五月婷视频| 亚洲AV色图| 91性高潮久久久久久久久| 伊人96在线| 久久97超碰| 清柠毛片| 蜜臀无码视频在线观看| 少妇人妻精品| 午夜120视频在线观看| 日日A∨| 黄色片一区二区三区四区五区| 91电影色诱| 国产日逼视频| 91AV国产精品| 69超碰综合| 天美传媒精品一区二区| 97人人爱人人做人人乐| 丝袜剧情| 国产97av| www.99视频| 久久精品店| 丰满翘臀美女影院视频| 三级特黄60分钟播放| 久久视频少妇美女| 口爆综合网| 粉嫩av平台| 91真人天天在线| 亚洲综合中文字幕有码| 久久高潮妇女视频| 神马久久69| 亚洲福利中文字幕在线| 97超碰站| 97在线/亚洲| 久久女人视频| 色婷婷影视| 日本羞羞的视频在线播放| AV中文字幕剧情1区2区3| 性色av婷婷久久一区二区点复制| 日本阿v天堂在线观看| 国产丰满少妇久久久精品影院| hd成人一区二区在线| 91综合网在线| 色与欲影视天天看综合网| 999久久久久久久精| 日韩一级特黄av毛片| 91亚洲黄色网| 欧美日本天堂| 日本伦理一区二区| 国产热RE99久久6国产精品首| 激情综合网亚洲| 精品久久久久成人码免| 日本精品性生活久久久| 男人夜色天堂ss| A 在线网址| 色九久| 色偷综合| 黄网站黄视频网站进入口| 婷婷深爱五月| 精品国产一区二区三区四区在线看| 日日干日日摸| 91热色| 中国小夫妻勾搭露脸淫荡对白| 激情深爱五月天| 亚洲国产精品9999在线观看| 亚洲春色一区二区三区| 欧美色图91| 日韩欧美蜜桃精品久久中文字幕久久| 天天日天天射天天干| 青青操青娱乐| 精品国产乱码久久久久A| 在线观看中文av字幕| 九九综合久久中文字幕| 超碰人人操97碰| 久久AV无码AV| 日韩免费三级黄片电影| 欧美Ⅴ性爱| 超碰97护士| 91精品人妻一区二区三区蜜桃| 九热超碰| 亚洲国产精品久久久久婷婷老年 | 探花在线免费观看视频国产一区| 国产成人超碰在线| 欧美精品二区视频在线| 放黄片放3级黄片没穿衣服| 美女网站91| 天天亚洲| 日本不卡二区| 91看黄片| 久久黄色视频一区二区三区| 亚洲精品毛片在线观看| 视频国产精品未满十八禁止在线观看| 强奸乱伦中文字幕AV| 青娱乐欧美激情一区二区| 欧美日韩大香蕉| 黑人精品XXX一区一二区| 豆花视频操逼网址| 精品一区二区成人动漫| 欧美日韩99| 91久操| 狼人综合婷婷激情四射 | 欧美日韩国产高清在线一二三区| 国产午夜无码片在线观看影视 | 日韩天天本| 国产和美国毛片| 91蜜桃传媒精品久久久一区二区| 老熟女综合网| 日本视频在线中文字幕| 欧美A片中文字幕| 无码日韩人妻av一| 五月婷婷六月丁香| 北京美女一区二区| 国产熟码AV| 亚洲AV色图| 久久久久九九九| 欧美18 在线观看| 污污汅18禁网站在线永久免费观看| 一区二区三区成人高清视频| 色色色999| 九九毛片这里只有精品| 最新av在线| 国产精品禁久久久精品| 中文AV制服乱伦| 中文字幕亚洲永久精品| 成人情色一区二区| 玖玖草久草99蜜月一区二区三区| 97人人夜| 人人操肉肉| 激情五月天网| 久久久草草精品| 国产视频人人网| 久久精品国产亚洲AV嘿嘿| 99久久9| 99国产精品免费| 美女十八禁| 自拍偷拍第26| 日本超碰在线国产一区| 人妻激情在线视频| 国产精品露脸在线观看| 人妻熟女午夜精品在线| 少妇第一页| 欧美男人天堂| 长长久久免费视频| 激情婷婷丁香网| 爱妃国产亚洲视频中文字幕| 亚洲欧美精品一区天堂久久 | 亚洲欧洲美腿丝袜| 国产又粗又长视频| 成人免费福利在线观看| 中文字幕制服欧美久久一区| 伊人宅男大香蕉 | 疯操AV| 99久久精品无码一区二区毛片免费| 婷婷综合网站| 亚洲 无码 有码 中文字幕| 日韩免费a级毛片无码a∨| 操逼网站地址| 欧美日日人人天天| 人妻少妇被猛烈进入中| 97bbn| 久久国产在线一区二区| 看看小穴| 啊啊啊啊网站| 情色AV电影| 蜜臀Av一区二区三区| 国产日韩欧美亚洲精品95| 亚洲最大的黄色电影网站。 | 91亚洲精品青草| 久久久精精精| 丁香五月社区| 一起草视频在线| 午夜色婷婷| 久久精品无码熟妇一区二区三区视频导航| 日本高清_区二区三区 | 国产麻豆福利av在线播放| 97在线欧洲| 99久久久无码精品国产人| 超碰97玖玖爱| 少妇一级婬片免费放一级a性色.| 欧美另类自拍 | 黄网色一区二区三区四区精品| 日产123区精品免费观看| 国产女同视频在线播放| 黑人与人妻| 欧美人妻精品一区二区| 久久久性少妇| 天天综合色电影| 91狠狠| 超碰碰97| 久久欧美性爱视频| 清纯唯美亚洲综合| 操逼精品视频| 99久久精品国产高潮| 亚洲不卡一| 日韩久久三区| 国产在线激情视频| 久热网| 九九热男人天堂| 操www| 土豪酒店各种姿势玩弄极品幼稚| 亚洲天堂 视频你懂的| 91久| 色偷偷色偷偷欧美日韩| 性色av婷婷久久一区二区点复制| 国产视频第二页| av在线人气| 久久久久亚洲Aⅴ无码| 91日产桃蜜| 日韩欧亚太美不卡| 亚洲AV无码国产精品久久久久 | 无码聚合| 午夜小电影在线插入淫高潮| 欧美传媒一区| 九九天堂| 欧美午夜一区二区三区| 91丝袜在线观看| 精品九九淫乱男| 五月婷婷激情| 久久综合亚洲色1080p| 精品人妻久久久| juliaann丝袜大战黑鬼| 五月天婷婷基地| 人人玩人人添人人澡免费| 一本一道久久综合久久| 精品无人区麻豆乱码久久久| 综合一区中亚洲国产成人综合精品 | 亚洲中字幕日本一区二区三区| 91视频综合在线| 久操99| 无遮挡h肉动漫在线观看| 欧美日韩国产成人高清| 国产一区二区精品久久久不卡蜜臀| 人人爽夜夜操| 日韩一区二区精品视频| 亚洲女毛多水多21P| 熟女激情综合网| 久久老熟女| 亚洲色情在线影视| 精品一久久久| 丝袜制服字幕在线| 蜜臀少妇一区二区| 激情看片网站| 人妻乱仑一区二区三区| 久久精品国产99精品亚洲蜜...| 欧美东京热青青草| 大逼色网站| 色老久久| 2019午夜福利视频| 欧美亚州综合图片| 久久亚洲熟妇在线视频| 夜夜高潮夜夜爽高清视频一| 67914亚洲精品| 国内精品久久久久影院亚洲| 亚洲高清无码在线桃色| 黄色在线网站| 综合免费无码中文| 家庭乱伦性爱av| 九月丁香婷婷色| 91搞逼视频| 另类TS人妖一区二区三区| 色网站导航大全| 久久久久亚洲Av无码专区老牛影视| 97日亚洲欧美| 97国产超碰| 在线观看中文字幕| 狠狠操,使劲操| 日本在线观看网址| 桃花色综合影院| 亚洲 欧美 日韩 国产一区二区| 欧美日韩1234| 久久草草亚洲蜜桃臀| 人妻少妇久久中文字幕一区二区 麻豆 | 亚洲精品国产专区在线观看| 在线看的av| 思思热er精品视频| 日本一级性爱| 天天日日夜夜| 日本天天人人狠狠在线日美女| 99热这里只有精| 97爱欧美| 亭亭在线资源| 欧美综合色图片| 好爽免费视频| 欧美不卡在线一区二区| 精品欧美А∨无码黑人大荫蒂 | 日韩丝袜高跟制服在线观看| 亚洲清纯唯美| 97日视频| 欧美不卡在线一区二区| 韩国女主播青草福利视频| 95精品在线| 91天美传媒精品| 国桃视频产巨乳精品一区二区在线| 内射中国少妇高清视频免费视频 | 久久精品日韩专区免费观看| 九九热re99re6在线精品| 91bbb| 久久久亚洲Av| 国产99 中文字幕日韩小视频| AV 少妇 人妻 偷拍| 红桃视频高潮| 羞答答AV中文字| 秋霞网无码| 国产偷拍自拍在线视频| 大香蕉123| 欧美亚洲se91| 久久人妻| 白嫩国模丰满一二三区| 久久久久久久少妇| 免看60秒涩涩视频| 亚洲男人综合| 久久综合五月天| 北条麻妃性愛视频| 91综合在线| 国产精品激情久久久久久久| 亚洲天堂色图| 婷婷丁香人妻| 一起草日韩| 精品久久久九九九孕妇| 日韩国产九九精品一区二区三区毛片| 日本一级真人黄色性爱视频| 久久免费精品视频免一| 大香伊人在线一区| 亚洲在线91| 两性综合网| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 人澡逼| 91在线精品一区二区三区| 亚洲天堂 视频你懂的| 中文字幕人妻色偷偷久久皮| 国产精品九九九| 国内精品伊人久久久久影院会| 久久久久久久78| 亚洲欧美999| 日本99视频| 日韩av电影网站| se01国产在线视频| 国产农村妇女精品一二区| 亚洲毛片基地专区| 久久免费精彩视频| 99999亚洲另类| 日韩欧美中文| 青青草久草AV| 逼逼逼逼操操操操操操操操操午夜剧场 | 欧美在线色| 国产亚洲精品无码三区| 熟妇熟女一区二三区| 夫妻天天操岛国视频| 嗯啊不要啊在线 | 超清福利精品视频在线| 夜夜操老骚逼视频网站| 人人操人人色网| 欧美性天天影视| 美女诱惑久久| 亚洲人精| 人人模人人看| 久偷拍| 欧美黄色大片在线观看 | 免费日韩黄片| 青青欧洲黑| 国语精品内射在线观看| 亚洲综合伊人| 国产精品三级视频网站| 漂亮人妻被强中文字幕hd| 亚洲啪啪性视频| 97欧美日韩综合| 吻戏激情性巴克| 亚洲精品九九九| 69综合网| 青青伊人这里只有精品| 91欧美巨乳| 婷婷五月综合在线| 久久中出| 日本久久综合| 毛片电影一区二区三区| 91人人操| 超碰人妻中文在线| 入口操逼网站| 9久久久久| 粉嫩少妇自慰在线| 国产做?爰片久久毛片?片美国| 日本一二三免费久久| 熟妇熟女亚洲天堂网| 成人精品久久久午夜福利| 韩日巨乳美女免费视频在线观看| 国产精品99久久久www| 天天做天天爱| 蜜桃色院一区久久 | 99re98| 91成人国产综合久久精品蜜月| 亚洲一卡2卡3卡4卡乱码网站 | 日韩精品亚洲专区在线影视| 天天综合欧美| 91爱做| 密桃99999| 一本久道在线综合视频| 青青草大香蕉视频| 青青国产在线拍揄自揄拍| 强免费黄色网址| 国产日韩精品suv| 天天天做天天天爱天天天爽| 精品网站9999| 动漫爆乳3D奶水一区在线观看| 91色色网站| 91美女高潮| 成人色女网| 99热综合| 老司机老司机午夜影院| 国产呦精品系列在线观看| 在线五区| 日韩欧美丝袜诱惑| 蜜桃色色网站视频三区| 欧美强奸乱| a片在线播放| 日韩一级二级三级| 91色综合色| 久久精品亚洲东京热色播| 99在线精品观看99| 嫩草一区二区在线观看| 国产家庭乱伦表演| 好爽视频在线观看| 超碰欧美97资源| 欧天美中出| 99啪啪视频| 爽爽歪在线视频| 91碰碰碰| 欧美刺激色黄片免费看| 国产精品嫩草影院免费| 成人免费视瓶| 十八禁啪啪视频| 9丨久久九九九| 午夜操操操| 美女骚尻视频| 亚洲999综合| 色天堂综合| 久草精品国产蜜臀| 青青草吊丝| 天天综和| 色婷婷成人综合| 国产女上位好爽在线| 操久久久久久| 男人的天堂网免费| 91人妻爽爽人人做人人澡| 制服乱伦| 日韩无码专区| 久热久| 国内外色色色色色成人视频| 色噜噜婷婷| 97人人干| 欧美乱色| 国产人伦精品一区二区三区| 亚洲人在线成线成人| 最新一二三区视频| 亚洲色图加勒比| 神马午夜久久久| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 色五月婷婷中文字幕| 久久美女福利是上海美女| 3p国产色噜噜一区| 97av在线视频| 欧美性天天影视| 国产精品久久发布| 中 文字幕一区二区三四 五 区日 日 骚 | 综合网 欧美| 日韩欧无码一区二区三区免费不卡| 三上悠亚在线毛片91| 亚洲一区日韩精品中文字幕| 无码人妻一区二区三区色欲aⅴ| 久久免费99精品久久久久久| 91c色| 99久久综合| 日韩丝袜人妻AV| 国产白丝在线| 美女t无毒不卡不卡| 日韩小电影| 日小BB小视频| a在线观看| 97超碰无码网| AV男人天堂网| 男女无套 免费网站| 成人麻豆av电影网站| 亚欧性爱在线无码| 青青草吊丝| 中文字幕第95页| 亚洲欧美另类小说| 日韩精品人妻一| 好吊妞转入那个网| 中文字幕超碰CAO| 人妻熟女一区二区在线视频| 日语五十路和六十路亚洲国产精品| 日本东京热加勒比久久| 九九热精品视频在线观看| 大香蕉色网| 超碰久超碰久| 可能人人看人人摸| 色香色香欲天天天影视综合网| 天天综合网1| 国产熟女无套内射| 人人插人人摸人人| 久久e6只有精品| 蜜臀va69| 亚洲第一精品在线视频| 又黑又大又粗| 久久久性少妇| 黄色人人| 1956日韩精品| 日本2020一区二区| 草草影院最新网址| 你操综合| 亚洲丨在线| 人人妻人射| 亚洲国产一区二区三区在线| 亚州色图欧美色图| 你想操日本小逼吗| 爱干爱射网啊啊啊| 国产乱子伦一区二区三区在线观看| 欧美成人A天堂片在线观看| 亚洲日韩肥臀视频在线观看| 九九久久国产精品怡红院| 日本操逼视频不卡直接放| 日韩素人无码一区二区三区三州| 激情婷婷丁香网| 乱伦av麻豆| 91骚妇| 日本韩国国产精品一区| 国产成人亚洲精品自产在线| 大香交| 国产中文字幕曰本毛片| 黄色不卡视频| 久久久精品中文字幕爱豆| 国产视频三区四区| 在线97视频| 98一区二区精品| 高清孕妇孕交 交| 九九黄色网| 久久久久幕乱码| 黄片直播三级黄片两女一男| av久日| 操操逼操操逼操操逼逼| 久久精品夜色国产亚洲AV| www.91人妻.com| 日韩不卡码| 日韩在线一区二区| 97在线青| 欧美日韩国内不卡| 日本高清一本二本免费不卡| 亚洲中文字母在线播放| 男人的天堂三级| 大香蕉黄色一区| 99re视频在线播放青草| 天天干天天干天天干| 亚洲欧美伦综合| 久久大香蕉手机高清视频| 91在线免费精品视频| 人妻在线臀日韩| 国产狂喷潮在线精品| 亚洲永久AV无码精品秋霞| 日韩无码操逼片| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 欧插网站| 国产精品麻豆成人av| A啊啊在线观看| 国产中文精品一区二区在线观看| 国产外初女出血视频| 色官网在线| 男人天堂资源| 蜜臀AV成人精品蜜臀AV久久| 色天使亚洲综合在线观看| 一本色道久久综合熟妇| 成人电影一区| 国语av狠狠色丁香婷婷综合激情| 热久久九九热| 午夜高清成人在线视频| 国产伦精品| 中文字幕88av在线| 加勒比久久综合网高清| 青草地一本线一区二区三区| 99久久无色码| 日韩欧美中文日韩欧美色| 亚洲综合有码| 亚洲蜜臀懂色| 欧美精品自慰系列寂寞少妇| 超碰97中文| 无码人妻精品一区二区三区九九| 亚卅熟女乱色| 激情黄色片在线观看| 日本性一区| 久久久99久9| 网页导航五月天免费一二三区| 欧美天天综合在线| 激情欧美日韩女同久久| 五月丁香啪啪网| 操B视频日韩无码| 玖玖爱视频网站| 操操操操操操| 丁香五月婷婷五月| 伊人久久大香线蕉无码| 欧美综合网在线| 9 9无尺码天堂网| 俺去久久| 大香蕉520| AAAAAAAAA黄片| 91福利网在线观看| 欧美综合色| 欧亚成人在线视频| 久久本道| 久操热| 国产精品一二三在线看| 国产又黄又粗又猛大片 | 四虎AV在线观看| 日韩国产成人自拍视频| yaouchengrenav| 亚洲一区二区av| 亚洲少妇激情一区二区三区| 欧美性战999| 久久精品国产精品亚洲艾通辽熟妇 | 婷婷六月色| 一级久久久久久久久久久| 国产精品福利资源在线尤物| 蜜臀99精品国产高清在线观看| 青娱乐手机日韩在线视频| 九九精品美女高溯喷水 | 男人的天堂久久久| 日韩精品人妻中文字幕不卡乱码| 成人片视频| 国产精品久久久蜜臀| 麻豆天美电影一区二区| 啊v视频在线观看| 国产麻豆福利av在线播放| 国产精品久久久久久高清无码免费看| 久久超碰97| 欧美日韩亚洲天堂| 欧美亚州综合网图片| 久久久少妇诱惑精品视频| 欧美变态激情网| 青青草乱入乱欲视频在线观看| 日少妇亚洲版| 香一区二区三区| 中文字幕一区 二区三四五 区日 日骚 | 啊啊啊com| 爆乳免费黄网站| 婷婷伊人一区| 国产a级精品| 久草资源在线视频官方总站日韩丝袜美腿| 欧美 亚洲 综合 制服| 久久久无码国精品无码三区三区| 久热9| 一道本久久棕合爱| 日韩情色视频| 日日干日日操五月天伦理视频| 亚州成人a∨| 综合网亚| 欧美国产一区二区三区麻豆传媒| 久久久久久久久久久久黄色 | 91网站在线播放| 玖玖大干人妻| 日韩三级av片| 淫荡网址| 天天懆天天日| 无码免费精品高清| 色情综合| 懂色综合久久久| 91色综合激情| 中文久久96| 清纯唯美综合亚洲| 丝袜美腿av女优在线| 国产午夜精品理论片a大结局| 中日韩免费看男女操逼大全| 欧美一区二区三区互相| 久久社区一区二区三区| 日本中文字幕在线视频| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | www男人天堂| 成人国产视频在线观看| 国产女人高潮嗷嗷嗷叫小说| 国产成人免费观看在线视频| 99久久九九| 97激情97激情| 精品综合久久久久久97| 成人国产二区三区在线,男女精品。| 久久色网| 伊人影院综合是一个与深夜成人在线 | 少妇与黑人高潮在线| 日本不卡一区二区三区| 国产精品欧美在线观看| 色哟哟AⅤ| 婷婷深爱五月| 啊嗯好大视频在线观看| 嫩草 我啊~嗯~在线| 亚洲欧美首页| 九月丁香综合网| 精品久久久久,69国产成人精| 97精品国产手机| 蜜臀久久99精品久久久久久酒店| 国产在线视频二区| 九九AV| 91老熟女老女人国产老太 | av婷婷色网| 久久超碰天天| 国产传媒午夜理伦精品| 91超级碰碰碰| 青青伊人加勒比海| 亚洲天堂精品日韩电影| 天天做日日爱夜夜爽| 天天摸夜夜摸| 欧美情色亚洲| 93人人操人人| 日本女厕偷拍| 久久久精品网| 91丨熟女丨丰满熟女| 成人女人国产| 啊啊啊免费| 亚洲最大无码中文字幕网站| 久插不卡| 麻豆天美91| 国产精品大香蕉| 九九九精品一区二区无码| 亚洲欧美日韩中文播放| 五月天色色色| 免看60秒涩涩视频| 爽极品影院| 成人老鸭窝人人在线视频| 亚洲se91| 婷婷五月综合在线| 视频黄站| 黄骗免费| 九九自拍伦理| 内射小黄片| 欧美日日夜夜| 欲香欲色| 麻豆天美国美国产| 亚洲综合伊人无码久久| 中文久久爆乳| 蜜桃臀一区二区aV| 综合操逼| 久久精品国产久精国产| 国产欧美成人第一页在线观看| 丰满少妇人妻久久久久久| 日本男人天堂| 这里只有精品视频在线| 啊啊啊啊嗯嗯在线久久久| 亚洲一区二区中文字幕| 91无摭挡| 白嫩国模丰满一二三区| 97射欧美| 中文字幕亚洲在线一区| 色综九九九一区| 麻豆这里只有精品| 色约约一区=区三区| 色五月首页| 久久99九九九九6666免费观看软件| www.色99| 午夜精品久久久久久久久久久久久| 丁香五月天视频| 91欧美网| 偷拍 精品 另类 四区| 激情五月天中文字幕色| 久久亚州高清| 欧美日产国产在线成人第一区| 午夜精品久久久久| 日韩久久.一级黄色片| 亚洲熟女偷拍在线观看| 免费精品福利在线观看| 久久亚洲一区女同性恋中文字幕| 色婷婷激情| 超碰97久久| 国产天天看| 欧美大香蕉专区网| 抽插一区二区视频| 综合色图亚洲欧美| 三级精品三级在线观看| 日韩精品人妻中文字有码在线 | 91天天爽| 99亚亚热| 国产日韩精品无码去免费专区国产| 欧美日韩国产电影| 久久久久国产一区二| 99热这里都是精品| 高清不卡一二三区视频......| 老司机深夜18禁污污网站| 啊啊啊不要嗯嗯在线观看| 天天爽人人综合免费7799| 中文字幕99999| 亚洲美女 晚间男人天堂| 日本色色色视频| 精品久久久久久久| 欧美性区| 色色色色网站| 一级毛片电影免费看| 中文字幕久久亚州无码| 婷婷综合在线| 福利操逼| 91人妻人人澡人人爽人人精品| 男人天堂.AB| 看日韩操逼| 亚洲精品国语在线播放| 加勒比综合a∨| 91美女视屏| 蜜桃无码AV一区二区| 91国产操逼视频| 亚洲好色人妻| 国产婷婷一区| 精品久热| 欧美另类综合久久| 日本阿v天堂在线观看| 亚洲欧美日韩中文久久自慰| 人妻天天操天天爽视频免费| 欧美丝袜制服久久| 国产成人亚洲精品无| 亚洲人精品久久久| 超碰在线人妻不卡| 男人夜色天堂ss| 能直接看AV的网站| 伊人久久综合影院精品久久久| 欧美亚州综合网图片| 久草男人天堂| 91肏屄网| 色色婷婷丁香| 日本www操操操| 夜夜操美女| 国内伊人久久久久久网站视频| 91精品人妻五十路| www.AV有限公司一区| 久久极品一区二区| 亚洲色诱惑| 日本高清有码网址视频| 国产操逼视频在线观看| 久久色网| 熟妇一区二区| 嗯嗯不要 视频| 久久色AV线| 老女人碰碰在线碰碰视频| 怡红院久久老司机| 亚洲国产一区二区入口| 女人综合网| 亚洲男人天堂2017| 熟妇高潮二区三区| 亚洲色图 图片| 久久久99999久网站| 国产欧美日韩臀| 欧美一区二区情色| 97青青操视频| 97午夜剧场日韩| 东北夫妻性偷拍| 97中文超碰| 狼天天狼天天大香蕉| 日产狠狠干| 91 亚洲 欧洲| 懂色AV一区二区三区| 国产乱码久久| 色香色香欲天天天影视综合网| 99性爱视频| 亚洲少妇色| 美女黄页| 97亚洲资源| 九九九久久久久| 超碰人妻中文在线| 久久久久9| 天堂精品| 亚洲色图8| 国产精品夜夜| 欧美色欧美| 亚洲AV成人精品网站在AV| 欧美高清18A片| 秋霞网—男女啪啪亚洲免费体验区| 国产成人无码a| 亚洲va有码在线天堂| 黑人精品成人一区二区三区| 欧美日韩岛国大片在线观看| 国产免费一区在线观看| 天天拍天天操|