日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

跨平台低延迟的RTMP/RTSP直播播放器设计实现

發布時間:2025/3/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨平台低延迟的RTMP/RTSP直播播放器设计实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開發背景

2015年,當我們試圖在市面上找一款專供直播播放使用的低延遲播放器,來配合測試我們的RTMP推送模塊使用時,居然發現沒有一款好用的,市面上的,如VLC或Vitamio,說白了都是基于FFMPEG,在點播這塊支持格式很多,也非常優異,但是直播這塊,特別是RTMP,延遲要幾秒鐘,對如純音頻、純視頻播放,快速啟播、網絡異常狀態處理、集成復雜度等各方面,支持非常差,而且因為功能強大,bug很多,除了行業內資深的開發者能駕馭,好多開發者甚至連編譯整體環境,都要耗費很大的精力。

我們的直播播放器,始于Windows平臺,Android和iOS同步開發,基于上述開源播放器的各種缺點,我們考慮全自研框架,確保整體設計跨平臺,再保障播放流程度的前提下,盡可能的做到毫秒級延遲,接口設計三個平臺統一化,確保多平臺集成復雜度降到最低。

整體方案架構

RTMP或RTSP直播播放器,目標很明確,從RTMP服務器(自建服務器或CDN)或RTSP服務器(或NVR/IPC/編碼器等)拉取流數據,完成數據解析、解碼、音視頻數據同步、繪制。

具體對應下圖“接收端”部分:

初期模塊設計目標

  • 自有框架,易于擴展,自適應算法讓延遲更低、解碼繪制效率更高;
  • 支持各種異常網絡狀態處理,如斷網重連、網絡抖動等控制;
  • 有Event狀態回調,確保開發者可以了解到播放端整體的狀態,從純黑盒不可控,到更智能的了解到整體播放狀態;
  • 支持多實例播放;
  • 視頻支持H.264,音頻支持AAC/PCMA/PCMU;
  • 支持緩沖時間設置(buffer time);
  • 實時靜音。

經過迭代后的功能

  • [支持播放協議]RTSP、RTMP,毫秒級延遲;
  • ?[多實例播放]支持多實例播放;
  • ?[事件回調]支持網絡狀態、buffer狀態等回調;
  • ?[視頻格式]支持RTMP擴展H.265,H.264;
  • ?[音頻格式]支持AAC/PCMA/PCMU/Speex;
  • ?[H.264/H.265軟解碼]支持H.264/H.265軟解;
  • ?[H.264硬解碼]Windows/Android/iOS支持H.264硬解;
  • ?[H.265硬解]Windows/Android/iOS支持H.265硬解;
  • ?[H.264/H.265硬解碼]Android支持設置Surface模式硬解和普通模式硬解碼;
  • ?[緩沖時間設置]支持buffer time設置;
  • ?[首屏秒開]支持首屏秒開模式;
  • ?[低延遲模式]支持類似于線上娃娃機等直播方案的超低延遲模式設置(公網200~400ms);
  • ?[復雜網絡處理]支持斷網重連等各種網絡環境自動適配;
  • ?[快速切換URL]支持播放過程中,快速切換其他URL,內容切換更快;
  • ?[音視頻多種render機制]Android平臺,視頻:surfaceview/OpenGL ES,音頻:AudioTrack/OpenSL ES;
  • ?[實時靜音]支持播放過程中,實時靜音/取消靜音;
  • ?[實時快照]支持播放過程中截取當前播放畫面;
  • ?[只播關鍵幀]Windows平臺支持實時設置是否只播放關鍵幀;
  • ?[渲染角度]支持0°,90°,180°和270°四個視頻畫面渲染角度設置;
  • ?[渲染鏡像]支持水平反轉、垂直反轉模式設置;
  • ?[實時下載速度更新]支持當前下載速度實時回調(支持設置回調時間間隔);
  • ?[ARGB疊加]Windows平臺支持ARGB圖像疊加到顯示視頻(參看C++的DEMO);
  • ?[解碼前視頻數據回調]支持H.264/H.265數據回調;
  • ?[解碼后視頻數據回調]支持解碼后YUV/RGB數據回調;
  • ?[解碼后視頻數據縮放回調]Windows平臺支持指定回調圖像大小的接口(可以對原視圖像縮放后再回調到上層);
  • ?[解碼前音頻數據回調]支持AAC/PCMA/PCMU/SPEEX數據回調;
  • ?[音視頻自適應]支持播放過程中,音視頻信息改變后自適應;
  • ?[擴展錄像功能]支持RTSP/RTMP H.264、擴展H.265流錄制,支持PCMA/PCMU/Speex轉AAC后錄制,支持設置只錄制音頻或視頻等;

RTMP、RTSP直播播放開發設計考慮的點

1. 低延遲:大多數RTSP的播放都面向直播場景,所以,如果延遲過大,嚴重影響體驗,所以,低延遲是衡量一個好的RTSP播放器非常重要的指標,目前大牛直播SDK的RTSP直播播放延遲比開源播放器更優異,而且長時間運行下,不會造成延遲累積;

2. 音視頻同步處理有些播放器為了追求低延遲,甚至不做音視頻同步,拿到audio video直接播放,導致a/v不同步,還有就是時間戳亂跳等各種問題,大牛直播SDK提供的播放器,具備好的時間戳同步和異常時間戳矯正機制;

3. 支持多實例:大牛直播SDK提供的播放器支持同時播放多路音視頻數據,比如4-8-9窗口,大多開源播放器對多實例支持不太友好;

4. 支持buffer time設置:在一些有網絡抖動的場景,播放器需要支持buffer time設置,一般來說,以毫秒計,開源播放器對此支持不夠友好;

5. TCP/UDP模式設定自動切換:考慮到好多服務器僅支持TCP或UDP模式,一個好的RTSP播放器需要支持TCP/UDP模式設置,如鏈接不支持TCP或UDP,大牛直播SDK可自動切換,,開源播放器不具備自動切換TCP/UDP能力;

6. 實時靜音:比如,多窗口播放RTSP流,如果每個audio都播放出來,體驗非常不好,所以實時靜音功能非常必要,開源播放器不具備實時靜音功能;

7. 視頻view旋轉:好多攝像頭由于安裝限制,導致圖像倒置,所以一個好的RTSP播放器應該支持如視頻view實時旋轉(0° 90° 180° 270°)、水平反轉、垂直反轉,開源播放器不具備此功能;

8. 支持解碼后audio/video數據輸出:大牛直播SDK接觸到好多開發者,希望能在播放的同時,獲取到YUV或RGB數據,進行人臉匹配等算法分析,開源播放器不具備此功能;

9. 實時快照:感興趣或重要的畫面,實時截取下來非常必要,一般播放器不具備快照能力,開源播放器不具備此功能;

10. 網絡抖動處理(如斷網重連):穩定的網絡處理機制、支持如斷網重連等,開源播放器對網絡異常處理支持較差;

11. 長期運行穩定性:不同于市面上的開源播放器,大牛直播SDK提供的Windows平臺RTSP直播播放SDK適用于數天長時間運行,開源播放器對長時間運行穩定性支持較差;

12. log信息記錄:整體流程機制記錄到LOG文件,確保出問題時,有據可依,開源播放器幾無log記錄。

13. 實時下載速度反饋:大牛直播SDK提供音視頻流實時下載回調,并可設置回調時間間隔,確保實時下載速度反饋,以此來監聽網絡狀態,開源播放器不具備此能力;

14. 異常狀態處理Event狀態回調如播放的過程中,斷網、網絡抖動、等各種場景,大牛直播SDK提供的播放器可實時回調相關狀態,確保上層模塊感知處理,開源播放器對此支持不好;

15. 關鍵幀/全幀播放實時切換:特別是播放多路畫面的時候,如果路數過多,全部解碼、繪制,系統資源占用會加大,如果能靈活的處理,可以隨時只播放關鍵幀,全幀播放切換,對系統性能要求大幅降低。

接口設計

好多開發者,在初期設計接口的時候,如果沒有足夠的音視頻背景,很容易反復推翻之前的設計,我們以Windows平臺為例,共享我們的設計思路,如需要下載demo工程源碼,可以到 GitHub 下載參考:

smart_player_sdk.h

