久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

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

ONVIF設(shè)備對接核心鏈路:Discovery、GetCapabilities與GetStreamUri詳解 簡介本資源是一份面向嵌入式開發(fā)與視頻監(jiān)控系統(tǒng)集成工程師的ONVIF協(xié)議對接實(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í)的中高級開發(fā)者在理解ONVIF標(biāo)準(zhǔn)框架基礎(chǔ)上通過閱讀該源碼掌握設(shè)備側(cè)視頻服務(wù)的標(biāo)準(zhǔn)化接入路徑并獲得可復(fù)用的消息封裝范式與典型排錯(cuò)切入點(diǎn)。1. ONVIF 設(shè)備管理不是“連上就行”RTSP 流與 OnvifDeviceManager 對接失敗的 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è)備對接最小可行鏈路從原始 UDP 發(fā)現(xiàn)包解析到手動(dòng)構(gòu)造 GetStreamUri 請求再到比對 ODM 內(nèi)部日志確認(rèn) XAddr 是否被正確路由。適合正在做視頻平臺(tái)接入、IPC 管理 SDK 開發(fā)、或需要繞過商業(yè) ODM 做定制化設(shè)備納管的嵌入式/后端工程師。它不依賴任何云服務(wù)所有交互走本地局域網(wǎng)純 HTTP/SOAP實(shí)測兼容???、大華、宇視等主流廠商固件v2.4–v2.6也踩過 Hikvision 某些型號強(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 請求監(jiān)聽響應(yīng)# probe_discovery.py import socket import time import xml.etree.ElementTree as ET # WS-Discovery Probe 請求精簡版僅含必要命名空間 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ù)所有請求的根地址 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 請求。關(guān)鍵在于XAddrs字段——它不是設(shè)備 IP而是 ONVIF 設(shè)備服務(wù)的完整 HTTP 入口地址。很多 ODM 工具內(nèi)部就是靠這個(gè)字段拼接后續(xù)GetCapabilities的 URL。如果這里返回空或格式錯(cuò)誤如只有 IP 沒端口說明設(shè)備固件未正確實(shí)現(xiàn) WS-Discovery需降級用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ù)地址。注意此請求必須攜帶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請求的目標(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 請求生成合法 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 庫對 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請求必然失敗日志顯示 “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]行檢查請求的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ù)所有請求 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 對接中 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ā)包需升級固件或換 ONVIF Profile如 Profile S。4.2 現(xiàn)象GetCapabilities 返回 400 Bad Request原因SOAP 請求中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或在代碼中每次請求后顯式connection: closePython requests 加headers{Connection: close}。5. 把 ONVIF 對接變成可交付模塊用 Python 封裝 DeviceManager 類與自動(dòng)重試策略當(dāng)你需要把 ONVIF 對接能力嵌入自有系統(tǒng)如視頻平臺(tái)設(shè)備管理后臺(tái)硬寫一堆 curl 和 XML 解析顯然不可維護(hù)。本節(jié)提供一個(gè)生產(chǎn)級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)降級如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 請求方法帶重試 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 請求同 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 # 降級方案硬編碼 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)致失敗降級方案rtsp://ip:554/stream1是???大華/宇視默認(rèn)流路徑覆蓋 80% 場景所有網(wǎng)絡(luò)請求帶Connection: close防止設(shè)備連接池耗盡。5.2 驗(yàn)證模塊健壯性用 pytest 編寫設(shè)備兼容性測試集為確保模塊在不同固件下穩(wěn)定我編寫了輕量級測試集覆蓋 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è)備型號都強(qiáng)制走一遍這個(gè) pytest 流程再提交代碼 —— 它比人工點(diǎn) ODM 穩(wěn)定十倍。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产久久成人| 欧美少妇大量自拍视频在线观看| 国产精品乱码久久久久久久久| 国产免费久久久久| 久久久久久99AV无码免费网站| 欧州激情视频在线一区二区| 国产激情综合五月久久| 日韩亚洲精品一区二区| 啊啊啊啊啊啊好多水| 啊啊啊啊在线观看网址| 五月色综合| 亚洲中文字幕久久人妻| 国产性爱强奸乱伦大全| 亚洲熟女一区二区| 一二三四视频在线社区中文字幕| 中文字幕一区 二区三四五 区日 日骚| 内射夫妻三片| 国产AV中文| 伦在线97| 国产精品午夜成人福利| 日韩美女高潮喷水视频| 亚洲熟妇无码一区二区三区| 人妻一二三区| 亚洲欧洲无码97久久精品| 天天网综合| 人妻少妇精品一区二区三区| 亚洲天堂精品日韩电影| 精品久久在线区一区| 天天拍夜夜| 久久久精品国产亚洲伊人| 一起草在线视频| 激情综合五月天| 亚洲综合九九| 亚洲国产精品久久久男人的天堂| 黄在线| 97在线资源| 黄色小视频日本txt| 欧美在线干| 久久综合婷婷| 久久免费少妇| 午夜福利在线合集| 色性综合| 天天操夜夜嗨| 99精品九九九九九九| 亚洲一区二区三区久久 亚洲一区二区| 日韩一卡二卡三卡| 国产青视频| 亚洲一区二区三区中文字幕| 日韩欧美~中文字| 探花精品视频| 日韩无码精品综合久久| 99久在线精品99re8| 欧美v亚洲v日韩v最新在线二区 | 夜夜爽夜夜| 夜夜国产一区| 熟女人妻av在线资源,黄色的资源| 国产精品久久久吖| 蜜桃狠狠色伊人亚洲综合 | 久久久久久久久久久久久久久久9 亚洲成人妻日韩在线 | 亚洲二区精品在线观看| 亚洲国产97| 干B| 天天色播| 人妻偷拍一区二区三区| 人人爽夜夜玩视频| 一区麻豆 高清中文字幕| 色欲无码人妻日韩欧美精品| 78精品在线| 天堂资源欧美| 一区二区激情国产熟女| 国产亚洲中文不卡二区| AA级电影三区| 97久久久久| 男生女生啊啊啊啊| 又黄又爽在线观看视频 | 91原创在线观看| 青娱乐国产精品| 麻豆成人AV| 亚精品无码毛片一区二区三区| 亚洲人妻av| 先锋激情∨在线视频播放| 超碰97国产欧美| 区二区亚洲婷| 亚射在线| 99久热| 亚洲色 国产 欧美 日韩| 91性片| 色悠久久久av| 精品国产国产AV| 五月天婷婷欧美三区| 性影在线视频| 人人干黄色| 2020中文字幕在线观看| 日本欧美中文字幕| 亚洲视频精选| 999久久芭蕾| 夜夜嗨AV蜜臀av| 开心激情站| 韩国三级理论在线| 青青伊人这里只有精品| 免费看黄视频亚洲网站| 欧美五十路熟| 国产精品久久久久久亚洲色欲| 久久线上视频免费看| 老女人碰碰在线碰碰视频| 日韩在线女优天天干| 日本色色色| 欧美日韩国产高清在线一二三区 | 久都青青视频| 99国产人成精品| 久久久久国产一区二| 在线欧美69V免费观看视频| 99婷婷一区二区| 欧美色综合网| 久久久久久久人妻丝袜| 2020中文字幕在线观看| 亚洲国产成人精品女人久久久| 91 偷| 久久精品一区二区三区蜜桃臀| 2017大香蕉国产精品久久| 欧美综合色站| 在线97在线| 91人妻视频在线| 久久久久久久极品香蕉视频| 67914亚洲精品| 色噜噜狠狠色综无码久久合欧美| 日本三级韩三级99久久| 去干网最新版| 五月婷婷综合在线| 中亚精品极乱| 黑丝少妇麻豆| 蜜桃久久久久久久久久久久| 亚洲第91页| 亚洲免费97免费| 黄总AV色图| 99re8免费高清在线| 色老汉色| 粉嫩AV一区夜夜嗨| 色哟哟av| 国产精品噜噜噜日日日| 九九九九热| 欧美成人一级麻豆| 日韩在线观看三级电影| 91人精品妻入口| 在线人成亚洲视频免费观看| 无码人妻精品一区二区中文| 日韩人妻制服丝袜av| 国产懂色精品国产av| 激情啪啪拍91| 台湾大香蕉99热| 欧美性暴力猛交XXXX| 日本精品免费一区二区三区四区| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 国产超碰欧美| 性生活性生大爱77AV国产 | 欧美中文综合| 黄色成人网久久久久久| 十八禁的黄污污免费网站| 中日韩熟女| 日本黄 R色 成 人网站| 国产精品制服丝袜中文字幕日韩一区二区三区| 麻豆精品A片免费观看| 青青操在线亚洲视频观看欧美在线| 综合久久99亚洲人妻中文在线| 九色 蝌蚪 熟女自| 国产久久久久久| 欧美18老人禁| 国产精品久久久| se吧提供91精品国产91久久久久久| 岛国激情视频软件| 少妇一线天久久久久久| 精品人妻一区二区三区视频| 伊人久大| 色狠狠 - 百度| 欧美视频边做饭边橾| 亚洲最大91网| 久久久禁| 富女玩鸭子一级毛片| 女人被男人桶爽视频网站| 激情综合五月| 99热在线不卡| 97在线观看免费视频| 影音先锋日本一区二区| 五月婷婷综合在线| 99在线视频播放| 91性网| 亚洲男人综合| 玖玖视频在线资源一区二区三区| 精品久久久中文字幕不| 亚洲双插| 国产黄片精品在线| 大香蕉在线视频15| 欧美激情亚洲情色| 2019精品国产无码成人| 91五月天| 后入式视频国产自| 中文字幕日韩电影人妻| 天天综合AV| 九九九精品色乱九九九| 色黄污美女啪啪啪免费网站| 夜夜爽77777| 热热色国产一二区AV| yw尤物av无码点击进入麻豆| 亚洲 91 在线| 97超级久久| 精品人妻一区| 91国产丝袜足交精品视频| 欧美色吧综合| 人妻99p| 婷婷15月天青娱乐| 色波多| 女优免费一区二区永久| 本道在线| 亚洲色 国产 欧美 日韩| 欧美熟女激情| 在线a亚洲视频播放在线| 极品尤物在线观看| 无码精品啪啪啪一区二区三区三州| 少妇熟女1区2区3区| 九九综合久久| 精品超碰色| 国产成人精品日本视频| 超碰天天操| 色在线综合| 久妇网| 怡红院成人视频| 欧美日韩国产中文精品字幕自在自线| 国产乱弄免费在线视频。| 中日韩一区二区三区欧美| 色婷婷综合视频| 国产精品3| 韩国黄片aaaa| 狠狠爱夜夜干| 色久桃花影院在线观看| 亚洲鸥美色图| 国产精品青草综合久久| 超碰是碰在线观看| www.av在线观看| 亚洲中文字幕av| 午夜免费福利视频一区| 躁躁躁日日躁2020| 骚逼高潮久久精品| 精品人妻视频入口| 97超碰逼| a级成人毛片免费视频高清| 久久99精品国产| av强奸乱轮| 久久熟女久| 天天操夜夜操狠很操| 先锋音影AV| 性在久久久久久| 青操影院| 90后性网国产欧美| 97精品网| 欧美图片色综合| 欧美日韩国产另类综合| 午夜精品人妻二区三区| 亚洲精品视频在线| 野狼福利社区| 亚洲人久久久网| 少妇啪啪自拍| 蜜桃臀av一区二区| 蜜色网色哟哟| 人妻少妇被猛烈进入中| 天天做天天爱| 啊啊啊com| 欧美Aⅴ| 亚洲日韩欧美一区二区| 免费看欧美美女黄色大片| 欧美精品欧美精品系列| 天天色悠悠激情| 免费观看性欧美一级| 超碰97首页| 92福利社视频| 天堂а√在线最新版在线 | 日韩色| 国产sv美女内射| 亚洲免费精品一区| 色yeye成人免费视频| 抽插亚洲无码| 色大香蕉97N| 爆操无码| 最新国内自拍av免费| 中文字幕免费看| AV 少妇 人妻 偷拍| 日本黄色精品专区网站| 97操97干| 精品乱码久久久久| 九九色热| 福利视频一区二区微拍| 97综合国产| 中国小夫妻勾搭露脸淫荡对白| 日本污ww视频网站| 欧美人人曰人人操人人射射| 性爱AV天堂| 亚洲色色色| 久操网视频| 欧洲综合色| 亚洲色图 综合| 欧美国产日韩清纯唯美 | 亚洲一区二区三区中文字幕| 综合欧美亚洲| 男插女青青影院| 久久久一区二区三区四曲免费听| 国产熟女免费观看久久| av网站国产主播在线| 日韩91网| 性欧美精| 欧美内射少妇| 99色综合| 777奇米影视777四色| 成人无遮挡毛片免费看| 欧美影院一区二区三区| 另类欧美色| 久久偷偷色综合蜜桃| 在线视频一区二区传媒| 天天干天天拍| 欧美成人性爱视频大全| 欧美日韩在线国产在线| 秋霞Av理论一级在线| 精品美女少妇一区二区| 亚洲欧美91√| 国产一区二区三区久久精品太古里| 无码9区| 色色婷婷五月天| 日本成人A片免费看| 一级毛片电影免费看| 久久久月天| 99爱爱| 久久亚洲熟妇在线视频| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 99热精品国产| 爱爱动态试试看6 0秒| 小草三级久久观看| 99热这里都是精品| 天天干一干| 91在线无码精品秘 软件| 啪啪免费| 日本视频一区二区三区| 综合色好色| 96超碰网| 日韩精品亚洲一二三| 色哟哟av| 欧姜老司机| 校园春色美腿丝袜 | 97超碰色五月| 国产精品肉丝自拍| 玖玖97综合| 青青草原人妻| 久久色激情一区二区三区| 九色97| 亚洲97久久精品亚洲| 亚洲 一区二区 自拍| 久久美女国产| 黄网在线播放| 色性欧美| 热天堂一区二区| 夜夜高潮夜夜爽高清视频一| 情色av电影| 久噜噜| 亚洲黄色网址| 亚洲精品久久久久久| 人澡逼| 九九热re99re6在线精品| 久久精品无码一区二区三区| 欧美天天射| 亚洲色综合| 黄片www视频免费| 100啪啪视频大全| 超碰色男人操熟女| 午夜黄色免费在线观看| a网站免费观看| 日韩乱码Av| 日韩pv中文| 亚熟在线| av东京热男人的天堂| 97jingpin| 久久午夜神马| 国产在线综合福利网站| 成人三级片无码| 五月丁香六月婷综合成人综合| 亚洲男人天堂2019| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 男人a天堂手机在线版| 日韩啪啪视频| 江都AV在线| 美女91色黄18| 亚洲欧美人妻| 北约熟女超碰| 久久麻豆一区二区| 日韩传媒在线| 欧美色老汉| 国产成人无码a| 乱老女人一区二区视频| 高清不卡国产| 啊啊啊 在线| 精品人妻一区二区三区免费视频| 日韩美女啪啪一区| 亚洲 日本 一 二 三| 麻豆黄四叶草网站| 亚洲做性| 三级特黄60分钟播放| 五月婷视频| 少妇与黑人高潮在线| 骚妻少妇精品性色无码四色A V| 久久超碰网| 久久高清欧美国产| 欧美九九99久久精品| 日韩欧美中文字亚洲慕| 免费国产电影一区二区| 婷婷色色网| 欧美少妇性乱| 亚洲国产成人综合碰碰三级经典| 大香蕉免费乱伦视频| 1024久久高清视频| 亚洲综合20p| 日韩欧美经典在线观看| 日本999精品视频| 99久在线精品99re8蜜桃| 日韩99精品视频综合区| 97视频观看| 亚洲日韩97| 欧美aa一级片| 看黑丝美女操逼青青网站| 亚洲图片欧美偷拍| 欧美很很操视频| 一牛一区二区三区久久| 国产老太乱伦一区| 99久热| 91热色| 老熟妇一区二区三区…| 激情终合网| 免费国产视频| 玖玖97综合 | 亚洲一卡2卡3卡4卡乱码网站 | 五月丁香| 国产欧美成人精品| 久久草草亚洲蜜桃臀| 狠狠干狠狠色| 成人资源中文字幕在线观看| 欧美视频一区二区在线| 男人天堂日日夜夜| 国产精品久久久久久亚洲色欲| 日本 欧美 国产一区| 超碰这里只有精品| 爽极品影院| 色91综合网| 日本国产亚洲一区在线观看| 天美麻豆精品视频99| 外国91| 九九黄色网| 亚洲综合嫩| 五月天激情四射| 国产91专区| 一级久久性爱视频| 好爽要喷了| 在线无码操| 亚洲精品黑丝| 精品少妇一区二区三区在线视频| 久久9免费视频| 少妇干B| 大香蕉性欧美| 亚洲av无码成人精品国产| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 99热亚洲天堂| 欧美日韩大黄片| 日日夜夜国产综合| 成人八戒网站| 91老妇女| 欧美精品人妻视频| 欧美的性爱网站免费| 99国产精品久久久久久久成人热| 大黄片做爱的大的| 亚洲素人网| 久久激情亚洲精品无码?V | 欧美老妇女内射网址| 午夜AV人气不卡| 长久操视频| 亚洲精品日韩国产欧美| 97亚洲中文| 大香蕉免费中文| 在线观看亚洲成人精品| 国产乱婷婷精品二区三区| 国产精品com| AND人妻系列| 久操网视频| 日本布卡一区二三区| 亚洲激情网一二三四区| 91九久| 亚洲人成网www| av天堂精品久久| 欧美亚洲高清| 毛片久久| 精品无码久久久久久久杏吧| 亚洲综合在线第一页| 96国产精品| 夜夜高潮夜夜爽国产伦精品| 国产99999久久精品| 日本新免费二区三区| 亚洲AV高潮| 9 7超碰在线免费观看| 超碰爽人妻熟女Av| 图色综合网| 日夜久久久九九九久| JULIA人妻风俗店中出电影| 一区二区三区 丝袜 高跟 美腿| 亚码激情| 精品久久久久黄少妇| 日韩AV一区二区三区三州三州| 96久久科窝| 国产av白丝| 97爱亚洲综合色| 国产极品久久久| 啊啊啊啊啊好大好舒服想要| 欧美精品久久96人妻无码| 久久神马影院| 99re6国产精品99re| 欧美在线综合| 好吊色综合| а√天堂资源官网在线资源| 亚洲囯产精品女人久久久| 333kkkk·亚洲com久久| 色综合色| 精品国产污一区二区三区| 久久久性爱视频| 五十路熟女在线不卡观看一区二区| 国产中文字幕在线观看| 久久女人| 精品免费视频国产一区| 2019天天干天天操 | 蜜臀久久99精品久久久久电影| 麻豆一区二区三区在线看| 夜夜欢天天干| 日本三级一区二区 在线| 久久婷婷影院| 欧美色图亚洲特色| 欧美色爱综合| 欧美性爱18观看| 青草青草久热| 亚洲老熟妇xxx| 久久只有精品一区二区三区| 超碰久草| 欧美日韩国产黄色片| 丁香五月激情综合国产| 熟女色图在线| 亚洲情欲| 亚洲精品无码少妇久久| 国产自产91区13区| 撸无码不卡免费视频| 翔田千里AV无码秘 三区| 一区二区三区精品久久| 精品久久久久瑟瑟| 中国91AV| 人妻一区视频| 午夜呻吟欧美| 久久久久久久精| 亚洲色图欧美视频| 丝袜喷水在线| 日韩少妇无码| 牛黄色久午久| h色99999| 视频黄色国产一级| 国产美脚女优尤物在线观看| 日比av无码| 色欲无码人妻日韩欧美精品| 超91综合网| 大香蕉2017| 亚洲三区视频| 97天天操天天干| 国产h小视频在线观看免费| 日韩在线观看字幕精品| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 色欲Av人妻精品一区二| 欧美拳交在线播放| 青青青青青手机视频| 国语精品内射在线观看| 99RE在线视频精品,这里只有精品| 亚洲欧美小说| 嗯嗯啊中文字幕| 日韩精品一区二区人人人| 欧美日韩操操操| 黄久在线| 亚洲一区二区三区四区视频| 97伪v| 亚洲欧美日韩免费电影| 色狠狠综合噜一二三区| 日韩欧美亚洲自拍偷拍| 亚洲天堂另类小说男人| 日韩一级二级三级在线不卡观看完整| 久热99| 亚洲狠狠入| 91丨九色丨东北熟女| 亚洲高潮影院| 人妻久久久| 色逼综合| 久久最新免费视频23| 夜夜躁狠狠躁日日躁av| 99久久无色码| 亚洲无码精品AV久久久| 国产精品suv一区| 一级性爱视频免费在线| 国产污视频麻豆传媒一区二区| 在线人成亚洲视频免费观看| 99色婷婷中文字幕乱色| 午夜无码精品免费看性色| 国产风韵犹存熟妇三区| 日本女人操逼| 欧美性天天| 综合干干干av久久久综合网| 性久久久| 久久九九精品一区二区 | 91成人高清在线观看| 九一综合网| 亚洲欧美日韩精品久| 人人妻人人色一区二区三区| 天天综合91在线| 自拍偷拍草一草| 久久一区二区加油站| 国产精品久久伊人| 国产成人亚洲精品无| 黄色十八禁网站| 乱伦av.com| 天天网综合| 99re只有精品| 成年人性爱日韩| 91天天综合日韩欧美| 日本不卡三级网在线播放| 一本精品日本在线视频精品| 欧美日韩小说| 日本丝袜美腿人妻九九| 国产熟女免费观看久久| 超碰 国产熟女精品一区| 91人妻视频在线| 老司机老司机午夜影院| 96麻豆精品一区二区三区| 久草男人天堂| 久久xx| 天天激情综合站| 欧美熟妇精品黑人巨大91| 人妻密肉在线观看| 成人av动漫在线观看| 一个人免费视频观看在线WWW | 99青草| 色色色天美视频| 欧美不卡五十路| 91男女| 吉川爱美98堂在线| 丁香九月婷婷| 中文字幕丝袜国产第一页不卡| 人妻熟妇一区二区三区| 330dv亚洲成年视频网| 91五月天| 国产成人无码高清| 嗯啊抽插大香蕉网页| 97在线视频网站| 国产精品毛片| 亚热日本熟女| 67194无码不卡| 久久久久国产无av| 91成人在线免费视频| 黄骗免费网站| 国产日韩美女小穴视频网站不卡| 亚洲区限制级| 日本999精品视频| 午夜免费视频1000| 爱做久久久久久| 一区二区影院| 欧 美 自 拍 偷 拍| 91视频综合网| 欧美天天射| 97久久久网站| 成人情色综合网| 综合大香蕉美。| 午夜后入| 亚洲综合图色在线| 国产熟女| 殴美日韩m| 人人澡人人爽人人精品| 人妻精品综合中文字幕在线 | 加勒比在线观看一区二区| 中文字幕蜜乳av| 亚洲丝袜综合| 国产精品久久| 亚洲九九九| 天堂网亚洲区手机版| 超碰97久| 91制服丝袜| 91国产丝袜美女| A一级色女| 五十路人妻在线| 男插女青青影院| 欧美一二在线| 少妇三P| 玖玖草久草99蜜月一区二区三区| 亚洲天堂自拍| av一区二区三区四区五区久草臀| 欧美91精彩| 97超碰资源网| 色呦色呦色精品| 青青草在线视频美女| 老熟女天天操| 欧美日韩另类激情图片| 99婷婷一区二区| 亚洲欧美日韩制服另类| 亚洲乱色熟女一区| 国产91精品福利在线| 日本一区二区不卡精品| 国产吞精a级片激情电影| 日韩啪啪啪啪啪| 日韩人体偷拍| 中文字幕加勒比海高清无码免费视频| 亚洲视频一二区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊| AV天堂男人的天堂| 91少妇通奸网站| 少妇色欲综合网2| 午夜美女福利视频| A级毛片在线看免费| 成人七区| 久久极品一区二区| 三上制服丝AV| 青青青草伊人精品| 97天堂| 九月激情婷婷| 五月婷婷丁香| 午夜精品久久久99| 久久影视二区三区行押| 天天综合网网欲色| 中文字幕一区二区三区高清| 色香色欲天天综合网天天来吧| 精品视频久久久久九九九九9999| 熟女中出视频| 综合色久欲| 人人模人人看| 国产福利小视频高清在线观看| 亚洲婷婷五月天| 嫩草影院永久在线制服丝袜| 久久有码视频| 秋霞一集毛片观看| 午夜免费福利视频一区| 激情亚洲天堂| 东京太热男人的天堂久久久| 女同女同恋久久级三级| 丁香六月激情综合| 麻豆伊人网| 青青在线视频日韩欧美| 欧美性爱第一区| 97久久精品亚洲| 久草线上视频免费看| 大香蕉伊人网| 亚洲欧综合另类无码一区| 超碰97精品在线| 中文无线日韩一区| 亚洲?V无码专区在线电影| 天天日天天色| 色香91| 黄色人人| 色一射色一射| 伊人九九九| 自拍偷拍 高清无码| 2025亚洲男人天堂| 激情一区二区| 美女操逼福利视频| 一区| 中英熟女操女| 插入综合网| 综合熟妇一区二区三区| 国产女人和拘做爰视频| 一区中文字幕二区日韩| 欧美在线91| 国产欧美日韩在线观看麻豆传媒公司 | 屁屁影院一区二区三区国产| 亚洲第一页欧美| 精品视频一二三中文| 婷婷亚洲色| 怡红院亚洲怡春院av| 日本女优在线视频福利| 亚洲第一二区另类图| 女人天堂av在线播放| 亚洲色色色| 日韩三级av片| 天天做日日爱夜夜爽| 99re95| 午夜福利国产欧美日韩夜夜| 天天操天天射青青草| 色臀av| 啊啊啊好爽快点啊啊啊嗯嗯| 中文字幕视频二区| 桃色五月天| 97干97色| 日韩乱码Av| 夜夜骑夜夜操| 久久久av爱| 国产AAAAAABBBBB| 国产乱码精品久久久久久| 无码国产Av| 久草精品视频| 少妇高潮对白在线观看| 狠狠搞 亚洲91| 日韩精品国产一区二区| 国产天美传媒精品| 亚州AV无码国产精品| 欧美黑人168页欧美黑人167| 蜜乳性色无码专日粉嫩骚逼AV| 天天操熟妇| 三级片网站在线播放| 日本欧美不卡| 草草影院在线视频| 肉动漫无遮挡h在线观看| 天天综合网91入口| 久久国产性爱| 日本不卡中文| 日韩有码免费视频| 亚洲欧美91| 天无日色综合| 欧美性爱综合,免费| 亚码激情| 成人av性爱电影在线观看| 亚洲综合图文| 第四色奇米影视777| 中文熟女五十乱码在线| 综合色播| 人人操我人人干| 婷婷九月国产| 天天欧美色| 亚洲无码太久| 欧美亚洲韩国视频十五区| 99热超碰| 可以在线观看AV的网站| 特色a在线上| 欧美国产一区二区三区麻豆传媒| 强奸乱亚洲| 激情五月天中文字幕色| 久久国产精品熟女人妻| 99操| 无码外流操逼视频| 一区二区三区看视频| 国产13区| 5月婷婷6月六月丁香| 中文字幕国产在线天堂| 97网址97| 国产不卡片| 牛牛aV| 69av一区二区三区| 97国产精选| 白丝AV网站| 天天日天天插| 久久国内| 嫩呦国产一区二区三区AV| 欧美在线电影| julia中文字幕在线观看| 欧美精品四区| 久久久久久久亚洲Av无码| 2019天天干| 欧美日韩国产色五月综合在线| 色鬼在线综合| 天天综合精品| 欧美劲爆视频一区二区| 成人av毛片在线观看| 国产第11页| 欧美熟妇人体| 国产在线76页| 韩国黄色片精品久久久 | 美女黑人91神马| 少妇蜜汁| Julia在线播放亚洲久久| 久久东京国产精品视频| 成人免费毛片| 偷拍精品一区二区三区| 欧美性暴力| 偷窥自拍亚洲| 亚洲精品黄码久久久久| 2017天天透天天通天天擦| 亚洲乱色视频一区、二区在线| 一道本久久棕合爱| 亚洲av强奸乱伦| 黄色av片三级三级三级免费看| 久久久久久亚洲Av无码精| 黑人猛交| 欧美加勒比| 亚洲色图片区| 97久久综合网| 熟妇女伦乱视频视频| 欲色啪| 久久伦理视频久久大香蕉视频| 国产精品视频播放| 色第一页| 1二区9| 激情综合av| 黄总AV色图| 亚洲天天影视综合网| 天天综合网久久ww| 日韩久久艹| 麻豆激情综合| 国产精品久久久久久夜夜夜夜| 青青久操| 青青草久久在线| 超碰97在线色男人??| 欧美黑人168页欧美黑人167| 青青草久草AV| 老司机午夜福利视频一区二区| 97日视频| 久久精品国产久精国产| 白嫩妹子国产骚| 久久久久久中文| 99热销国产这里有精品| 粉嫩av一区二区三区天美传媒 | 国产不卡片| 久久久穴999| 日本99一区二区| 午夜精品久久久久久久99| 美女91av| 欧色网址| 97干97色| 98久久超碰| 欧美日韩中文字幕不卡| 酒色综合网| 亚洲第一页第二页激情| 第四色奇米影视777| 亚洲国产一级精品毛一级精品看免费视频 | 久久一本大香蕉 | 有码免费观看| 色麻豆AV| 5252色欧美在线男人的天堂| 久久男人的天堂| 韩国免费播放一级毛片| 97国产高清视频在线观看| 性爱1区| 97一区二区蜜臀| 天堂资源站| 老司机午夜福利视频一区二区| 99超碰网| 天天草天天日| 国产剧情AV不卡在线观看| 色色婷婷五月天| 抽插爽| 91熟女视频网| 超碰97人妻免费在线| 国产无马视频| 欧美制服网站美腿丝袜| 精品亚州18| 91色香| 亚洲图片婷婷五月天| 欧美激情综合| 欧美有码亚洲中文字幕一区二区三区四区| 男生女生啊啊啊啊| 91色射| 91高潮| 秋霞影音一区二区三区| 美女诱惑爱爱| 日韩青久久| 天天草天天日| 国产成人bd在线观看| 国产久久一区二区午夜| 丝袜色综合| 天天澡天天爽日日AV| 亚洲欧美国产其他二区| 婷婷五月天福利| 97精品在线| 另类图片综合| 天天操天天射天天日| 国产男人又猛又粗又爽| 国产视频三区四区| 另类欧美| 精品无码一区二区三区| 激情婷婷丁香| 亚洲高清在线se| 人人操人人摸人人看人人插| 天天干少妇| 美国三级日本三级久久99| 日韩激情电影中文字幕| 九九九九九九九精品视频| 亚州九九九精品视频| 老熟女搡BBBB搡BBBB视频| 欧亚性爱啪啪| 欧美天天综| 人妻久久| 国产精品自拍视频| 国内精品伊人久久久久影院会| 330dv亚洲成年视频网| 97综合在线| 国产高清MV操逼视频| 久久久久亚洲精品| 伊香蕉综合久久久久久久噜噜噜| 欧亚在线视频| 天天躁狠狠躁av| se吧提供91精品国产91久久久久久| 18禁中文字幕| 国产乱码精品久久久久久| 超碰97COm中文| 99成人| 亚洲色图第一页| 夜夜操青青草| 91 亚洲 欧洲| 丝袜亚洲综合| 中文字幕 国产 精品| 噜噜瑟| 强奸抽插av| 亚洲国产综合久久久性感熟妇| 爱爱啊啊啊| 成人三级片无码| 青青草原成人| 色欲日韩欧美在线一区| 丝袜综合| 97精品视频| 大香蕉综合| 日韩性爱一级片| 天天日天天舔东京热| 国产午夜精品理论片一二三区区| 高清不卡国产| 日本 情色 1区| 激情色色| 综合色一区三区二区| 婷婷国产精品九区| 97精品一区二区视频| 日韩钢筋无码高清啾啾啾| 欧美自拍偷拍综合图片| 熟妇艹鸡八| 中文人妻av高清一区| 加勒比伊人综合| 岛国艾薇凹凸视频天堂| 黑人性暴力毛片| 99久久久| 超碰97久久| 国产13区| 欧美日韩香蕉| 97超碰总站| 骚逼高潮久久精品| 日韩极品无码B| 91精品国久久久久久无码| 在线v中文字幕一区二区三区| 人伦四五区| 黄色高清无码无码破解免费暗网| 欧美亚洲韩国视频十五区| 91蜜臀熟女| 人人操人人摸avav| 青青操视频在线| 色欲久久综合| 被男人吃奶很爽的毛片| 欧美玖玖爱免费玖玖| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | AAAAAAAAA黄片| 伊人久日| 色av中文字| 五月天丁香婷婷综合网站| 麻豆天天躁天天揉揉AV| 2025亚洲男人天堂| 成人亚欧免费视频| 日韩99999| 干b在线性社区| 色婷婷电影| 97网色| 亚洲精品 欧美精品| 日韩人体偷拍| 91社区拍啪人妻| 亚欧美综合网| 91l欧美在线| 亚洲色图超碰在线| 男女性感激情网站| 成人精品无码| 超碰97在线色男人??| 国产超碰| 97在线视频免费观看| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 一本色道久久综合精品婷婷| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 中文字幕亚洲在线一区| 2020久久免费视频| 美女t无毒不卡不卡| 色天使大香蕉| 亚洲 欧美都市激情| 一区操逼日比视频| 成人怡红院| 欧洲亚洲天堂精品| 久久免费看高潮毛片韩国| 欧美久久人人网| 搡老女人老91妇女老熟女| 亚洲春色欧美| 男人的天堂色偷偷青青草视频婷婷网| 91色婷婷综合久久中文字幕二区| 免费视频在线一区二区不卡| 九七色图| 中文日韩欧美熟| 久久久久网站-538在线视频-欧美永久乱码| 六六久久日韩不卡| 欧美精品69性爱| 综合网 欧美| 欧美成人精品一区二区男人蜜臀| 亚洲综合图色在线| 黄色大片一区二区密桃丝袜| 9+1视频网址| 免费看黄片现成| 5252色欧美在线男人的天堂| 欧美色图偷拍另类| 色狠狠色| 91看黄片| 超碰97人妻| 国色综合天| 人人操人人操人妻人| 超碰久在线天天做| 欧美精品双插| 欧美老妇综合网| 麻豆区99999| 国产亚洲人妻综合日韩 久久| 国产女人成人精品视频| 插穴性爱视频在线观看| 久久伊人亚洲AV无码网站| 999国产精品999久久久久久| 天天干天天日天天射黄色大片| 国产白嫩漂亮KTV在线| 久久久久亚洲三级电影| 国内偷拍精品一区二区| 97爱爱官网| 国产不卡的视频| 日本最新1区2区3区| 超碰这里有精品| 超碰综合色| 精品国产72| 精品亚洲俞拍视频一区| 欧美一区二区日韩传媒搭讪精品| 国产免费大片| 欧美少妇大量自拍视频在线观看| 又黄又爽在线观看视频| 九九视品黄色| www.97在线| AV丝袜少妇| 久艹99| 综合熟妇一区二区三区| 久久精品成人| 高精欧美色| 岛国爱情动作片在国产AV无码专区亚洲AV漫画 | 超碰97精品在线| 搡老女人老妇女老妇老熟女怎么读| 夂久色| 九九无码久久精品视频| 欧美日韩国产传媒在线精品| 亚州精品丝袜-不卡成人免费| 久久婷婷在线观看视频| 日欧毛片久久| 精品少妇一区二区| 欧美色图校园春色| 欧美色图第一页| 蜜臀Av一区二区三区| 色99999| 思思热在线cao| 蜜臀操逼黄色视频操的好爽| 天天日天天插| 97 国产一区| 韩国嫰模上门援交视频| 一二三四区电影| 性爱乱伦一区| 热热色国产一二区AV| 日韩无码AB| 国产第二页| 欧美亚洲手机在线| 成人av在线播放| 午夜高清成人在线视频| 国产伊人自拍| 97热视频在线观看| 亚洲黄色电影|