久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

討論在線教室 iOS 端聲音問題綜合解決方案

瀏覽:131日期:2022-09-16 17:11:44
背景介紹

在線教室場景下,聲音是最重要的內容傳輸渠道之一,保障聲音的穩定可靠,是在線教室質量非常重要的一環。同時在線教室里許多功能模塊都與聲音有關聯,如何處理好各個模塊間的聲音沖突成為一個重要話題。

AVAudioSession

在 iOS 端,說到聲音的話題就繞不開 AVAudioSession。AVAudioSession 的作用是管理音頻這一唯一硬件資源的分配,通過調優合適的 AVAudioSession 來適配我們的 APP 對于音頻的功能需求。切換音頻場景的時候,需要相應的切換 AVAudioSession。

討論在線教室 iOS 端聲音問題綜合解決方案

 AVAudioSessionCategory

教育場景下主要使用到的音頻場景有:

討論在線教室 iOS 端聲音問題綜合解決方案

AVAudioSessionMode

iOS 提供 AVAudioSessionMode[1] 用于與 AVAudioSessionCategory[2] 搭配使用,教育場景下使用到的音頻模式主要有:

討論在線教室 iOS 端聲音問題綜合解決方案

 AVAudioSessionOptions

我們可以使用 options 去微調 Category 行為,教育場景下常用的有:

討論在線教室 iOS 端聲音問題綜合解決方案

通話音量與媒體音量

一般而言,通話音量指的是進行語音、視頻通話時的音量。媒體音量指的是播放音樂、視頻或游戲的音效、背景音的音量。

在實際使用中,兩者的差異在于,通話音量有較好的回聲消除,媒體音量有較好的聲音表現力。媒體音量可以調整到 0,而通話音量不可以。

通話音量與媒體音量只能二選一,因此需要區分系統音量走的是通話音量還是媒體音量。系統音量走通話音量,是指在設備上調整音量時,調整的是通話音量。媒體音量同理。媒體音量和通話音量分別屬于 2 個不同的、獨立的系統,一個設置不會影響到另外一個。

進入通話后,音效的播放音量由通話音量控制。退出通話后,則由媒體音量控制。一般在教育場景下,學生作為觀眾拉流時,使用的媒體音量,老師說話的聲音更加立體飽滿,當學生連麥時,使用的通話音量,以保證通話聲音的質量。

簡單來說,非連麥模式下會使用媒體音量控制,連麥模式下會使用通話音量控制,兩者有獨立的音量控制機制。

討論在線教室 iOS 端聲音問題綜合解決方案

當播放媒體資源時,使用播放器(如 AVPlayer)播放音頻,播放器底層 AudioUnit 的 description 為 VoiceProcessingIO。

RTC SDK 內部維護了一個 AudioUnit,通話音量下 AudioUnit 的 description 為 RemoteIO,媒體音量下為 VoiceProcessingIO,當出現模式切換時,會銷毀原來的 AudioUnit,再創建新的 AudioUnit,始終保持一個 AudioUnit 來進行音頻播放。

通話音量下,AVPlayer 內 VoiceProcessingIO 的 AudioUnit 聲音會被抑制。同樣的,在媒體音量下,RTC SDK 內的 AudioUnit 的 description 設置為 VoiceProcessingIO,如果此時其他模塊通過設置 AVAudioSession 切換到通話音量,RTC 的聲音也會被抑制。

行業現狀

在線教室場景下,很多功能都需要播放聲音,包括課中音視頻直播、課后回放、webview 內嵌課件聲音(包括音頻、視頻、音效)、課堂音頻、課堂視頻、課堂游戲聲音、音效聲音等。除此之外,教室內還包括很多需要聲音錄制的功能,包括連麥、跟讀、集體發言、聊天語音輸入、語音識別等。

教室內這些功能存在各種組合,且對 AVAudioSession 的設置要求存在差異,而 AVAudioSession 又是一個單例,如果沒有一個統一管理的邏輯,很容易就出現設置混亂的問題。

目前行業內碰到的比較多的問題主要是聽不見 RTC 聲音與媒體聲音被抑制。

聽不見 RTC 聲音

聽不見 RTC 聲音的主要原因是其他功能在設置 AVAudioSession 時,AVAudioSessionOptions 未包含 AVAudioSessionCategoryOptionMixWithOthers 混音模式,導致 RTC 聲音被高優進程打斷。比如在非混音模式下播放 webview 的內嵌音頻,因為 webview 是使用系統進程來播放聲音,優先級最高,所以 APP 進程下的 RTC 聲音就會被抑制導致無法正常發聲。