#ifdef __cplusplus extern "C"{ #endiftypedef struct _SmartPlayerSDKAPI{/*flag目前傳0,后面擴展用, pReserve傳NULL,擴展用,成功返回 NT_ERC_OK*/NT_UINT32(NT_API *Init)(NT_UINT32 flag, NT_PVOID pReserve);/*這個是最后一個調用的接口成功返回 NT_ERC_OK*/NT_UINT32(NT_API *UnInit)();/*flag目前傳0,后面擴展用, pReserve傳NULL,擴展用,NT_HWND hwnd, 繪制畫面用的窗口, 可以設置為NULL獲取Handle成功返回 NT_ERC_OK*/NT_UINT32(NT_API *Open)(NT_PHANDLE pHandle, NT_HWND hwnd, NT_UINT32 flag, NT_PVOID pReserve);/*調用這個接口之后handle失效,成功返回 NT_ERC_OK*/NT_UINT32(NT_API *Close)(NT_HANDLE handle);/*設置事件回調,如果想監聽事件的話,建議調用Open成功后,就調用這個接口*/NT_UINT32(NT_API *SetEventCallBack)(NT_HANDLE handle,NT_PVOID call_back_data, NT_SP_SDKEventCallBack call_back);/*設置視頻大小回調接口*/NT_UINT32(NT_API *SetVideoSizeCallBack)(NT_HANDLE handle, NT_PVOID call_back_data, SP_SDKVideoSizeCallBack call_back);/*設置視頻回調, 吐視頻數據出來frame_format: 只能是NT_SP_E_VIDEO_FRAME_FORMAT_RGB32, NT_SP_E_VIDEO_FRAME_FROMAT_I420*/NT_UINT32(NT_API *SetVideoFrameCallBack)(NT_HANDLE handle,NT_INT32 frame_format,NT_PVOID call_back_data, SP_SDKVideoFrameCallBack call_back);/*設置視頻回調, 吐視頻數據出來, 可以指定吐出來的視頻寬高*handle: 播放句柄*scale_width:縮放寬度(必須是偶數,建議是 16 的倍數)*scale_height:縮放高度(必須是偶數*scale_filter_mode: 縮放質量, 0 的話 SDK 將使用默認值, 目前可設置范圍為[1, 3], 值越大 縮放質量越好,但越耗性能*frame_format: 只能是NT_SP_E_VIDEO_FRAME_FORMAT_RGB32, NT_SP_E_VIDEO_FRAME_FROMAT_I420成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetVideoFrameCallBackV2)(NT_HANDLE handle,NT_INT32 scale_width, NT_INT32 scale_height,NT_INT32 scale_filter_mode, NT_INT32 frame_format,NT_PVOID call_back_data, SP_SDKVideoFrameCallBack call_back);/**設置繪制視頻幀時,視頻幀時間戳回調*注意如果當前播放流是純音頻,那么將不會回調,這個僅在有視頻的情況下才有效*/NT_UINT32(NT_API *SetRenderVideoFrameTimestampCallBack)(NT_HANDLE handle,NT_PVOID call_back_data, SP_SDKRenderVideoFrameTimestampCallBack call_back);/*設置音頻PCM幀回調, 吐PCM數據出來,目前每幀大小是10ms.*/NT_UINT32(NT_API *SetAudioPCMFrameCallBack)(NT_HANDLE handle,NT_PVOID call_back_data, NT_SP_SDKAudioPCMFrameCallBack call_back);/*設置用戶數據回調*/NT_UINT32(NT_API *SetUserDataCallBack)(NT_HANDLE handle,NT_PVOID call_back_data, NT_SP_SDKUserDataCallBack call_back);/*設置視頻sei數據回調*/NT_UINT32(NT_API *SetSEIDataCallBack)(NT_HANDLE handle,NT_PVOID call_back_data, NT_SP_SDKSEIDataCallBack call_back);/*開始播放,傳URL進去注意:這個接口目前不再推薦使用,請使用StartPlay. 為方便老客戶升級,暫時保留. */NT_UINT32(NT_API *Start)(NT_HANDLE handle, NT_PCSTR url, NT_PVOID call_back_data, SP_SDKStartPlayCallBack call_back);/*停止播放注意: 這個接口目前不再推薦使用,請使用StopPlay. 為方便老客戶升級,暫時保留. */NT_UINT32(NT_API *Stop)(NT_HANDLE handle);/**提供一組新接口++*//**設置URL成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetURL)(NT_HANDLE handle, NT_PCSTR url);/*** 設置解密key,目前只用來解密rtmp加密流* key: 解密密鑰* size: 密鑰長度* 成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetKey)(NT_HANDLE handle, const NT_BYTE* key, NT_UINT32 size);/*** 設置解密向量,目前只用來解密rtmp加密流* iv: 解密向量* size: 向量長度* 成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetDecryptionIV)(NT_HANDLE handle, const NT_BYTE* iv, NT_UINT32 size);/*handle: 播放句柄hwnd: 這個要傳入真正用來繪制的窗口句柄is_support: 如果支持的話 *is_support 為1, 不支持的話為0接口調用成功返回NT_ERC_OK*/NT_UINT32(NT_API *IsSupportD3DRender)(NT_HANDLE handle, NT_HWND hwnd, NT_INT32* is_support);/*設置繪制窗口句柄,如果在調用Open時設置過,那這個接口可以不調用如果在調用Open時設置為NULL,那么這里可以設置一個繪制窗口句柄給播放器成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetRenderWindow)(NT_HANDLE handle, NT_HWND hwnd);/** 設置是否播放出聲音,這個和靜音接口是有區別的* 這個接口的主要目的是為了用戶設置了外部PCM回調接口后,又不想讓SDK播放出聲音時使用* is_output_auido_device: 1: 表示允許輸出到音頻設備,默認是1, 0:表示不允許輸出. 其他值接口返回失敗* 成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetIsOutputAudioDevice)(NT_HANDLE handle, NT_INT32 is_output_auido_device);/**開始播放, 注意StartPlay和Start不能混用,要么使用StartPlay, 要么使用Start.* Start和Stop是老接口,不推薦用。請使用StartPlay和StopPlay新接口*/NT_UINT32(NT_API *StartPlay)(NT_HANDLE handle);/**停止播放*/NT_UINT32(NT_API *StopPlay)(NT_HANDLE handle);/** 設置是否錄視頻,默認的話,如果視頻源有視頻就錄,沒有就沒得錄, 但有些場景下可能不想錄制視頻,只想錄音頻,所以增加個開關* is_record_video: 1 表示錄制視頻, 0 表示不錄制視頻, 默認是1*/NT_UINT32(NT_API *SetRecorderVideo)(NT_HANDLE handle, NT_INT32 is_record_video);/** 設置是否錄音頻,默認的話,如果視頻源有音頻就錄,沒有就沒得錄, 但有些場景下可能不想錄制音頻,只想錄視頻,所以增加個開關* is_record_audio: 1 表示錄制音頻, 0 表示不錄制音頻, 默認是1*/NT_UINT32(NT_API *SetRecorderAudio)(NT_HANDLE handle, NT_INT32 is_record_audio);/*設置本地錄像目錄, 必須是英文目錄,否則會失敗*/NT_UINT32(NT_API *SetRecorderDirectory)(NT_HANDLE handle, NT_PCSTR dir);/*設置單個錄像文件最大大小, 當超過這個值的時候,將切割成第二個文件size: 單位是KB(1024Byte), 當前范圍是 [5MB-800MB], 超出將被設置到范圍內*/NT_UINT32(NT_API *SetRecorderFileMaxSize)(NT_HANDLE handle, NT_UINT32 size);/*設置錄像文件名生成規則*/NT_UINT32(NT_API *SetRecorderFileNameRuler)(NT_HANDLE handle, NT_SP_RecorderFileNameRuler* ruler);/*設置錄像回調接口*/NT_UINT32(NT_API *SetRecorderCallBack)(NT_HANDLE handle,NT_PVOID call_back_data, SP_SDKRecorderCallBack call_back);/*設置錄像時音頻轉AAC編碼的開關, aac比較通用,sdk增加其他音頻編碼(比如speex, pcmu, pcma等)轉aac的功能.is_transcode: 設置為1的話,如果音頻編碼不是aac,則轉成aac, 如果是aac,則不做轉換. 設置為0的話,則不做任何轉換. 默認是0.注意: 轉碼會增加性能消耗*/NT_UINT32(NT_API *SetRecorderAudioTranscodeAAC)(NT_HANDLE handle, NT_INT32 is_transcode);/*啟動錄像*/NT_UINT32(NT_API *StartRecorder)(NT_HANDLE handle);/*停止錄像*/NT_UINT32(NT_API *StopRecorder)(NT_HANDLE handle);/** 設置拉流時,吐視頻數據的回調*/NT_UINT32(NT_API *SetPullStreamVideoDataCallBack)(NT_HANDLE handle,NT_PVOID call_back_data, SP_SDKPullStreamVideoDataCallBack call_back);/** 設置拉流時,吐音頻數據的回調*/NT_UINT32(NT_API *SetPullStreamAudioDataCallBack)(NT_HANDLE handle,NT_PVOID call_back_data, SP_SDKPullStreamAudioDataCallBack call_back);/*設置拉流時音頻轉AAC編碼的開關, aac比較通用,sdk增加其他音頻編碼(比如speex, pcmu, pcma等)轉aac的功能.is_transcode: 設置為1的話,如果音頻編碼不是aac,則轉成aac, 如果是aac,則不做轉換. 設置為0的話,則不做任何轉換. 默認是0.注意: 轉碼會增加性能消耗*/NT_UINT32(NT_API *SetPullStreamAudioTranscodeAAC)(NT_HANDLE handle, NT_INT32 is_transcode);/*啟動拉流*/NT_UINT32(NT_API *StartPullStream)(NT_HANDLE handle);/*停止拉流*/NT_UINT32(NT_API *StopPullStream)(NT_HANDLE handle);/**提供一組新接口--*//*繪制窗口大小改變時,必須調用*/NT_UINT32(NT_API* OnWindowSize)(NT_HANDLE handle, NT_INT32 cx, NT_INT32 cy);/*萬能接口, 設置參數, 大多數問題, 這些接口都能解決*/NT_UINT32(NT_API *SetParam)(NT_HANDLE handle, NT_UINT32 id, NT_PVOID pData);/*萬能接口, 得到參數, 大多數問題,這些接口都能解決*/NT_UINT32(NT_API *GetParam)(NT_HANDLE handle, NT_UINT32 id, NT_PVOID pData);/*設置buffer,最小0ms*/NT_UINT32(NT_API *SetBuffer)(NT_HANDLE handle, NT_INT32 buffer);/*靜音接口,1為靜音,0為不靜音*/NT_UINT32(NT_API *SetMute)(NT_HANDLE handle, NT_INT32 is_mute);/*設置RTSP TCP 模式, 1為TCP, 0為UDP, 僅RTSP有效*/NT_UINT32(NT_API* SetRTSPTcpMode)(NT_HANDLE handle, NT_INT32 isUsingTCP);/*設置RTSP超時時間, timeout單位為秒,必須大于0*/NT_UINT32 (NT_API* SetRtspTimeout)(NT_HANDLE handle, NT_INT32 timeout);/*對于RTSP來說,有些可能支持rtp over udp方式,有些可能支持使用rtp over tcp方式. 為了方便使用,有些場景下可以開啟自動嘗試切換開關, 打開后如果udp無法播放,sdk會自動嘗試tcp, 如果tcp方式播放不了,sdk會自動嘗試udp.is_auto_switch_tcp_udp: 如果設置1的話, sdk將在tcp和udp之間嘗試切換播放,如果設置為0,則不嘗試切換.*/NT_UINT32 (NT_API* SetRtspAutoSwitchTcpUdp)(NT_HANDLE handle, NT_INT32 is_auto_switch_tcp_udp);/*設置秒開, 1為秒開, 0為不秒開*/NT_UINT32(NT_API* SetFastStartup)(NT_HANDLE handle, NT_INT32 isFastStartup);/*設置低延時播放模式,默認是正常播放模式mode: 1為低延時模式, 0為正常模式,其他只無效接口調用成功返回NT_ERC_OK*/NT_UINT32(NT_API* SetLowLatencyMode)(NT_HANDLE handle, NT_INT32 mode);/*檢查是否支持H264硬解碼如果支持的話返回NT_ERC_OK*/NT_UINT32(NT_API *IsSupportH264HardwareDecoder)();/*檢查是否支持H265硬解碼如果支持的話返回NT_ERC_OK*/NT_UINT32(NT_API *IsSupportH265HardwareDecoder)();/**設置H264硬解*is_hardware_decoder: 1:表示硬解, 0:表示不用硬解*reserve: 保留參數, 當前傳0就好*成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetH264HardwareDecoder)(NT_HANDLE handle, NT_INT32 is_hardware_decoder, NT_INT32 reserve);/**設置H265硬解*is_hardware_decoder: 1:表示硬解, 0:表示不用硬解*reserve: 保留參數, 當前傳0就好*成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetH265HardwareDecoder)(NT_HANDLE handle, NT_INT32 is_hardware_decoder, NT_INT32 reserve);/**設置只解碼視頻關鍵幀*is_only_dec_key_frame: 1:表示只解碼關鍵幀, 0:表示都解碼, 默認是0*成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetOnlyDecodeVideoKeyFrame)(NT_HANDLE handle, NT_INT32 is_only_dec_key_frame);/**上下反轉(垂直反轉)*is_flip: 1:表示反轉, 0:表示不反轉*/NT_UINT32(NT_API *SetFlipVertical)(NT_HANDLE handle, NT_INT32 is_flip);/**水平反轉*is_flip: 1:表示反轉, 0:表示不反轉*/NT_UINT32(NT_API *SetFlipHorizontal)(NT_HANDLE handle, NT_INT32 is_flip);/*設置旋轉,順時針旋轉degress: 設置0, 90, 180, 270度有效,其他值無效注意:除了0度,其他角度播放會耗費更多CPU接口調用成功返回NT_ERC_OK*/NT_UINT32(NT_API* SetRotation)(NT_HANDLE handle, NT_INT32 degress);/** 在使用D3D繪制的情況下,給繪制窗口上畫一個logo, logo的繪制由視頻幀驅動, 必須傳入argb圖像* argb_data: argb圖像數據, 如果傳null的話,將清除之前設置的logo* argb_stride: argb圖像每行的步長(一般都是image_width*4)* image_width: argb圖像寬度* image_height: argb圖像高度* left: 繪制位置的左邊x* top: 繪制位置的頂部y* render_width: 繪制的寬度* render_height: 繪制的高度*/NT_UINT32(NT_API* SetRenderARGBLogo)(NT_HANDLE handle, const NT_BYTE* argb_data, NT_INT32 argb_stride,NT_INT32 image_width, NT_INT32 image_height,NT_INT32 left, NT_INT32 top,NT_INT32 render_width, NT_INT32 render_height);/*設置下載速度上報, 默認不上報下載速度is_report: 上報開關, 1: 表上報. 0: 表示不上報. 其他值無效.report_interval: 上報時間間隔(上報頻率),單位是秒,最小值是1秒1次. 如果小于1且設置了上報,將調用失敗注意:如果設置上報的話,請設置SetEventCallBack, 然后在回調函數里面處理這個事件.上報事件是:NT_SP_E_EVENT_ID_DOWNLOAD_SPEED這個接口必須在StartXXX之前調用成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetReportDownloadSpeed)(NT_HANDLE handle,NT_INT32 is_report, NT_INT32 report_interval);/*主動獲取下載速度speed: 返回下載速度,單位是Byte/s(注意:這個接口必須在startXXX之后調用,否則會失敗)成功返回NT_ERC_OK*/NT_UINT32(NT_API *GetDownloadSpeed)(NT_HANDLE handle, NT_INT32* speed);/*獲取視頻時長對于直播的話,沒有時長,調用結果未定義點播的話,如果獲取成功返回NT_ERC_OK, 如果SDK還在解析中,則返回NT_ERC_SP_NEED_RETRY*/NT_UINT32(NT_API *GetDuration)(NT_HANDLE handle, NT_INT64* duration);/*獲取當前播放時間戳, 單位是毫秒(ms)注意:這個時間戳是視頻源的時間戳,只支持點播. 直播不支持.成功返回NT_ERC_OK*/NT_UINT32(NT_API *GetPlaybackPos)(NT_HANDLE handle, NT_INT64* pos);/*獲取當前拉流時間戳, 單位是毫秒(ms)注意:這個時間戳是視頻源的時間戳,只支持點播. 直播不支持.成功返回NT_ERC_OK*/NT_UINT32(NT_API *GetPullStreamPos)(NT_HANDLE handle, NT_INT64* pos);/*設置播放位置,單位是毫秒(ms)注意:直播不支持,這個接口用于點播成功返回NT_ERC_OK*/NT_UINT32(NT_API *SetPos)(NT_HANDLE handle, NT_INT64 pos);/*暫停播放isPause: 1表示暫停, 0表示恢復播放, 其他錯誤注意:直播不存在暫停的概念,所以直播不支持,這個接口用于點播成功返回NT_ERC_OK*/NT_UINT32(NT_API *Pause)(NT_HANDLE handle, NT_INT32 isPause);/*切換URLurl:要切換的urlswitch_pos: 切換到新url以后,設置的播放位置, 默認請填0, 這個只對設置播放位置的點播url有效, 直播url無效reserve: 保留參數注意: 1. 如果切換的url和正在播放的url相同,sdk則不做任何處理調用前置條件: 已經成功調用了 StartPlay, StartRecorder, StartPullStream 三個中的任意一個接口成功返回NT_ERC_OK*/NT_UINT32(NT_API *SwitchURL)(NT_HANDLE handle, NT_PCSTR url, NT_INT64 switch_pos, NT_INT32 reserve);/*捕獲圖片file_name_utf8: 文件名稱,utf8編碼call_back_data: 回調時用戶自定義數據call_back: 回調函數,用來通知用戶截圖已經完成或者失敗成功返回 NT_ERC_OK只有在播放時調用才可能成功,其他情況下調用,返回錯誤.因為生成PNG文件比較耗時,一般需要幾百毫秒,為防止CPU過高,SDK會限制截圖請求數量,當超過一定數量時,調用這個接口會返回NT_ERC_SP_TOO_MANY_CAPTURE_IMAGE_REQUESTS. 這種情況下, 請延時一段時間,等SDK處理掉一些請求后,再嘗試.*/NT_UINT32(NT_API* CaptureImage)(NT_HANDLE handle, NT_PCSTR file_name_utf8,NT_PVOID call_back_data, SP_SDKCaptureImageCallBack call_back);/** 使用GDI繪制RGB32數據* 32位的rgb格式, r, g, b各占8, 另外一個字節保留, 內存字節格式為: bb gg rr xx, 主要是和windows位圖匹配, 在小端模式下,按DWORD類型操作,最高位是xx, 依次是rr, gg, bb* 為了保持和windows位圖兼容,步長(image_stride)必須是width_*4* handle: 播放器句柄* hdc: 繪制dc* x_dst: 繪制面左上角x坐標* y_dst: 繪制面左上角y坐標* dst_width: 要繪制的寬度* dst_height: 要繪制的高度* x_src: 源圖像x位置* y_src: 原圖像y位置* rgb32_data: rgb32數據,格式參見前面的注釋說明* rgb32_data_size: 數據大小* image_width: 圖像實際寬度* image_height: 圖像實際高度* image_stride: 圖像步長*/NT_UINT32(NT_API *GDIDrawRGB32)(NT_HANDLE handle, NT_HDC hdc,NT_INT32 x_dst, NT_INT32 y_dst,NT_INT32 dst_width, NT_INT32 dst_height,NT_INT32 x_src, NT_INT32 y_src,NT_INT32 src_width, NT_INT32 src_height,const NT_BYTE* rgb32_data, NT_UINT32 rgb32_data_size,NT_INT32 image_width, NT_INT32 image_height,NT_INT32 image_stride);/** 使用GDI繪制ARGB數據* 內存字節格式為: bb gg rr alpha, 主要是和windows位圖匹配, 在小端模式下,按DWORD類型操作,最高位是alpha, 依次是rr, gg, bb* 為了保持和windows位圖兼容,步長(image_stride)必須是width_*4* hdc: 繪制dc* x_dst: 繪制面左上角x坐標* y_dst: 繪制面左上角y坐標* dst_width: 要繪制的寬度* dst_height: 要繪制的高度* x_src: 源圖像x位置* y_src: 原圖像y位置* argb_data: argb圖像數據, 格式參見前面的注釋說明* image_stride: 圖像每行步長* image_width: 圖像實際寬度* image_height: 圖像實際高度*/NT_UINT32(NT_API *GDIDrawARGB)(NT_HDC hdc,NT_INT32 x_dst, NT_INT32 y_dst,NT_INT32 dst_width, NT_INT32 dst_height,NT_INT32 x_src, NT_INT32 y_src,NT_INT32 src_width, NT_INT32 src_height,const NT_BYTE* argb_data, NT_INT32 image_stride,NT_INT32 image_width, NT_INT32 image_height);} SmartPlayerSDKAPI;NT_UINT32 NT_API GetSmartPlayerSDKAPI(SmartPlayerSDKAPI* pAPI);/*reserve1: 請傳0NT_PVOID: 請傳NULL成功返回: NT_ERC_OK*/NT_UINT32 NT_API NT_SP_SetSDKClientKey(NT_PCSTR cid, NT_PCSTR key, NT_INT32 reserve1, NT_PVOID reserve2);#ifdef __cplusplus } #endif

smart_player_define.h

#ifndef SMART_PLAYER_DEFINE_H_ #define SMART_PLAYER_DEFINE_H_#ifdef WIN32 #include <windows.h> #endif#ifdef SMART_HAS_COMMON_DIC #include "../../topcommon/nt_type_define.h" #include "../../topcommon/nt_base_code_define.h" #else #include "nt_type_define.h" #include "nt_base_code_define.h" #endif#ifdef __cplusplus extern "C"{ #endif#ifndef NT_HWND_ #define NT_HWND_ #ifdef WIN32 typedef HWND NT_HWND; #else typedef void* NT_HWND; #endif #endif#ifndef NT_HDC_ #define NT_HDC_#ifdef _WIN32 typedef HDC NT_HDC; #else typedef void* NT_HDC; #endif#endif/*錯誤碼*/ typedef enum _SP_E_ERROR_CODE {NT_ERC_SP_HWND_IS_NULL = (NT_ERC_SMART_PLAYER_SDK | 0x1), // 窗口句柄是空NT_ERC_SP_HWND_INVALID = (NT_ERC_SMART_PLAYER_SDK | 0x2), // 窗口句柄無效NT_ERC_SP_TOO_MANY_CAPTURE_IMAGE_REQUESTS = (NT_ERC_SMART_PLAYER_SDK | 0x3), // 太多的截圖請求NT_ERC_SP_WINDOW_REGION_INVALID = (NT_ERC_SMART_PLAYER_SDK | 0x4), // 窗口區域無效,可能窗口寬或者高小于1NT_ERC_SP_DIR_NOT_EXIST = (NT_ERC_SMART_PLAYER_SDK | 0x5), // 目錄不存在NT_ERC_SP_NEED_RETRY = (NT_ERC_SMART_PLAYER_SDK | 0x6), // 需要重試 } SP_E_ERROR_CODE;/*設置參數ID, 這個目前這么寫,SmartPlayerSDK 已經劃分范圍*/ typedef enum _SP_E_PARAM_ID {SP_PARAM_ID_BASE = NT_PARAM_ID_SMART_PLAYER_SDK,} SP_E_PARAM_ID;/*事件ID*/ typedef enum _NT_SP_E_EVENT_ID {NT_SP_E_EVENT_ID_BASE = NT_EVENT_ID_SMART_PLAYER_SDK,NT_SP_E_EVENT_ID_CONNECTING = NT_SP_E_EVENT_ID_BASE | 0x2, /*連接中*/NT_SP_E_EVENT_ID_CONNECTION_FAILED = NT_SP_E_EVENT_ID_BASE | 0x3, /*連接失敗*/NT_SP_E_EVENT_ID_CONNECTED = NT_SP_E_EVENT_ID_BASE | 0x4, /*已連接*/NT_SP_E_EVENT_ID_DISCONNECTED = NT_SP_E_EVENT_ID_BASE | 0x5, /*斷開連接*/NT_SP_E_EVENT_ID_NO_MEDIADATA_RECEIVED = NT_SP_E_EVENT_ID_BASE | 0x8, /*收不到RTMP數據*/NT_SP_E_EVENT_ID_RTSP_STATUS_CODE = NT_SP_E_EVENT_ID_BASE | 0xB, /*rtsp status code上報, 目前只上報401, param1表示status code*/NT_SP_E_EVENT_ID_NEED_KEY = NT_SP_E_EVENT_ID_BASE | 0xC, /*需要輸入解密key才能播放*/NT_SP_E_EVENT_ID_KEY_ERROR = NT_SP_E_EVENT_ID_BASE | 0xD, /*解密key不正確*//* 接下來請從0x81開始*/NT_SP_E_EVENT_ID_START_BUFFERING = NT_SP_E_EVENT_ID_BASE | 0x81, /*開始緩沖*/NT_SP_E_EVENT_ID_BUFFERING = NT_SP_E_EVENT_ID_BASE | 0x82, /*緩沖中, param1 表示百分比進度*/NT_SP_E_EVENT_ID_STOP_BUFFERING = NT_SP_E_EVENT_ID_BASE | 0x83, /*停止緩沖*/NT_SP_E_EVENT_ID_DOWNLOAD_SPEED = NT_SP_E_EVENT_ID_BASE | 0x91, /*下載速度, param1表示下載速度,單位是(Byte/s)*/NT_SP_E_EVENT_ID_PLAYBACK_REACH_EOS = NT_SP_E_EVENT_ID_BASE | 0xa1, /*播放結束, 直播流沒有這個事件,點播流才有*/NT_SP_E_EVENT_ID_RECORDER_REACH_EOS = NT_SP_E_EVENT_ID_BASE | 0xa2, /*錄像結束, 直播流沒有這個事件, 點播流才有*/NT_SP_E_EVENT_ID_PULLSTREAM_REACH_EOS = NT_SP_E_EVENT_ID_BASE | 0xa3, /*拉流結束, 直播流沒有這個事件,點播流才有*/NT_SP_E_EVENT_ID_DURATION = NT_SP_E_EVENT_ID_BASE | 0xa8, /*視頻時長,如果是直播,則不上報,如果是點播的話, 若能從視頻源獲取視頻時長的話,則上報, param1表示視頻時長,單位是毫秒(ms)*/} NT_SP_E_EVENT_ID;//定義視頻幀圖像格式 typedef enum _NT_SP_E_VIDEO_FRAME_FORMAT {NT_SP_E_VIDEO_FRAME_FORMAT_RGB32 = 1, // 32位的rgb格式, r, g, b各占8, 另外一個字節保留, 內存字節格式為: bb gg rr xx, 主要是和windows位圖匹配, 在小端模式下,按DWORD類型操作,最高位是xx, 依次是rr, gg, bbNT_SP_E_VIDEO_FRAME_FORMAT_ARGB = 2, // 32位的argb格式,內存字節格式是: bb gg rr aa 這種類型,和windows位圖匹配NT_SP_E_VIDEO_FRAME_FROMAT_I420 = 3, // YUV420格式, 三個分量保存在三個面上 } NT_SP_E_VIDEO_FRAME_FORMAT;// 定義視頻幀結構. typedef struct _NT_SP_VideoFrame {NT_INT32 format_; // 圖像格式, 請參考NT_SP_E_VIDEO_FRAME_FORMATNT_INT32 width_; // 圖像寬NT_INT32 height_; // 圖像高NT_UINT64 timestamp_; // 時間戳, 一般是0,不使用, 以ms為單位的// 具體的圖像數據, argb和rgb32只用第一個, I420用前三個NT_UINT8* plane0_;NT_UINT8* plane1_;NT_UINT8* plane2_;NT_UINT8* plane3_;// 每一個平面的每一行的字節數,對于argb和rgb32,為了保持和windows位圖兼容,必須是width_*4// 對于I420, stride0_ 是y的步長, stride1_ 是u的步長, stride2_ 是v的步長,NT_INT32 stride0_;NT_INT32 stride1_;NT_INT32 stride2_;NT_INT32 stride3_;} NT_SP_VideoFrame;// 如果三項都是0的話,將不能啟動錄像 typedef struct _NT_SP_RecorderFileNameRuler {NT_UINT32 type_; // 這個值目前默認是0,將來擴展用NT_PCSTR file_name_prefix_; // 設置一個錄像文件名前綴, 例如:daniuliveNT_INT32 append_date_; // 如果是1的話,將在文件名上加日期, 例如:daniulive-2017-01-17NT_INT32 append_time_; // 如果是1的話,將增加時間,例如:daniulive-2017-01-17-17-10-36 } NT_SP_RecorderFileNameRuler;/* *拉流吐視頻數據時,一些相關的數據 */ typedef struct _NT_SP_PullStreamVideoDataInfo {NT_INT32 is_key_frame_; /* 1:表示關鍵幀, 0:表示非關鍵幀 */NT_UINT64 timestamp_; /* 解碼時間戳, 單位是毫秒 */NT_INT32 width_; /* 一般是0 */NT_INT32 height_; /* 一般也是0 */NT_BYTE* parameter_info_; /* 一般是NULL */NT_UINT32 parameter_info_size_; /* 一般是0 */NT_UINT64 presentation_timestamp_; /*顯示時間戳, 這個值要大于或等于timestamp_, 單位是毫秒*/} NT_SP_PullStreamVideoDataInfo;/* *拉流吐音頻數據時,一些相關的數據 */ typedef struct _NT_SP_PullStreamAuidoDataInfo {NT_INT32 is_key_frame_; /* 1:表示關鍵幀, 0:表示非關鍵幀 */NT_UINT64 timestamp_; /* 單位是毫秒 */NT_INT32 sample_rate_; /* 一般是0 */NT_INT32 channel_; /* 一般是0 */NT_BYTE* parameter_info_; /* 如果是AAC的話,這個是有值的, 其他編碼一般忽略 */NT_UINT32 parameter_info_size_; /*如果是AAC的話,這個是有值的, 其他編碼一般忽略 */NT_UINT64 reserve_; /* 保留 */} NT_SP_PullStreamAuidoDataInfo;/* 當播放器得到時候視頻大小后,會回調 */ typedef NT_VOID(NT_CALLBACK *SP_SDKVideoSizeCallBack)(NT_HANDLE handle, NT_PVOID user_data,NT_INT32 width, NT_INT32 height);/* 調用Start時傳入, 回調接口 */ typedef NT_VOID(NT_CALLBACK *SP_SDKStartPlayCallBack)(NT_HANDLE handle, NT_PVOID user_data, NT_UINT32 result);/* 視頻圖像回調 status:目前不用,默認是0,將來可能會用 */ typedef NT_VOID(NT_CALLBACK* SP_SDKVideoFrameCallBack)(NT_HANDLE handle, NT_PVOID user_data, NT_UINT32 status,const NT_SP_VideoFrame* frame);/* 音頻PCM數據回調, 目前每幀長度是10ms status:目前不用,默認是0,將來可能會用 data: PCM 數據 size: 數據大小 sample_rate: 采樣率 channel: 通道數 per_channel_sample_number: 每個通道的采樣數 */ typedef NT_VOID(NT_CALLBACK* NT_SP_SDKAudioPCMFrameCallBack)(NT_HANDLE handle, NT_PVOID user_data, NT_UINT32 status,NT_BYTE* data, NT_UINT32 size,NT_INT32 sample_rate, NT_INT32 channel, NT_INT32 per_channel_sample_number);/* 截屏回調 result: 如果截屏成功的話,result是NT_ERC_OK,其他錯誤 */ typedef NT_VOID(NT_CALLBACK* SP_SDKCaptureImageCallBack)(NT_HANDLE handle, NT_PVOID user_data, NT_UINT32 result,NT_PCSTR file_name);/* 繪制視頻時,視頻幀時間戳回調, 這個用在一些特殊場景下,沒有特殊需求的用戶不需要關注 timestamp: 單位是毫秒 reserve1: 保留參數 reserve2: 保留參數 */ typedef NT_VOID(NT_CALLBACK* SP_SDKRenderVideoFrameTimestampCallBack)(NT_HANDLE handle, NT_PVOID user_data, NT_UINT64 timestamp,NT_UINT64 reserve1, NT_PVOID reserve2);/* 錄像回調 status: 1:表示開始寫一個新錄像文件. 2:表示已經寫好一個錄像文件 file_name: 實際錄像文件名 */ typedef NT_VOID(NT_CALLBACK* SP_SDKRecorderCallBack)(NT_HANDLE handle, NT_PVOID user_data, NT_UINT32 status,NT_PCSTR file_name);/* *拉流時,視頻數據回調 video_codec_id: 請參考NT_MEDIA_CODEC_ID data: 視頻數據 size: 視頻數據大小 info: 視頻數據相關信息 reserve: 保留參數 */ typedef NT_VOID(NT_CALLBACK* SP_SDKPullStreamVideoDataCallBack)(NT_HANDLE handle, NT_PVOID user_data,NT_UINT32 video_codec_id, NT_BYTE* data, NT_UINT32 size, NT_SP_PullStreamVideoDataInfo* info,NT_PVOID reserve);/* *拉流時,音頻數據回調 auido_codec_id: 請參考NT_MEDIA_CODEC_ID data: 音頻數據 size: 音頻數據大小 info: 音頻數據相關信息 reserve: 保留參數 */ typedef NT_VOID(NT_CALLBACK* SP_SDKPullStreamAudioDataCallBack)(NT_HANDLE handle, NT_PVOID user_data,NT_UINT32 auido_codec_id, NT_BYTE* data, NT_UINT32 size, NT_SP_PullStreamAuidoDataInfo* info,NT_PVOID reserve);/* *播放器事件回調 event_id: 事件ID,請參考NT_SP_E_EVENT_ID param1 到 param6, 值的意義和具體事件ID相關, 注意如果具體事件ID沒有說明param1-param6的含義,那說明這個事件不帶參數 */ typedef NT_VOID(NT_CALLBACK* NT_SP_SDKEventCallBack)(NT_HANDLE handle, NT_PVOID user_data,NT_UINT32 event_id,NT_INT64 param1,NT_INT64 param2,NT_UINT64 param3,NT_PCSTR param4,NT_PCSTR param5,NT_PVOID param6);/* * * 用戶數據回調,目前是推送端發送過來的 * data_type: 數據類型,1:表示二進制字節類型. 2:表示utf8字符串 * data:實際數據, 如果data_type是1的話,data類型是const NT_BYTE*, 如果data_type是2的話,data類型是 const NT_CHAR* * size: 數據大小 * timestamp: 視頻時間戳 * reserve1: 保留 * reserve2: 保留 * reserve3: 保留 */ typedef NT_VOID(NT_CALLBACK* NT_SP_SDKUserDataCallBack)(NT_HANDLE handle, NT_PVOID user_data,NT_INT32 data_type,NT_PVOID data,NT_UINT32 size,NT_UINT64 timestamp,NT_UINT64 reserve1,NT_INT64 reserve2,NT_PVOID reserve3);/* * * 視頻的sei數據回調 * data: sei 數據 * size: sei 數據大小 * timestamp:視頻時間戳 * reserve1: 保留 * reserve2: 保留 * reserve3: 保留 * 注意: 目前測試發現有些視頻有好幾個sei nal, 為了方便用戶處理,我們把解析到的所有sei都吐出來,sei nal之間還是用 00 00 00 01 分隔, 這樣方便解析 * 吐出來的sei數據目前加了 00 00 00 01 前綴 */ typedef NT_VOID(NT_CALLBACK* NT_SP_SDKSEIDataCallBack)(NT_HANDLE handle, NT_PVOID user_data,NT_BYTE* data,NT_UINT32 size,NT_UINT64 timestamp,NT_UINT64 reserve1,NT_INT64 reserve2,NT_PVOID reserve3);#ifdef __cplusplus } #endif#endif