這類問題一般都比較隱蔽,因為簡單的場景如果有問題,在上線之前一般都能測試出來,而當多個功能場景串起來之后才觸發問題,往往就很難在測試期間發現,且如果線上沒有完備的日志查詢體系,針對線上這類問題排查起來難度也非常大,往往因為定位不到原因而長期遺留。

媒體聲音被抑制

在通話音量模式下,媒體聲音會被壓低,導致聲音變小。比較常見的場景是在小班場景下,學生在推流時播放課堂音視頻等媒體資源,聲音會比 RTC 的聲音要小,導致媒體聲音聽不清楚。

通話模式下(連麥時)媒體聲音會被壓低,原因是 iOS 手機系統會開啟回聲消除以保證人聲體驗,因此會壓低媒體通道的聲音,也會壓低背景音效。

教育行業內部分頭部 APP 也沒有從根本上解決該問題,很多都是通過從產品功能層面上規避問題,通過產品妥協來為技術問題讓步。比如在播放課堂音視頻資源時,默認將所有學生都強制關麥,關麥時學生處于媒體音量,就不存在被壓低的問題了,等到課堂音視頻播放結束后,再允許學生開麥。這種通過規避問題場景來解決問題的方式,不具有可復制性。

RTC 聲音變小

RTC 聲音變小,主要原因是聲音通過聽筒發聲,而沒有正常通過揚聲器發聲,造成聲音變小的假象。另外在 iOS14 系統下,使用過 RTC 的通話模式并切回媒體模式后,再調用 setCategory:PlayAndRecord + DefaultToSpeaker 就會必現聲音小的問題。

解決方案

針對上述行業痛點,通過底層原理的分析與實際項目經驗,從代碼規范、問題兜底、問題報警梳理出一套可行的解決方案。

聽不見 RTC 聲音、RTC 聲音變小

RTC 的聲音問題基本是因為其他模塊功能對 AVAudioSession 進行了更改,且在功能結束之后,也沒有將 AVAudioSession 重置到 RTC 需要的設置。本身音視頻 SDK(如 agora、zego 等)對這種情況會有一定的兜底邏輯,但是這種兜底如果存在侵入性,也是不合理的,因此具有一定的局限性。

AudioSession 修改規范

由于系統無法區分同一個進程中是哪個模塊對 AudioSession 進行了更改,所以為了避免聽不見 RTC 聲音的問題,在使用 RTC 時,其它模塊對 AudioSession 的調用更改,需要遵循以下原則:

模塊調用 setCategory 前先判斷下,當前 AudioSession 如已滿足使用需要,不用再次設置,避免觸發 iOS 14 系統 Bug 模塊需要錄音時,Category 應該使用 PlayAndRecord(為了防止打斷正在播放的音頻,不要使用僅錄音的 CategoryRecord),當前 category 不是 PlayAndRecord 的情況下再調用 setCategory 模塊僅需要播放時,當前 category 為 PlayAndRecord 或 Playback、Ambient 的情況下不需要 setCategory 若當前的 category 不滿足模塊使用,在 setCategory 之前應該先保存當前的 AudioSession 狀態,然后再 setCategory、使用音頻功能,使用結束后,應該重新 setCategory 恢復到之前的 AudioSession 狀態 在設置 audioSession 時,categoryOptions 都應該包含 AVAudioSessionCategoryOptionDefaultToSpeaker 與 AVAudioSessionCategoryOptionMixWithOthers,iOS10 系統及以上還應包含 AVAudioSessionCategoryOptionAllowBluetooth。

核心代碼如下:

//需要錄音時,AudioSession的設置代碼如下:if ([AVAudioSession sharedInstance].category != AVAudioSessionCategoryPlayAndRecord) {            [RTCAudioSessionCacheManager cacheCurrentAudioSession];            AVAudioSessionCategoryOptions categoryOptions = AVAudioSessionCategoryOptionDefaultToSpeaker | AVAudioSessionCategoryOptionMixWithOthers;            if (@available(iOS 10.0, *)) {                categoryOptions |= AVAudioSessionCategoryOptionAllowBluetooth;            }            [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:categoryOptions error:nil];            [[AVAudioSession sharedInstance] setActive:YES error:nil];} //功能結束時重置audioSession[RTCAudioSessionCacheManager resetToCachedAudioSession];