總結

總的來說,無論是基于開源播放器二次開發,還是全自研,一個好的RTMP播放器或RTSP播放器,設計的時候,更多考慮的應該是如何做的更靈活、穩定,單純的幾個接口,很難滿足通用化的產品訴求。

以下共勉:厚積薄發,登上山頂,不是為了飽覽風光,是為了尋找更高的山峰!

總結

以上是生活随笔為你收集整理的跨平台低延迟的RTMP/RTSP直播播放器设计实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

免费99| www欧美xxxx| 久久av一区二区三区亚洲 | 911久久香蕉国产线看观看 | 一区二区三区在线视频111 | 国产精品入口久久 | 麻豆国产精品永久免费视频 | 成人av免费看 | 久久精品日产第一区二区三区乱码 | 日日夜夜噜噜噜 | 久久激情久久 | 久久这里只有精品视频首页 | 精品欧美小视频在线观看 | 91九色丨porny丨丰满6 | 久久午夜羞羞影院 | 成人av在线网 | 97高清视频 | 欧美黑人性爽 | 国产福利91精品张津瑜 | 99热国产精品 | 天天艹日日干 | 中文字幕av播放 | 亚洲在线资源 | 少妇按摩av | 天堂av影院 | 三级黄色欧美 | 精品国产一区二区三区av性色 | 日韩精品视频在线观看网址 | 97精品国产手机 | 国产视频一区精品 | 国产精品午夜av | 天天综合中文 | 91av在线播放视频 | 中文在线www| 色欧美88888久久久久久影院 | 国产福利一区二区三区视频 | 夜夜操夜夜干 | 丁香六月婷婷开心婷婷网 | 国产午夜麻豆影院在线观看 | 国产精品1区2区在线观看 | 国产在线观看一 | 激情综合网在线观看 | 黄色在线观看网站 | 欧美性生活免费 | 四虎影视国产精品免费久久 | 婷婷国产v亚洲v欧美久久 | 99久久精品免费看国产免费软件 | 三上悠亚在线免费 | 97在线影院| 国内精品久久久久影院男同志 | 91一区啪爱嗯打偷拍欧美 | 亚洲精品综合一二三区在线观看 | 国产69精品久久久久久 | 一区二区三区在线免费播放 | 亚洲精品一区二区18漫画 | 99久在线精品99re8热视频 | 99在线精品视频在线观看 | 国产又粗又硬又爽的视频 | av久久在线 | 国产馆在线播放 | 国产99久 | 久久人人爽爽 | 国产一区二区三区黄 | 精品久久久久久久久亚洲 | 欧洲精品视频一区 | 国产91精品久久久久久 | 91在线国产观看 | 四虎成人网 | 四虎影视av | 综合激情网 | 欧美国产日韩一区 | 久久男人视频 | 毛片美女网站 | 蜜臀av免费一区二区三区 | 91成人在线视频观看 | 亚洲国产成人精品久久 | 91在线看黄| 国产精品美女久久久久久 | 999毛片 | 色窝资源 | 国产不卡片 | 日韩精品免费一区二区在线观看 | 国产资源在线观看 | 成全免费观看视频 | 亚洲精品中文字幕视频 | 日韩激情精品 | www.色婷婷| 国产在线视频一区 | 国产一二区免费视频 | 久久久久久蜜桃一区二区 | 狠色在线 | 一区二区免费不卡在线 | 91福利小视频| 亚洲精品免费观看 | 午夜视频黄 | 日韩中文字幕免费看 | 日韩av电影免费观看 | 四虎国产精品成人免费4hu | 欧美999| 天天噜天天色 | 2019av在线视频 | 久久久久中文 | 国产专区在线 | 麻豆免费视频网站 | www.国产在线视频 | 日韩电影在线观看一区二区三区 | 精品一区二区三区四区在线 | 日韩,精品电影 | 99热亚洲精品 | 欧美美女激情18p | 香蕉视频日本 | 日韩在线观看av | 国产色久 | 五月天激情综合网 | 婷婷在线播放 | 国产精品久久久久久久久久久杏吧 | 在线观看一区 | 在线观看免费一级片 | 成人啪啪18免费游戏链接 | 亚洲成人精品久久久 | 欧美尹人 | 在线一级片| 人人爽网站| 国产精品视频线看 | 波多野结衣在线中文字幕 | 中文字幕在线视频一区 | 婷婷亚洲综合五月天小说 | 成人av电影网址 | 日韩精品网址 | 中文字幕电影在线 | 国产综合香蕉五月婷在线 | 91视频高清完整版 | 99热在线国产 | 国产精品成人一区二区 | 五月天六月丁香 | 97视频人人澡人人爽 | 精品国产伦一区二区三区免费 | 中文字幕在线观看日本 | 免费观看一级成人毛片 | 国产精品毛片久久久久久 | 日韩高清黄色 | 亚洲国产小视频在线观看 | 黄色软件大全网站 | 激情综合五月 | 色综合天天狠狠 | www.天天综合 | 美女网站免费福利视频 | 夜夜高潮夜夜爽国产伦精品 | 91成熟丰满女人少妇 | 九九热只有这里有精品 | 在线国产黄色 | 干 操 插| 亚洲欧美在线视频免费 | 免费在线观看一区 | 狠狠躁日日躁夜夜躁av | 久久艹影院 | 国产久草在线观看 | 欧美性大胆| 日本女人的性生活视频 | 色视频成人在线观看免 | 337p日本大胆噜噜噜噜 | 天堂视频中文在线 | 91成人免费观看视频 | 碰超在线97人人 | 亚洲成人一区 | 国产福利91精品一区二区三区 | 香蕉视频日本 | 免费在线成人av | av线上看 | 亚洲三级毛片 | 日韩激情影院 | 91成年人视频 | 黄色免费电影网站 | 日韩免费一区二区在线观看 | 狠狠干综合 | 97在线观看视频 | 久久久久久中文字幕 | 欧美精品一区二区三区一线天视频 | 五月天综合激情 | av三区在线 | 99国产精品久久久久久久久久 | 色综合久久久久 | 依人成人综合网 | 精品国产精品久久 | 免费日韩 精品中文字幕视频在线 | 亚洲人人网 | 国产视频69 | 国产精品一区二区三区四区在线观看 | 中文字幕一区二区三区四区在线视频 | 国产成人在线观看免费 | 国产在线a免费观看 | 在线观看免费色 | 亚洲视频每日更新 | 91精品一区二区三区蜜臀 | 婷婷在线资源 | 字幕网在线观看 | 亚洲91中文字幕无线码三区 | 九九免费在线观看 | 91福利社在线观看 | 国模精品在线 | 狠狠色丁香婷婷 | 国产色在线观看 | 91人人澡人人爽人人精品 | www欧美色| 69中文字幕 | 天天干天天草天天爽 | 日本最新高清不卡中文字幕 | 激情九九 | 91色蜜桃 | 久草视频99 | 亚洲一区二区视频在线播放 | 成人xxxx | 夜夜操狠狠干 | 黄色大全在线观看 | 免费在线观看a v | 99在线精品免费视频九九视 | 国产在线免费观看 | 久久首页| 在线观看av黄色 | 97在线视频免费看 | 99精品偷拍视频一区二区三区 | 国产视频1区2区 | 国产黄免费 | 综合精品在线 | 免费成人在线观看视频 | 超碰个人在线 | 激情丁香综合五月 | 激情欧美丁香 | 天天干,天天射,天天操,天天摸 | 亚洲日日夜夜 | 亚洲午夜激情网 | 成片免费观看视频大全 | 久久久国产成人 | 欧美日韩在线电影 | 婷婷在线播放 | 久久精品国产亚洲a | 在线视频观看你懂的 | 国产美女精品 | 国产视频九色蝌蚪 | 五月婷婷六月综合 | 天天综合狠狠精品 | 福利视频| 最近日韩中文字幕中文 | 综合色在线观看 | 国产黄在线 | 午夜黄色影院 | 91av原创| 四虎成人精品在永久免费 | 99在线视频免费观看 | 99热最新网址| 免费看一级特黄a大片 | 五月婷网| 在线免费观看不卡av | 婷婷精品在线 | 亚洲一区精品二人人爽久久 | 黄色小说在线免费观看 | 天天操综合 | 激情综合网天天干 | 日韩在线免费看 | 午夜美女网站 | 亚洲精品久久久久www | 园产精品久久久久久久7电影 | 麻豆国产网站 | 免费看的黄色网 | 欧美精品一区在线发布 | 久久人人爽人人爽人人片av免费 | 六月丁香婷婷网 | 亚洲黄色一级视频 | 国产精品第52页 | 久久久久综合网 | 久久99国产视频 | 亚洲91视频 | 五月婷婷激情五月 | 午夜久久网站 | 奇米导航| 九月婷婷人人澡人人添人人爽 | 欧美亚洲国产精品久久高清浪潮 | 在线观看午夜av | 91在线免费播放视频 | 四川妇女搡bbbb搡bbbb搡 | 久久久久免费电影 | 久久9精品 | 天天色视频 | 日韩欧美一区二区三区视频 | 99视频免费在线观看 | 色婷婷狠 | 天天干夜夜爽 | 日韩欧美视频一区二区 | 国产伦理久久精品久久久久_ | 亚洲精品天天 | 中文字幕在线观看完整 | 午夜影院在线观看18 | 国产一级精品绿帽视频 | 国产精品观看 | www.久久久.com | 亚洲伦理一区二区 | 欧美国产日韩一区 | 国产性xxxx | www免费看 | 久久五月网 | 最新中文字幕在线播放 | 日韩欧美高清免费 | 在线视频 精品 | 国产精品一区在线播放 | 美女一二三区 | 久久久精品 | 四虎影视成人永久免费观看亚洲欧美 | 免费观看午夜视频 | 成人一区二区三区在线 | 麻花天美星空视频 | 欧美成人亚洲成人 | 精品久久1 | 日日夜夜人人天天 | 国产高清视频在线观看 | 国产精品黄 | 五月婷婷一区二区三区 | 久久精品综合网 | 国产精品久久久久久久免费观看 | 中文字幕免 | 91av视频免费在线观看 | 婷婷九月激情 | 丁香五月亚洲综合在线 | 99国产在线 | 99精品视频免费观看视频 | 黄色一级免费 | 亚洲国内在线 | 精品视频成人 | 国产精品一区二区三区在线 | 91探花视频| 一本之道乱码区 | 91亚洲精品久久久蜜桃借种 | 91看片淫黄大片在线播放 | 探花系列在线 | 国产精品每日更新 | 国产人免费人成免费视频 | 一二三久久久 | 五月婷婷激情五月 | 一本大道久久精品懂色aⅴ 五月婷社区 | www.综合网.com | 在线免费观看国产视频 | 欧美日本一区 | 三级黄色三级 | 欧美综合久久 | 久久亚洲免费视频 | 国产精品毛片完整版 | 丰满少妇麻豆av | 日狠狠| 国产亚洲在线 | 911亚洲精品第一 | av中文字幕网站 | 国产精品丝袜在线 | 在线看片91 | 久久免费在线视频 | 日韩欧美成人网 | 亚洲最大激情中文字幕 | 亚洲一区二区三区四区在线视频 | 日韩电影在线一区 | 精品久久网 | 中文字幕高清av | av色一区 | 五月天视频网站 | 91精品日韩 | 最新日韩在线观看 | 成人久久18免费 | 免费在线观看污网站 | 国内外激情视频 | 成人欧美亚洲 | 成人免费在线网 | 亚洲国产精品500在线观看 | 综合色伊人 | 97超碰成人在线 | 91精品国产92久久久久 | 日本精品久久久久久 | 色吊丝在线永久观看最新版本 | www免费网站在线观看 | 最新av免费在线 | 久久毛片网 | 黄色a视频免费 | 亚洲最大在线视频 | 国产精品毛片久久久久久久久久99999999 | 香蕉成人在线视频 | 日韩欧美在线观看一区二区 | 一级片色播影院 | 成年人在线观看免费视频 | 日韩中文字幕免费看 | 免费a一级 | 国产成年免费视频 | 热久久免费国产视频 | 精品自拍sae8—视频 | 在线观看黄色国产 | 国产97视频 | 免费在线播放 | 天天操婷婷 | 日韩电影在线观看一区 | 国产精品mv在线观看 | 国产一级性生活视频 | 国产精品视频专区 | 久久国产免费视频 | av中文天堂 | 午夜视频福利 | 亚洲成人精品在线 | 色婷婷伊人 | 91视频成人免费 | 国产精品久久久久久久久久久免费看 | 日韩视频1区 | 色视频国产直接看 | 婷婷在线免费观看 | 999久久久国产精品 高清av免费观看 | www.五月天婷婷.com | 国产精品久久久久av | 久久精品一 | 欧美少妇xxx| 国产在线观看二区 | 女人18毛片a级毛片一区二区 | 免费网站在线观看人 | 日韩二区三区 | 久久精品99国产精品 | 日韩欧美高清在线 | 欧美激情精品久久久 | 午夜成人免费影院 | 91大神精品视频在线观看 | 成全在线视频免费观看 | 激情深爱| 亚洲一二三在线 | 久久久精品电影 | 999成人| 国产不卡网站 | 免费观看av网站 | 久久99国产精品 | 五月天中文字幕 | 国内精品久久久久久久影视简单 | 综合色亚洲 | 欧美日韩免费观看一区=区三区 | 国产视频综合在线 | 久久成人免费电影 | 91亚洲精品久久久蜜桃 | 国产精品久久久久影院 | 二区三区中文字幕 | 国产精品久久久久999 | 久久不卡av | 免费99| 国产精品久久久久久久久久久久午夜 | 久久99国产综合精品免费 | 欧美精品久久 | 欧美日韩精品在线一区二区 | 久久精品99国产国产精 | 免费三级av | 天堂在线视频免费观看 | 黄色小说18 | 欧美日韩在线精品一区二区 | 久久久久久综合网天天 | 日韩,中文字幕 | 91在线精品秘密一区二区 | 中文字幕亚洲情99在线 | 欧美日韩在线视频免费 | 欧美色一色 | 日av免费| 婷婷国产精品 | 婷婷丁香色 | 日韩成人精品在线观看 | 毛片随便看 | 中文理论片 | 日韩精品中文字幕在线观看 | 丰满少妇在线观看网站 | 成人教育av | 中文字幕在线视频精品 | 欧美精品小视频 | 日本特黄特色aaa大片免费 | 国产一区二区三区高清播放 | 波多野结衣在线观看一区二区三区 | 国产精品色婷婷 | 日本午夜在线观看 | 国产精品久久久久久模特 | 久久手机精品视频 | 81精品国产乱码久久久久久 | 成年人免费观看国产 | 精品视频免费播放 | 九九热只有这里有精品 | av在线播放中文字幕 | 黄网在线免费观看 | 国产成人精品在线观看 | 久久成人综合 | 最新婷婷色 | 久久久久久久毛片 | 日韩免费一区二区三区 | 色在线免费观看 | 久久在线免费视频 | 久久经典视频 | 在线91色 | 亚洲综合一区二区精品导航 | 999在线精品 | 黄色小说视频网站 | 国产精品系列在线观看 | 操操操干干干 | 日本在线观看视频一区 | 国产婷婷久久 | 天天久久综合 | 婷婷色综合 | 黄色毛片视频免费观看中文 | 午夜精品av | 欧美精品午夜 | 玖玖视频 | 日韩视频中文字幕在线观看 | 黄色av在| 黄色国产在线观看 | 日本韩国精品一区二区在线观看 | 骄小bbw搡bbbb揉bbbb | 91成熟丰满女人少妇 | 久久久国产影院 | 天堂网av 在线 | 成人蜜桃| 91大神精品视频 | 五月婷婷播播 | 成人午夜在线电影 | 免费看污网站 | 日韩精品一区二区在线视频 | 高清av免费观看 | 免费视频三区 | 天天干天天色2020 | 成片视频在线观看 | 久久综合色综合88 | 午夜视频色| 中文字幕久久精品一区 | 在线免费看黄网站 | 香蕉视频免费在线播放 | 精品国产乱码 | 最近中文字幕在线 | 麻豆mv在线观看 | 天天操夜夜想 | 亚洲精品电影在线 | a在线免费观看视频 | 成人a免费视频 | 免费看的黄色的网站 | 成人app在线免费观看 | 亚洲夜夜网 | 婷婷丁香花| 日日夜夜骑 | 午夜黄色 | 在线看成人| www.av免费观看| 亚洲另类久久 | 九七视频在线 | 99精品视频在线播放观看 | 黄色精品一区 | 国产中文字幕一区二区三区 | 天天插综合 | 伊人婷婷综合 | 久久综合色播五月 | 国产精品女视频 | 日韩网站在线观看 | 色a在线观看 | 成人av免费网站 | 黄色网址中文字幕 | 成人免费在线观看入口 | 欧美一区二区三区在线视频观看 | 国产精品免费观看视频 | 中文字幕在线网址 | 99精品视频免费在线观看 | 激情五月色播五月 | 免费电影一区二区三区 | 正在播放国产一区二区 | 三日本三级少妇三级99 | 久久一区国产 | 久草精品视频在线播放 | avove黑丝| 久久久影片| 九九免费在线观看视频 | 在线视频日韩一区 | 亚洲成成品网站 | 亚洲91视频| 97在线免费观看 | 国产九九热| 超碰99人人 | 久久国产综合视频 | 成人aⅴ视频 | 国产黄色免费看 | 久久国产欧美日韩 | 日本精品视频免费观看 | 国产成本人视频在线观看 | 精品国产一区二区三区在线观看 | 国产四虎影院 | 婷婷色婷婷 | 精品伊人久久久 | 精品视频资源站 | 亚洲国产资源 | 国产一卡二卡在线 | 久久久三级视频 | 婷婷激情5月天 | 日韩黄色一区 | 三级av在线播放 | 麻豆91小视频 | 亚洲精品免费在线 | 欧美激情片在线观看 | 麻豆免费精品视频 | 97视频免费在线观看 | 国产精品免费久久久 | 色鬼综合网 | 国产午夜三级一区二区三桃花影视 | 国产三级视频在线 | 高清av免费观看 | 色网站中文字幕 | 中文字幕乱在线伦视频中文字幕乱码在线 | 中文字幕高清在线播放 | 西西4444www大胆艺术 | 天天操天天色天天射 | 国产69精品久久久久久久久久 | 视频在线观看一区 | 性色va| 亚洲中字幕 | 久久久久久久av麻豆果冻 | 免费福利在线视频 | 免费视频在线观看网站 | 最近中文字幕在线播放 | 国产视频一二区 | 日韩av不卡在线观看 | 免费h精品视频在线播放 | 亚洲精品激情 | 在线网站黄 | 午夜影视剧场 | www.99久久.com | 天天插综合网 | 中文区中文字幕免费看 | 人人操日日干 | 国产伦精品一区二区三区… | 午夜精品视频福利 | www.五月婷 | 在线观看中文字幕网站 | 高清久久久 | 在线观看成人国产 | 亚洲精品国产视频 | 字幕网在线观看 | 日韩视频在线不卡 | 亚洲视频在线免费看 | 18国产精品白浆在线观看免费 | 69久久久 | 国产精品永久久久久久久www | 中文字幕一区av | 国产一线在线 | 91精品国产综合久久福利不卡 | 丰满少妇在线观看 | 国产黄色精品视频 | 粉嫩aⅴ一区二区三区 | 亚洲天堂自拍视频 | 国产一区二区高清视频 | 在线小视频 | 激情视频免费观看 | 国产一区二区播放 | 欧美孕妇与黑人孕交 | 中文字幕av全部资源www中文字幕在线观看 | 91中文字幕网 | 色午夜影院| 欧美日韩精品区 | 国产精品自产拍在线观看 | 欧美了一区在线观看 | 国产人在线成免费视频 | 黄色av一级片 | 超黄视频网站 | 精品亚洲免a | 粉嫩av一区二区三区四区在线观看 | 久久午夜影院 | 日批视频 | 久久 亚洲视频 | 亚洲精品在线观看免费 | 四虎在线观看网址 | 国产又粗又硬又爽的视频 | 最新真实国产在线视频 | 操高跟美女 | 欧美日韩国产页 | 国产黄色播放 | 黄色小说视频网站 | 国产尤物一区二区三区 | 亚洲精品国产第一综合99久久 | 国产一区二区久久精品 | 精品欧美乱码久久久久久 | 国产麻豆成人传媒免费观看 | 中文字幕黄网 | 日韩影片在线观看 | 国产精品中文在线 | 国产色区| 在线黄色国产 | 美女黄频在线观看 | 久草国产精品 | 五月天综合在线 | 91一区二区三区久久久久国产乱 | 国产精品久久久久久a | 九九久久在线看 | 激情五月网站 | 亚洲天堂va | 91久久丝袜国产露脸动漫 | 午夜久久久久久久久久久 | 在线免费观看的av网站 | 亚洲无人区小视频 | 黄色免费大片 | 国产亚洲视频在线观看 | 亚洲国产中文字幕在线视频综合 | 国产在线一线 | 国产性xxxx | 午夜视频免费在线观看 | 在线成人短视频 | av片在线观看免费 | 最近免费中文字幕大全高清10 | 国产xxxx做受性欧美88 | 婷婷丁香激情综合 | 日韩精品中文字幕在线不卡尤物 | 人人dvd | 一区二区三区动漫 | 超碰免费成人 | 亚洲视频高清 | 午夜黄色影院 | 久久精品激情 | 天天操偷偷干 | 亚洲国产精品一区二区尤物区 | 日韩av片无码一区二区不卡电影 | av黄免费看 | 久久久精品亚洲 | 91欧美日韩国产 | 国产在线视频导航 | 欧美性性网 | 在线视频亚洲 | 高清久久久 | 国产精品久久久久四虎 | 成人羞羞视频在线观看免费 | 天天草天天草 | www.夜夜操.com| 国产成人综 | a黄色影院 | 一区二区国产精品 | 伊人永久 | 91视频在线自拍 | 91久久精品一区 | 久久久久久久久久影视 | 91精品中文字幕 | 亚洲最新在线视频 | av在线精品 | 久久久国产精品一区二区三区 | 久色网| 欧美成a人片在线观看久 | a在线播放 | 天天伊人网 | 久久夜色电影 | 欧美日韩午夜 | 91福利社在线观看 | 欧美天堂视频在线 | 亚洲一区二区视频在线播放 | 免费中文字幕视频 | 日韩久久久久久久久 | 亚洲麻豆精品 | h动漫中文字幕 | 国产欧美精品一区二区三区四区 | 久久久国产影视 | 国产热re99久久6国产精品 | 国产一级大片在线观看 | 久久精品成人 | 9在线观看免费高清完整版 玖玖爱免费视频 | 欧美日韩国产综合一区二区 | av资源在线看 | 日p视频 | 亚洲精品国产精品国自 | 91成人黄色 | 天天操天天干天天综合网 | 天堂网av 在线 | 久久你懂的 | 亚洲一区二区三区四区在线视频 | 亚洲国产成人在线 | 亚洲综合欧美精品电影 | 久久精品中文字幕一区二区三区 | 五月花激情 | 99久久精品无码一区二区毛片 | 国产福利精品在线观看 | 国内小视频在线观看 | 日本三级香港三级人妇99 | 免费国产一区二区视频 | 在线岛国av | 超碰资源在线 | 麻豆视频免费播放 | 99在线热播精品免费 | 色av色av色av| 国产精品6999成人免费视频 | 色夜影院| 久久国产视频网 | 国产一区二区三区黄 | a极黄色片| 麻豆视频在线观看免费 | 婷婷精品国产一区二区三区日韩 | 国产精品专区h在线观看 | 欧美在线18 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 99中文在线 | av网址最新 | 99久久日韩精品免费热麻豆美女 | 国产韩国精品一区二区三区 | www178ccom视频在线| 91视视频在线直接观看在线看网页在线看 | 国产视频午夜 | 精品99在线 | 日日夜夜爱 | 国产精品mm | 最近中文字幕免费av | 久草在线资源视频 | 国产免费xvideos视频入口 | 粉嫩一二三区 | 国模视频一区二区三区 | 最近中文字幕大全中文字幕免费 | 久久99国产精品自在自在app | 久久污视频| 午夜在线看片 | 国产主播大尺度精品福利免费 | 黄色a大片 | 午夜视频黄 | 天天操夜夜操国产精品 | 亚洲午夜久久久久久久久电影网 | 久久久久亚洲精品男人的天堂 | 亚洲成人黄色 | 69国产盗摄一区二区三区五区 | 国产午夜精品免费一区二区三区视频 | 国产精品扒开做爽爽的视频 | 综合中文字幕 | 麻豆精品视频 | 91精品国产欧美一区二区成人 | 国产精品成人国产乱 | 手机看片福利 | 日本性高潮视频 | 精品一区二区三区四区在线 | 九九热av | 天天操天天能 | 久久免费片 | 亚洲日本国产 | 国产精品a成v人在线播放 | 日韩成人免费在线电影 | 国产不卡在线视频 | a黄在线观看 | 99免费看片 | 日本精品久久久久 | 玖玖国产精品视频 | 五月婷婷久久综合 | 日韩二三区 | 国产一区二区三区四区大秀 | 色.www| 在线成人欧美 | 超碰97在线人人 | 美女精品久久久 | www麻豆视频| 久久人操| 日韩免费观看视频 | 二区三区毛片 | 国产色视频123区 | 亚洲黄色小说网址 | 亚洲精品啊啊啊 | 96久久久| 久久超碰免费 | 久久字幕精品一区 | 国产精品美女毛片真酒店 | 黄色三级免费看 | 欧美日韩国产亚洲乱码字幕 | 日韩久久久 | 91综合久久一区二区 | 天天操天天干天天干 | 日韩成片 | 精品主播网红福利资源观看 | 最近最新mv字幕免费观看 | 午夜免费在线观看 | 国产大陆亚洲精品国产 | 中文在线免费观看 | 久久综合久久综合这里只有精品 | 久久精品人人做人人综合老师 | 国产黄大片在线观看 | 免费99精品国产自在在线 | 丁香视频全集免费观看 | 国产韩国精品一区二区三区 | 免费日韩电影 | 欧美激情综合五月色丁香 | 日韩高清免费无专码区 | 日韩精品亚洲专区在线观看 | 日韩另类在线 | 国产又黄又爽又猛视频日本 | 精品高清美女精品国产区 | 六月色婷| 久久综合桃花 | 西西大胆啪啪 | 超碰人人舔 | 国产香蕉97碰碰碰视频在线观看 | 国产一线天在线观看 | 看片网站黄色 | 免费视频国产 | 亚洲精品乱码久久久久久高潮 | 一级免费片 | 国产精久久久久久久 | 天天干天天干天天干天天干天天干天天干 | 91精品国产91久久久久 | 精品毛片在线 | 99精品国产一区二区 | 久久精品久久久久 | 国产精品一二 | 久久视频免费在线 | 国产在线视频在线观看 | 狠狠色丁香婷婷综合 | 视频三区| 久久国产精品小视频 | 亚洲va天堂va欧美ⅴa在线 | 91九色丨porny丨丰满6 | 黄色一二级片 | 日日夜夜精品免费观看 | 日韩精品视频一二三 | 成人午夜电影久久影院 | 久久久精品久久日韩一区综合 | 国产精品99久久久久久大便 | 激情五月婷婷激情 | freejavvideo日本免费 | 日韩视频图片 | 黄色资源在线观看 | 中文字幕免费不卡视频 | 亚洲中字幕 | 国产一区免费 | 96av在线| 黄色毛片观看 | 国产精品99蜜臀久久不卡二区 | 欧美日韩一区二区三区免费视频 | 91久久偷偷做嫩草影院 | 99综合久久 | 91麻豆精品91久久久久同性 | 夜又临在线观看 | 久久婷婷视频 | 一区二区三区视频在线 | 日韩理论影院 | 天天操天天摸天天爽 | 欧美在一区| 黄色大全在线观看 | 国产亚洲精品久久久久久无几年桃 | 欧美黑人xxxx猛性大交 | 国产精品视频永久免费播放 | 亚洲一区美女视频在线观看免费 | 亚洲综合激情网 | 国产精品21区 | 国产精品国产三级国产aⅴ入口 | 精品在线一区二区三区 | 久久精品男人的天堂 | 精品无人国产偷自产在线 | 天天天天综合 | 成人免费在线网 | 国产护士av| 国产玖玖精品视频 | 国产理论片在线观看 | 日b视频国产 | 国产高清在线免费视频 | 日韩精品一区二区三区免费观看视频 | 免费视频91蜜桃 | 手机色站 | 日韩乱码中文字幕 | 天天干人人插 | 在线va网站 | 国产黄色大全 | 久久久国产一区二区三区四区小说 | 国产成人一级电影 | 国产亚洲精品无 | 国产精品亚洲综合久久 | 狠狠色丁香婷婷综合最新地址 | 东方av在 | 国产精品99久久久久久人免费 | 国产免费人人看 | 久久免费成人精品视频 | 欧美黑人性猛交 | 久久精品久久久久 | 欧美久久精品 | 午夜视频一区二区 | 日韩美在线观看 | 国产99久久久国产精品成人免费 | 国产福利91精品张津瑜 | 国产99久久久国产 | 国产日韩欧美在线影视 | 亚欧日韩av | 免费观看国产精品 | 天天躁日日躁狠狠躁av麻豆 | 国产黄在线免费观看 | 国产91精品久久久久久 | 99高清视频有精品视频 | 国产在线观看你懂得 | 成人全视频免费观看在线看 | 91精品国产麻豆国产自产影视 | 亚洲一级国产 | 婷婷丁香色综合狠狠色 | 亚洲四虎在线 | 亚洲国产中文字幕在线 | 亚洲精品国产视频 | 色综合小说 | 91在线播 | 中文字幕一区2区3区 | 免费视频三区 | 99久久久久免费精品国产 | 日日爽天天爽 | 开心丁香婷婷深爱五月 | 国产麻豆果冻传媒在线观看 | 久久综合成人网 | 三级黄色a | 日韩最新中文字幕 | 亚洲一区二区三区精品在线观看 | 偷拍久久久 | 91丨九色丨国产在线观看 | 国产精品免费人成网站 |