static AVAudioSessionCategory cachedCategory = nil;static AVAudioSessionCategoryOptions cachedCategoryOptions = nil; @implementation RTCAudioSessionCacheManager //更改audioSession前緩存RTC當下的設置+ (void)cacheCurrentAudioSession {    if (![[AVAudioSession sharedInstance].category isEqualToString:AVAudioSessionCategoryPlayback] && ![[AVAudioSession sharedInstance].category isEqualToString:AVAudioSessionCategoryPlayAndRecord]) {        return;    }    @synchronized (self) {        cachedCategory = [AVAudioSession sharedInstance].category;        cachedCategoryOptions = [AVAudioSession sharedInstance].categoryOptions;    }} //重置到緩存的audioSession設置+ (void)resetToCachedAudioSession {    if (!cachedCategory || !cachedCategoryOptions) {        return;    }    BOOL needResetAudioSession = ![[AVAudioSession sharedInstance].category isEqualToString:cachedCategory] || [AVAudioSession sharedInstance].categoryOptions != cachedCategoryOptions;    if (needResetAudioSession) {        dispatch_async(dispatch_get_global_queue(0, 0), ^{            [[AVAudioSession sharedInstance] setCategory:cachedCategory withOptions:cachedCategoryOptions error:nil];            [[AVAudioSession sharedInstance] setActive:YES error:nil];            @synchronized (self) {                cachedCategory = nil;                cachedCategoryOptions = nil;            }        });    }} @end兜底策略

考慮到在線教室場景的復雜度,讓教室內所有功能代碼都遵循 AVAudioSession 的修改規范,雖然有嚴格的 codeReview,但是也存在一定的人為因素風險,隨著業務功能不斷迭代,無法完全保證線上不出問題,因此一套可靠的兜底策略顯得非常有必要。

兜底策略的基本邏輯是 hook 到 AVAudioSession 的變化,當各模塊對 AVAudioSession 的設置不符合規范要求時,我們在不影響功能的前提下強制進行修正,比如對 options 補充上混音模式。

通過方法交換我們可以 hook 到 AVAudioSession 的更改。比如用 kk_setCategory:withOptions: error: 與系統的 setCategory:withOptions: error: 進行交換,在交換的方法里,我們判斷 options 是否包含 AVAudioSessionCategoryOptionMixWithOthers,如果沒有包含我們就進行追加。

- (BOOL)kk_setCategory:(AVAudioSessionCategory)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError {    //在需要進行對audioSession進行修正的場景下(RTC直播),修改options時未包含mixWithOther,則給options追加mixWithOther    BOOL addMixWithOthersEnable = shouldFixAudioSession && !(options & AVAudioSessionCategoryOptionMixWithOthers)];    if (addMixWithOthersEnable) {        return [self kk_setCategory:category withOptions:options | AVAudioSessionCategoryOptionMixWithOthers error:outError];;    }    return [self kk_setCategory:category withOptions:options error:outError];}

但上述方法只對通過調用 setCategory:withOptions: error: 來設置 audioSession 有效,如果調用了 setCategory:error: 來更改 audioSession,則會造成調用死循環的問題。在 iOS 底層實現中,調用 setCategory:error: 時,內部會再調用 setCategory:withOptions: error: 方法,因為進行了方法交換,從而出現嵌套調用問題。

針對該問題,我們通過監聽 AVAudioSessionRouteChangeNotification 通知,來 hookcategory 的變化,AVAudioSessionRouteChangeNotification 在調用 setCategory:error: 時會觸發,而不會在調用 setCategory:withOptions: error: 時直接觸發,進而與上述方法形成了很好的互補。

 //添加對AVAudioSessionRouteChange的監聽[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRouteChangeNotification:) name:AVAudioSessionRouteChangeNotification object:nil]; - (void)handleRouteChangeNotification:(NSNotification *)notification {  NSNumber* reasonNumber =      notification.userInfo[AVAudioSessionRouteChangeReasonKey];  AVAudioSessionRouteChangeReason reason =      (AVAudioSessionRouteChangeReason)reasonNumber.unsignedIntegerValue;    if (reason == AVAudioSessionRouteChangeReasonCategoryChange) {        AVAudioSessionCategoryOptions currentCategoryOptions = [AVAudioSession sharedInstance].categoryOptions;        AVAudioSessionCategory currentCategory = [AVAudioSession sharedInstance].category;        //在需要進行對audioSession進行修正的場景下(RTC直播),修改category時options未包含mixWithOther,則給options追加mixWithOther        if (shouldFixAudioSession  && !(currentCategoryOptions & AVAudioSessionCategoryOptionMixWithOthers)) {            [[AVAudioSession sharedInstance] setCategory:currentCategory withOptions:currentCategoryOptions | AVAudioSessionCategoryOptionMixWithOthers error:nil];        }    }}報警機制

即使有修改規范與兜底策略的保障,隨著教室業務迭代與 iOS 系統升級,也無法保證線上完全不出問題,因此我們建立了問題報警機制,當線上出現問題時,能在工作群里及時收到警報,根據警報的問題信息,通過日志進一步排查問題。通過報警機制,我們可以更快速的對線上問題作出反應,不被動依賴于學生的投訴反饋,以最快的速度推進問題解決。

當 RTC 聲音被打斷時,底層音視頻 SDK 會回調警告錯誤碼(如 agora 的 warningCode 為 1025),當出現對應的警告碼時,結合 slardar 的報警功能,在飛書群里以消息的形式進行同步。同時在 hook 到 AVAudioSession 的變更時,通過獲取堆棧信息,可以定位到是哪個模塊觸發的更改,結合報警用戶信息,可以更方便的定位問題。

媒體聲音被抑制

媒體聲音在媒體音量下開啟播放,播放途中因為連麥而切換到了通話音量,此時因為系統特性,媒體音量會被通話音量抑制而導致聲音變小。

針對該問題,我們使用音視頻 SDK 提供的混音、混流功能來規避。基本原理是播放媒體資源時,我們拿到資源的 pcm 音頻數據,將數據拋給 RTC 的 audioUnit 進行混合,由 RTC 音頻播放單元統一播放,如果此時 RTC 使用的是通話音量,則媒體資源也是使用的通話音量播放,反之亦然。以此來保證媒體資源與 RTC 始終保持統一的音量控制機制,而避免聲音大小存在差異。

混音是指給到音頻的本地文件路徑,或者播放的 url,由 SDK 進行數據讀取與播放。混流是指針對視頻文件,播放器只解碼播放視頻數據,將音頻數據實時拋出來給到 SDK,SDK 將傳入的實時音頻數據與 RTC 音頻數據進行混合與播放。項目中我們使用點播 SDK TTVideoEngine 來實現視頻播放與音頻外拋。

總結

通過上線上述綜合解決方案,聲音問題得到了有效的解決,同時也能從容應對快速迭代的教室需求,有效提升了在線教室的體驗。

到此,這篇關于討論在線教室 iOS 端聲音問題綜合解決方案的文章就介紹到這了,更多相關在線教室IOS端聲音解決方案內容,請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持好吧啦網!

標簽: IOS
相關文章:
主站蜘蛛池模板: 欧美日韩精品一区 | 五月婷婷综合久久 | 国产精品第一区第27页 | a在线播放 | 日日爱999| 91精品一区二区三区久久久久久 | 久久精品国产亚洲精品 | 国产精品无码永久免费888 | 美欧一级片 | 黄色大片在线 | 中文字幕视频在线 | 国产成人精品免高潮在线观看 | 国产精品一区二区无线 | 黄色在线| 日韩一级免费观看 | 国产精品视频入口 | 日本一区二区三区免费观看 | 国产一区av在线 | 国产精品视频免费 | 中国妞xxxhd露脸偷拍视频 | 亚洲乱码一区二区三区在线观看 | 91精品国产91久久综合桃花 | 亚洲欧美日韩在线一区二区 | 亚洲视频中文字幕 | 日韩在线播放一区 | 亚洲视频中文字幕 | 日韩激情一区二区三区 | 久草电影网 | 精品国产一区二区三区在线观看 | 欧美一级免费在线观看 | 国产一级视频 | 亚洲精品乱码久久久久久不卡 | 日韩视频免费在线观看 | 四虎永久免费影视 | 亚洲午夜精品一区二区三区 | www.狠狠干 | 亚洲国产天堂久久综合 | 欧美日韩综合视频 | 国产精品美女www爽爽爽动态图 | 中文字幕国产 | 亚洲一区中文字幕在线观看 | 97精品久久 | 亚洲自拍偷拍av | 欧美精品一区自拍a毛片在线视频 | 日韩欧美在线观看 | 成人午夜毛片 | 九九九色 | a√免费视频 | 黄色免费在线观看 | 国产欧美日韩综合精品一区二区 | 久久国产精品久久 | 好看的一级毛片 | 欧美一区二区三区电影 | ririsao久久精品一区 | 一级日韩片| 久久人| 国产二区免费 | 国产一二区在线 | 婷婷丁香激情网 | 高清av网站| 欧美一区二区三区在线观看视频 | cao视频| 日本免费三片免费观看 | 欧美午夜精品久久久久久人妖 | 国产精品久久久久久久粉嫩 | 手机久久看片 | 懂色中文一区二区在线播放 | 中文字幕亚洲欧美精品一区四区 | 欧美二区三区 | 99精品全国免费观看视频软件 | 中文字幕精品一区二区三区精品 | 日韩欧美一级精品久久 | 羞羞视频免费观看网站 | 一级毛片观看 | 精品久久久久国产免费 | 日本黄色大片 | 精品99免费 | 久久中文字幕视频 | 日韩欧美在线播放 | 一级片黄色免费 | 欧美精品在欧美一区二区少妇 | 视频一区在线 | 高清av一区 | 国产在线小视频 | 毛片免费观看视频 | 午夜免费视频 | 国产欧美在线视频 | а天堂中文最新一区二区三区 | 性色爽爱 | 亚洲精品成人悠悠色影视 | 中文字幕精品视频在线观看 | 成人精品久久久 | www.久久99| 337p日本粉嫩噜噜噜 | 免费看的黄网站 | 中文字幕成人在线 | 欧美国产一区二区 | 亚洲人成网站999久久久综合 | 亚洲色图综合 | 蜜桃视频网站在线观看 | caoporn视频| 成人久久久精品乱码一区二区三区 | 国产福利免费视频 | 久久精品久久久久电影 | 日本99精品| 激情欧美一区 | 国产欧美日韩一区二区三区 | 欧美1区 | www.国产精品| 欧美xxxxxx视频 | 国产一区在线观看视频 | 91av国产精品 | 日韩视频中文字幕在线观看 | 黄色影视网址 | 成人亚洲一区 | 69日影院 | 日韩一区二区在线免费 | 成人av一区二区三区 | 亚洲欧美一区二区精品中文字幕 | 涩涩综合 | 天天夜碰日日摸日日澡 | 日本午夜在线 | 欧美激情精品久久久久久 | 91精品久久久久久久久久 | 日韩精品一区二区三区中文在线 | 欧美日韩亚洲国产 | 91精品国产综合久久福利软件 | 国产3区 | 欧美高潮| 国产中文字幕在线 | 欧美日日干 | 999国产在线观看 | 久久久精品视频免费观看 | 国产精品欧美一区二区三区不卡 | 午夜a v电影 | 91看片网 | 武道仙尊动漫在线观看 | 欧美一区在线看 | 欧美精产国品一二三区 | 国产成人精品高清久久 | 中文字幕av一区二区 | 97超碰在线免费 | 久久久精品一区二区 | 91网站在线看 | 国内自拍网站 | 日韩一级片| 国产精品久久久久久久久久免费看 | 亚洲综合影院 | 欧美国产日韩一区 | 久久午夜影院 | 久久男人天堂 | 成人在线一区二区三区 | 91高清视频 | 精品成人在线 | 婷婷色国产偷v国产偷v小说 | 亚洲精品久久久狠狠狠爱 | 爱免费视频 | 亚洲欧美日韩另类一区二区 | 国产在线视频网 | 亚洲欧美综合 | 杨门女将寡妇一级裸片看 | 亚洲国产精品成人 | 太子妃好紧皇上好爽h | 成人国产精品久久久 | 国产毛片精品 | 青青草一区二区三区 | 久热av中文字幕 | 久久精品色欧美aⅴ一区二区 | 亚洲精品视频导航 | 国产精品视频专区 | 亚洲一区二区三区在线视频 | 青青久久北条麻妃 | 久久精品小视频 | 九色一区 | 99久久99 | 黄色毛片免费看 | 午夜久久久 | 亚洲一区二区在线 | 91在线视频免费观看 | 国产精品久久久久久久午夜 | 国产麻豆乱码精品一区二区三区 | www国产亚洲精品久久网站 | 免费毛片视频 | 亚洲成人一区 | 在线国产视频 | 91精品国产综合久久久久久丝袜 | 亚洲视频在线观看 | 日韩精品无码一区二区三区 | 成人激情视频在线播放 | 国产日韩av在线 | 国产精品视频专区 | 亚洲欧美综合 | 亚洲国产精品一区二区久久,亚洲午夜 | 国产91一区| 日韩中文在线视频 | 欧美日韩亚洲在线 | 一区二区日韩精品 | 久久精品免费视频观看 | 一级毛片在线免费看 | 欧美白人做受xxxx视频 | 国产欧美日韩综合精品一区二区 | 国产成人精品午夜视频' | 午夜在线小视频 | 日韩视频久久 | 精品久| 特级淫片女子高清视频在线观看 | 91精品国产91久久久久久黑人 | 亚洲精品天堂 | 欧美八区 | 久久久久国产精品免费免费搜索 | 高清国产一区二区三区四区五区 | 国产视频亚洲 | 国产免费一区二区三区四区五区 | 中文字幕亚洲一区 | 国产精品亚洲综合 | 欧美福利网| 中文字幕亚洲一区二区三区 | а天堂中文最新一区二区三区 | 天天爽夜夜爽夜夜爽精品视频 | 91在线免费视频 | 国产精品夜夜 | 日本在线播放 | 欧美午夜精品一区二区三区电影 | 久久久久成人精品 | 久久精品国产一区二区三 | 国产视频二区 | 亚洲一二视频 | 美女一区二区三区在线观看 | 久久一区二区三区四区 | 少妇久久久 | 国产一级片在线播放 | 日本免费www | 精品欧美一区二区在线观看视频 | 久草在线视频免费播放 | 午夜精品久久久久久久白皮肤 | 欧美精品免费在线观看 | 国产一区二区在线播放 | 国产高清自拍 | 日本不卡免费新一二三区 | 欧洲另类二三四区 | 老黄网站在线观看 | 日韩av在线不卡 | www.xxx在线观看 | 国产日韩精品一区 | 91se在线| 欧美成人黑人xx视频免费观看 | 国产精品不卡视频 | 国产亚洲精品精品国产亚洲综合 | 婷婷av在线| 久久久看片 | 亚洲国产视频一区 | 亚洲免费观看视频 | av免费网站在线观看 | 韩国精品视频在线观看 | 国产一区二区三区免费在线观看 | 国产精品国产精品国产专区不蜜 | 国产精品成人3p一区二区三区 | 成人av影院| 美女福利视频网站 | 91偷拍精品一区二区三区 | 久久精品欧美 | 久久亚洲天堂 | 午夜精品一区二区三区在线播放 | av中文字幕第一页 | 成人免费在线观看 | 99久久久国产精品 | 欧美一区二区三区 | 特级丰满少妇一级aaaa爱毛片 | 国产欧美一区二区 | 欧美午夜视频 | 欧美福利影院 | 99热精品在线 | 青青久久 | 亚洲一区二区三区四区五区中文 | 日韩免费一区二区 | 国产在线看h | 国产午夜精品一区二区三区免费 | 国产精品久久久久久久久久免费看 | 国产伦精品一区二区三区四区视频_ | 最新国产视频 | 国产网址在线 | 国产欧美一区二区三区在线看 | 中文字幕亚洲区 | 一级电影免费在线观看 | 日本在线一区二区 | 卡通动漫第一页 | 一区二区三区影院 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 日韩欧美一级二级 | 中文字幕在线视频免费播放 | 久久成| 福利视频网站 | 日韩精品一区二区三区中文在线 | 亚洲精品视频免费观看 | 一区二区日韩视频 | 国产黄色在线观看 | 精品三级在线观看 | 毛片一区二区三区 | 欧美国产一区二区 | 噜噜噜噜狠狠狠7777视频 | 亚洲www永久成人夜色 | 日本成人中文字幕 | 成人片在线播放 | 一本一本久久a久久精品综合妖精 | 九九热免费看 | 美女高潮久久久 | 天堂久久久久久 | 九九热在线免费视频 | 日韩特黄一级欧美毛片特黄 | 欧美精品成人在线视频 | 久久国产精品久久久久久 | 日韩午夜免费视频 | 日韩精品在线一区 | 日韩高清中文字幕 | 久久精品久久久 | hitomi一区二区三区精品 | 成人午夜电影在线 | 欧美视频免费看 | 亚洲一区在线日韩在线深爱 | av网战| 国产剧情一区二区 | 成人精品视频在线 | 亚洲精品一区二三区不卡 | 免费亚洲精品 | 日韩欧美国产精品综合嫩v 高清av网站 | 亚洲精品国产综合区久久久久久久 | 国产免费黄色 | 欧美黄色网 | 成人高清网站 | 欧美男人天堂 | 亚洲性人人天天夜夜摸 | 一区二区在线视频 | 亚洲精品久久久久久下一站 | 99精品久久 | 在线免费毛片 | 欧美日本韩国一区二区 | 欧美久久一区二区 | 成人小视频在线看 | 国产精品久久久久久久久久 | 国产日本韩国在线 | 久久com| 国产性一级片 | 伊人手机在线视频 | 成人h视频在线观看 | 蜜桃精品在线观看 | 亚洲一区二区三区四区在线观看 | 一级一级毛片 | 亚洲一区二区三区在线播放 | 久久一区二区三区四区 | 偷拍自拍第一页 | 99视频在线免费观看 | 欧美a v在线播放 | 久久蜜桃av一区二区天堂 | 精品在线播放 | 在线a级毛片 | 亚洲精选国产 | 中文字幕在线免费 | 九九精品免费视频 | 一区二区三区国产 | 新疆少妇videos高潮 | 欧美二区三区 | 国产区在线 | 91免费视频观看 | 好姑娘影视在线观看高清 | 欧美精三区欧美精三区 | 国产日韩视频 | 久草新免费 | 欧美一级免费 | 日本久久久一区二区三区 | 亚洲精品字幕 | 欧美午夜视频 | 成人a级网站 | 久久久久久国产精品 | 欧美日韩中文字幕 | 国产三级自拍 | 91在线区| 成人国产精品一级毛片视频 | 亚洲欧美一区二区三区在线 | 国产麻豆乱码精品一区二区三区 | 91最新| 四虎永久免费影视 | 久久免费精品视频 | 久久精品视频在线播放 | 欧美日韩一区二区在线 | 天天操天天摸天天干 | 激情五月婷婷在线 | 欧美日韩亚洲国产 | 亚洲精品综合 | 国产男女视频在线观看 | 久久亚洲精品中文字幕 | 在线久 | xvideos.蜜桃一区二区 | 国产精品久久久久久久久久久久久久久久 | 日本私人网站在线观看 | 欧美一区二区三区在线观看视频 | 国产91精品在线 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 日韩综合视频在线观看 | 国产精品久久久久久久久久久小说 | 一区二区在线影院 | 国产亚洲欧美一区二区 | 亚洲精品国产偷自在线观看 | 亚洲午夜精品 | 中国1级黄色片 | 久久国产成人 | 国产91九色 | 亚洲精品成人 | 国产欧美精品一区二区 | 国产精品视频一区二区三区, | 男人阁久久 | 天天操网| 美女福利网站 | 亚洲午夜精品久久久久久app | 精品日韩一区二区三区 | 精品久 | 亚洲免费视频网址 | 亚洲成人免费在线 | 国产欧美精品一区二区 | 成人av片在线观看 | www免费网站在线观看 | 久久成人一区二区 | 亚洲精品一区二区网址 | 国产在线精品一区 | 夜久久 | 免费av一区二区三区 | 亚洲欧美日韩在线一区二区三区 | 中文字幕高清视频 | 久久久久久久久久久亚洲 | 免费一区 | 夜操| 精久久久 | 亚洲精品二三区 | 亚洲欧洲一区二区 | 精品婷婷| 日韩午夜av| 91精彩视频在线观看 | 久久久免费视频播放 | 久久综合一区二区三区 | 亚洲精品国产电影 | 黄视频在线播放 | 国产香蕉97碰碰久久人人九色 | 免费观看h视频 | 中文在线一区 | 久免费视频 | 粉嫩高清一区二区三区精品视频 | 天天射美女| 亚洲一区在线视频 | 久久精品1区2区 | 亚洲精品乱码久久久久久金桔影视 | 亚洲欧美日韩在线 | 日韩欧美在线视频 | 欧美高清视频一区二区三区 | 亚洲精品乱码久久久久久蜜桃91 | 国产一区二区在线免费观看 | 欧美高清成人 | 久久白虎 | 精品国产一区二区三区久久影院 | 国产精品永久免费视频 | 色综合久久久久 | 69免费视频 | 亚洲精品视频在线 | 99综合在线| 日韩在线观看 | the蜜臀av入口| 午夜欧美一区二区三区在线播放 | 日韩欧美第一页 | 狠狠综合久久 | 国产三级毛片 | 久久国产成人 | 国产精品999 | 青草视频在线免费观看 | 四虎影院观看 | 国产一区二区三区久久久 | 午夜在线电影 | 伊人精品 | 福利网址 | 久久久精品免费观看 | 国产乱码精品一区二区三区忘忧草 | 日韩久久久一区二区 | 亚洲精品乱码久久久久久国产主播 | 一级视频在线观看 | 久久精品无码一区二区日韩av | 91精品国产综合久久久久久 | av免费网站 | www.福利视频 | 欧美一区二区三区免费 | 亚洲免费视频在线观看 | 999久久久国产999久久久 | 黄色片在线 | 国产高清一区二区三区 | 99视频网站| 国产一级一级片 | 国产一区二区精品丝袜 | 午夜精品影院 | 99国产精品 | 美女毛片 | 亚洲深深色噜噜狠狠网站 | 亚洲一区视频网站 | 国偷自产av一区二区三区 | 精品一区二区久久 | 欧美自拍视频 | 四虎黄色网 | 国产99久久 | 久草精品视频 | 日本欧美一区二区 | 国产亚洲视频在线 | 亚洲精品久久久久久国产精华液 | 国产精品日韩欧美一区二区三区 | 成人影院在线 | 天堂资源网 | 亚洲aⅴ天堂av在线电影软件 | www.日韩.com| 毛片免费观看视频 | 99热精品国产 | 久久精选视频 | 成人av片在线观看 | 成人免费网站www网站高清 | 亚洲精品久久久久久一区二区 | 精品久久久久久国产 | 午夜视频网站 | 欧美日一区二区 | 精品国产仑片一区二区三区 | 国产欧美日韩综合精品 | 涩涩综合 | 天天爽天天干 | 久久久噜噜噜www成人网 | 羞羞视频在线观看入口 | 太子妃好紧皇上好爽h | 久久成人精品 | 日韩在线中文字幕视频 | 亚洲国产成人av好男人在线观看 | 高清成人 | 国产成人一级片 | 午夜影视在线观看 | 中文在线播放 | 免费黄色在线看 | 99久久精品免费看国产一区二区三区 | 麻豆视频91 | 美国黄色毛片女人性生活片 | 国产亚洲精品久久久456 | 亚洲一区精品在线 | 欧美综合一区二区 | 欧美日韩精品久久久 | 色先锋影音 | 国产91 在线播放 | 视频1区2区 | 日韩一日| 亚洲第1页| 婷婷在线视频 | 亚洲国产高清高潮精品美女 | 黄色骚片| 日韩高清一区二区 | 日韩美女av在线 | 黄色电影天堂 | 丁香六月av | 精品国产欧美一区二区三区成人 | 在线碰 | 国产一级片免费观看 | 亚洲天堂久久 | 日韩视频精品在线 | 97久久久| 亚洲人成人一区二区在线观看 | 91精品麻豆日日躁夜夜躁 | 日韩视频在线一区 | 成人黄色av | 欧美视频在线播放 | 精品视频在线观看一区二区三区 | 久久大陆 | 精品久久久久久久久久久久 | 久草.com| 免费大片黄在线观看 | 99re视频在线 | 久久综合91| 中文字幕乱码亚洲精品一区 | 午夜三级在线 | 欧美一区永久视频免费观看 | 精品一区二区三区久久 | 国产视频第一页 | 超碰天堂 | 91精品久久久久久久久久入口 | 视频一区在线 | 欧美性猛片aaaaaaa做受 | 欧美aaa一级片 | 欧美性猛片 | 成人三级在线 | 日本高清视频一区二区三区 | 夜夜艹| 国产午夜手机精彩视频 | 国产福利在线观看视频 | 亚洲电影一区二区 | 亚洲欧美国产毛片在线 | 男人av网 | 在线免费视频成人 | 毛片免费在线 | 逼逼av | 一区二区三区回区在观看免费视频 | 国产精品777一区二区 | 91精品国产99久久久 | 午夜影院a| 亚洲成人精品在线观看 | 欧美国产视频 | 毛片久久久 | 亚洲最新中文字幕 | 欧美自拍一区 | 亚洲精品9999 | 密室大逃脱第六季大神版在线观看 | 日韩中文字幕免费在线 | 影音在线资源 | 毛片免费观看 | 欧美久久久久久 | 午夜精品一区二区三区在线播放 | 国产在线中文字幕 | 国产精品久久片 | 国产成人免费 | 亚洲www啪成人一区二区 |