精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在鴻蒙上實現本地和Internet視頻資源播放

系統
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

[[388216]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 1. 介紹

本篇Codelab將實現的內容

本篇Codelab旨在讓開發者了解手機HarmonyOS應用開發,常用布局、典型控件、FA組件、媒體-視頻、跨設備協同的體驗以及從工程創建到代碼和布局的編寫,再到編譯構建、部署和運行全過程。

您將構建一個基于HarmonyOS Player類實現的應用程序,該應用程序功能為播放本地視頻資源或從Internet獲得的視頻資源。效果圖如下:

您將會學到什么

● 如何使用Player類播放視頻

● 如何使用自定義控件來控制視頻播放

● 如何添加并使用媒體事件的事件偵聽器和回調

硬件要求

● 操作系統:Windows10 64位

● 內存:8GB及以上

● 硬盤:100GB及以上

● 分辨率:1280*800像素及以上

軟件要求

● 安裝Huawei DevEco Studio,詳情請參考下載和安裝軟件

● 設置Huawei DevEco Studio開發環境,Huawei DevEco Studio開發環境需要依賴于網絡環境,需要連接上網絡才能確保工具的正常使用,可以根據如下兩種情況來配置開發環境

1.如果可以直接訪問Internet,只需進行下載HarmonyOS SDK操作

2.如果網絡不能直接訪問Internet,需要通過代理服務器才可以訪問,請參考配置開發環境

說明

如需要在手機中運行程序,則需要提前申請證書,如使用模擬器可忽略

● 生成秘鑰和申請證書,詳情請參考準備簽名文件

技能要求

● 具備DevEco Studio中創建、構建和運行應用經驗

● 熟悉Ability和AbilitySlice生命周期及使用PA/FA的能力

2. 代碼結構

本篇Codelab只對核心代碼進行講解,對于完整代碼,我們在參考提供下載方式。接下來我們會講解整個工程的代碼結構,如下圖:

● api:視頻播放狀態改變及屏幕狀態變化監聽。

● constant:定義視頻狀態、進度條和控制器狀態。

● factoty:創建SourceFactory類來根據視頻來源創建視頻源。

● manager:創建HmPlayerLifecycle來處理Player類的生命周期。

● view:創建PlayerLoading、SimplePlayerController類分別為視頻加載狀態及進度條控制類文件。

● HmPlayer:封裝播放器的主要功能方法。

● slice:創建MainAbilitySlice、SimplePlayerAbilitySlice分別為進入應用的主程序頁面和視頻播放頁面。

● utils:存放所有封裝好的公共方法,如DateUtils,LogUtils等。

● resources:存放工程使用到的資源文件,其中resources\base\layout下存放xml布局文件;resources\base\media下存放視頻文件。

● config.json:Ability聲明及權限配置。

3. 創建視頻播放業務邏輯

該應用程序可播放的視頻格式包括mp4、mov、3gp、mkv,首先準備一份視頻文件并復制到"resources/base/layout/media"文件目錄。下面將會介紹視頻列表布局及播放邏輯。

創建視頻播放頁面文件及布局

Step 1 - 創建simple_video_play_layout.xml布局文件展示視頻列表。

  1. <DependentLayout  
  2.     xmlns:ohos="http://schemas.huawei.com/res/ohos"  
  3.     ohos:id="$+id:parent"  
  4.     ohos:height="match_parent"  
  5.     ohos:width="match_parent">  
  6.     <DependentLayout  
  7.         ohos:id="$+id:parent_layout"  
  8.         ohos:height="match_parent"  
  9.         ohos:width="match_parent"  
  10.         ohos:alignment="center"  
  11.         ohos:background_element="#ffffff"/>  
  12. </DependentLayout> 

該布局文件有兩個id,parent是整個播放頁面的布局id,parent_layout是視頻畫面的布局id。

Step 2 - 創建SimplePlayerAbilitySlice類,初次創建該頁面進行初始化。

  1. @Override  
  2. public void onStart(Intent intent) {  
  3.     super.onStart(intent);  
  4.     super.setUIContent(ResourceTable.Layout_simple_video_play_layout);  
  5.     // 在Constants中定義視頻播放的起始位置  
  6.     startMillisecond = intent.getIntParam(Constants.INTENT_STARTTIME_PARAM, 0);  
  7.     // 初始化surface布局  
  8.     initView();  
  9.     player.getLifecycle().onStart();  

將預置的視頻資源初始化為url對象,并通過initView方法對視頻播放的控件進行初始化及賦值。

  1. private String url = "entry/resources/base/media/gubeishuizhen.mp4";  
  2. private void initView() {  
  3.     DependentLayout playerLayout = (DependentLayout) findComponentById(ResourceTable.Id_parent_layout);  
  4.     player = new HmPlayer.Builder(this).setStartMillisecond(mStartMillisecond).setFilePath(url).create();  
  5.     playerLayout.addComponent(player.getPlayerView());  
  6.     player.play();  

—-結束

創建HmPlayer

HmPlayer類是繼承自對HarmonyOS Player封裝的ImPlayer。如果您還不了解HarmonyOS Player,請參考視頻播放開發指導。

需要注意的是當頁面初始化Player類執行play方法時,視頻并沒有出現畫面。圖像渲染在屏幕上需要使用SurfaceProvider,該類控制surface的尺寸和格式,修改surface的像素,監視surface的變化等等。當底層顯示系統第一次創建surface之后會調用surfaceCreated(SurfaceOps surfaceOps)回調函數。HmPlayer中通過設置回調增加對視頻的播放開始或停止控制。

  1. private SurfaceOps.Callback surfaceCallback = new SurfaceOps.Callback() {  
  2.     @Override  
  3.     public void surfaceCreated(SurfaceOps surfaceOps) {  
  4.         // 標記surfaceView狀態  
  5.         isSurfaceViewCreated = true;  
  6.         surface = surfaceOps.getSurface();  
  7.         start();  
  8.     }  
  9.    
  10.     @Override  
  11.     public void surfaceChanged(SurfaceOps surfaceOps, int i, int width, int height) {  
  12.         LogUtil.info(TAG, "surfaceChanged i is " + i + ",width is " + width + ",height is " + height);  
  13.     }  
  14.    
  15.     @Override  
  16.     public void surfaceDestroyed(SurfaceOps surfaceOps) {  
  17.         LogUtil.info(TAG, "surfaceDestroyed");  
  18.         isSurfaceViewCreated = false;  
  19.     }  
  20. }; 

surfaceView的初始化在HmPlayer構造函數中:

  1. private HmPlayer(Builder builder) {  
  2.     ...  
  3.     surfaceView = new SurfaceProvider(playerBuilder.mContext);  
  4.     DependentLayout.LayoutConfig layoutConfig = new DependentLayout.LayoutConfig();  
  5.     layoutConfig.addRule(DependentLayout.LayoutConfig.CENTER_IN_PARENT);  
  6.     // 設置surfaceView布局  
  7.     surfaceView.setLayoutConfig(layoutConfig);  
  8.     surfaceView.setVisibility(Component.VISIBLE);  
  9.     surfaceView.setFocusable(Component.FOCUS_ENABLE);  
  10.     surfaceView.setTouchFocusable(true);  
  11.     surfaceView.requestFocus();  
  12.     // 設置surfaceView是否在最上方  
  13.     surfaceView.pinToZTop(playerBuilder.isTopPlay);  
  14.     surfaceView.getSurfaceOps().get().addCallback(surfaceCallback);  

在執行surfaceCreated回調時會執行HarmonyOS中Player的play方法。

  1. private void start() {  
  2.     if (isSurfaceViewCreated) {  
  3.         threadPoolExecutor.execute(() -> {  
  4.             player.setVideoSurface(surface);  
  5.             player.prepare();  
  6.             if (playerBuilder.startMillisecond > 0) {  
  7.                 int microsecond = playerBuilder.startMillisecond * MICRO_MILLI_RATE;  
  8.                 player.rewindTo(microsecond);  
  9.             } else {  
  10.                 player.play();  
  11.             }  
  12.         });  
  13.     }  

編譯運行該應用程序

應用啟動后,視頻文件將被打開并開始播放,持續播放到最后。效果如下圖:

4. 創建視頻控制業務邏輯

上面的章節實現了視頻播放的基本功能,本小節將創建一個控制器,包含基本的媒體控制UI元素如播放、暫停、恢復、重新加載按鈕以及進度條。該控制器將與HmPlayer類一起提供一個基本功能全面且可操作的視頻播放器。

創建SimpleVideoPlayerController

SimplePlayerController類為自定義組件,包括控制視頻的播放、暫停、恢復以及進度條等控件。此處使用HarmonyOS EventHandler來進行UI更新,請參考HarmonyOS開發者文檔線程間通信。

  1. public SimplePlayerController(Context context, ImplPlayer player) {  
  2.     super(context);  
  3.     this.context = context;  
  4.     implPlayer = player;  
  5.     // 創建子線程給自己發消息來及時更新UI  
  6.     createHandler();  
  7.     initView();  
  8.     initListener();  

其中initView方法初始化播放控制的控件。

  1. Component playerController = LayoutScatter.getInstance(context).parse(  
  2.         ResourceTable.Layout_simple_player_controller_layout, nullfalse);  
  3. addComponent(playerController);  
  4. if (playerController.findComponentById(ResourceTable.Id_play_controller) instanceof Image) {  
  5.     // 播放或者暫停按鈕  
  6.     playToogle = (Image) playerController.findComponentById(ResourceTable.Id_play_controller);  
  7. }  
  8. if (playerController.findComponentById(ResourceTable.Id_play_forward) instanceof Image) {  
  9.     // 前進按鈕  
  10.     imageForward = (Image) playerController.findComponentById(ResourceTable.Id_play_forward);  
  11. }  
  12. if (playerController.findComponentById(ResourceTable.Id_play_backward) instanceof Image) {  
  13.     // 后退按鈕  
  14.     imageBackward = (Image) playerController.findComponentById(ResourceTable.Id_play_backward);  
  15. }  
  16. if (playerController.findComponentById(ResourceTable.Id_progress) instanceof Slider) {  
  17.     // 進度條  
  18.     progressBar = (Slider) playerController.findComponentById(ResourceTable.Id_progress);  

initListener方法是對HmPlayer和播放控制器相互之間狀態變化的監聽處理。

  1. implPlayer.addPlayerStatusCallback(statusChangeListener); 

添加HmPlayer狀態變化的監聽,例如當視頻播放完畢時,回調StatusChangeListener的statusCallback來刷新對控制器中各種組件的狀態和顯示值。HmPlayer中HmPlayerCallback中通過底層播放回調onPlayBackComplete來對界面視頻狀態進行更改。

  1. @Override  
  2. public void onPlayBackComplete() {  
  3.     for (StatusChangeListener callback : statusChangeCallbacks) {  
  4.         status = PlayerStatus.COMPLETE;  
  5.         callback.statusCallback(PlayerStatus.COMPLETE);  
  6.     }  
  7.     stop();  

在SimplePlayerController的statusCallback中更新控制按鈕狀態。

  1. if (status == PlayerStatus.STOP || status == PlayerStatus.COMPLETE) {  
  2.     controllerHandler.sendEvent(Constants.PLAYER_PROGRESS_RUNNING, EventHandler.Priority.IMMEDIATE);  
  3.     playToogle.setPixelMap(ResourceTable.Media_ic_update);  
  4.     progressBar.setEnabled(false);  

此時播放按鈕更新成待刷新圖標,進度條不可拖拽。

創建PlayerLoading

在視頻畫面緩沖沒有完成時,播放界面如果提供加載進度信息,用戶體驗更好。創建的PlayerLoading類設置一個布局并且添加StatusChangeListener監聽回調,使得該控件可以根據狀態顯示或隱藏。

  1. public PlayerLoading(Context context, ImplPlayer player) {  
  2.     super(context);  
  3.     this.player = player;  
  4.     initView(context);  
  5.     initListener();  
  6. }  
  7. private void initListener() {  
  8.     player.addPlayerStatusCallback(new StatusChangeListener() {  
  9.         @Override  
  10.         public void statusCallback(PlayerStatus status) {  
  11.             //獲取主線程更新UI  
  12.             mContext.getUITaskDispatcher().delayDispatch(  
  13.                     new Runnable() {  
  14.                         @Override  
  15.                         public void run() {  
  16.                             if (status == PlayerStatus.PREPARING || status == PlayerStatus.BUFFERING) {  
  17.                                 show();  
  18.                             } else if (status == PlayerStatus.PLAY) {  
  19.                                 hide();  
  20.                             } else {  
  21.                                 LogUtil.info(PlayerLoading.class.getName(), "statuCallback else message");  
  22.                             }  
  23.                         }  
  24.                     }, 0);  
  25.         }  
  26.     });  

編譯運行該應用程序

經過上面的步驟,此時運行程序就可以看到一個有前進、后退、播放、暫停的界面,用戶可以自主控制該視頻播放,效果如下圖:

5. 恭喜你

通過本篇Codelab你學到了:

● HarmonyOS中一個完整的視頻播放應用需包括UI、Surface和媒體播放器。

● 使用player.setSource(source)指定視頻文件的路徑。

● 使用SurfaceOps.Callback來處理surface創建、狀態改變和銷毀的回調。

● 創建內部類HmPlayerCallback實現Player.IPlayerCallback的接口,監聽視頻狀態改變,添加對控制器組件狀態和緩沖界面的回調方法。

● 創建HmPlayerLifeCycle來管理HmPlayer生命周期。

6. 參考

gitee源碼

github源碼

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2014-07-07 15:22:08

惠普公有云

2024-03-14 08:24:25

MediaCodec解碼播放Android

2013-07-01 10:53:05

2009-08-18 11:16:05

Ubuntu系統高清視頻linux系統

2011-07-20 16:21:20

iPhone 視頻 播放器

2009-05-26 15:08:00

UbuntuFlash視頻播放

2022-04-15 11:30:59

代碼,Python保存視頻

2010-03-16 14:32:07

云計算

2021-10-29 07:49:23

Python彈幕播放

2024-08-28 08:48:20

Linux資源隔離

2024-03-26 08:00:00

LLMVLMRaspberry

2020-06-28 14:35:54

OBSWebSockets開源

2021-08-30 07:49:32

Javascript西瓜視頻

2019-09-10 16:06:46

GNOMEInternet Ra

2009-08-18 17:51:17

C#實現Interne

2011-04-16 15:57:03

云網絡云服務

2022-03-06 20:02:21

監聽視頻播放

2022-08-26 12:13:08

APIjavascript視頻

2011-01-07 10:36:45

802.11n無線LAN無線局域網

2013-12-17 11:18:53

iOS開發多媒體API
點贊
收藏

51CTO技術棧公眾號

中文字幕av观看| 美女av免费观看| 中文字幕人妻色偷偷久久| 久久一区91| 亚洲成**性毛茸茸| 91av俱乐部| 欧美xxxxhdvideosex| 国产偷v国产偷v亚洲高清| 亚洲伊人成综合成人网| 特级做a爱片免费69| 精品久久久久久久久久久下田| 777午夜精品免费视频| www.射射射| 欧美a在线看| 成人av电影在线| 国产精品视频中文字幕91| 久久精品亚洲无码| 大片网站久久| 亚洲精品一区二区三区不| 污污视频在线免费| 成人性教育av免费网址| 亚洲激情校园春色| 午夜精品福利一区二区| 性xxxxbbbb| 丁香另类激情小说| 91久久精品国产| 欧美brazzers| 99国产精品99久久久久久粉嫩| 色视频www在线播放国产成人| 大桥未久恸哭の女教师| 精品国产一级| 欧美日韩激情一区二区三区| 欧美日韩在线中文| gogo高清在线播放免费| 亚洲美女区一区| 亚洲成人av动漫| 国产日产精品久久久久久婷婷| 成人激情免费电影网址| 亚洲最大福利视频网| 亚洲影视一区二区| 日韩精品高清不卡| 日本一区二区三区在线播放| 日产欧产va高清| 影音先锋中文字幕一区二区| 欧美裸体男粗大视频在线观看| 国产视频不卡在线| 精品国产一区二区三区四区| 亚洲免费电影一区| 蜜桃传媒一区二区亚洲av| 欧美激情极品| 日韩精品在线视频观看| 亚洲av成人无码一二三在线观看| 视频亚洲一区二区| 日韩欧美高清一区| 在线观看免费看片| 中文一区二区三区四区| 日韩一区二区电影| 日韩精品xxx| 91蝌蚪精品视频| 精品久久久久久无| 国产污在线观看| 日韩三级毛片| 亚洲色图第一页| 熟女俱乐部一区二区| 西野翔中文久久精品国产| 国产视频久久久久| 性欧美精品男男| 欧美电影免费播放| 欧美成人激情视频| 精品一区在线视频| 国产精品人人爽人人做我的可爱| 51色欧美片视频在线观看| 欧美性猛交bbbbb精品| 美女国产精品| 成人a级免费视频| 国产丰满果冻videossex| 国产精品一区久久久久| 粉嫩av免费一区二区三区| 少妇高潮一区二区三区69| wwww国产精品欧美| 伊人久久大香线蕉午夜av| 中中文字幕av在线| 天天综合色天天综合| 999在线免费视频| 国产精一区二区| 亚洲精品99久久久久| 成人在线手机视频| 欧美日韩a区| 欧美专区中文字幕| 国产又大又黄的视频| 国产v综合v亚洲欧| 日韩啊v在线| 1stkiss在线漫画| 精品久久久久久| 在线观看免费污视频| 91精品入口| 亚洲日本成人网| 欧美又粗又大又长| 日韩电影在线观看电影| 国产精品 日韩| 成人福利在线| 午夜一区二区三区视频| 黄色三级视频在线| 国产丝袜一区| y97精品国产97久久久久久| 日本黄色片视频| 激情欧美一区二区三区在线观看| 国产亚洲精品久久飘花| 日韩在线观看www| 欧美日韩另类在线| 久久久九九九热| 日韩电影免费网站| 91精品国产精品| aaa国产视频| 中文av一区二区| 成人av一级片| 91精品国产自产精品男人的天堂 | 午夜精品久久久久久久99老熟妇 | 欧美成人dvd在线视频| 免费av在线网站| 91激情在线视频| 国产xxxx视频| 中文字幕日韩欧美精品高清在线| 国产精品高精视频免费| 香港一级纯黄大片| 亚洲成人av一区| 人妻精油按摩bd高清中文字幕| 成人激情电影在线| 国产成人福利网站| 天堂资源中文在线| 午夜欧美一区二区三区在线播放| 深夜福利网站在线观看| 久久理论电影| 国产精品九九九| 国产视频第一页在线观看| 欧美日韩裸体免费视频| 亚洲少妇18p| 最新日韩在线| 国产伦一区二区三区色一情| 日本精品600av| 日韩一区二区三区在线观看| 久久高清内射无套| 久久66热偷产精品| 在线视频不卡一区二区三区| 激情久久一区二区| 在线观看视频亚洲| 亚洲图片视频小说| 国产精品九色蝌蚪自拍| 亚洲综合av在线播放| 四季av在线一区二区三区| 国产色视频一区| 美女av在线播放| 717成人午夜免费福利电影| 少妇高潮在线观看| 国产一区二区三区免费在线观看| 成年人三级视频| 日韩欧洲国产| 97国产精品人人爽人人做| 亚洲乱码国产乱码精品精软件| 亚洲在线视频一区| 第四色在线视频| 欧美专区一区二区三区| 日韩一本精品| 国产乱码精品一区二区三区亚洲人 | 久久精品一区二区三区中文字幕| 欧美性xxxx69| 亚洲二区av| 欧美日韩国产第一页| 黄色片一区二区| 色先锋资源久久综合| 毛片aaaaaa| 精品一区二区精品| 国产aaa免费视频| 伊人成综合网伊人222| 国产精品免费小视频| 二区三区在线观看| 亚洲国产日韩一区| 怡红院成永久免费人全部视频| 亚洲天堂成人在线观看| youjizz.com国产| 青草国产精品久久久久久| 中文字幕一区二区三区四区五区人 | 一区二区三区四区五区| 丰满亚洲少妇av| 女人扒开屁股爽桶30分钟| 久久亚洲成人| 国产日韩一区二区| 素人一区二区三区| 欧美韩国理论所午夜片917电影| 色呦呦中文字幕| 欧美日韩视频一区二区| 国产精彩视频在线观看| 久久精品亚洲麻豆av一区二区| 五月六月丁香婷婷| 亚洲伊人网站| 三级在线免费观看| 久久最新网址| 91青青草免费观看| 日韩欧美少妇| 91国产美女在线观看| 毛片免费不卡| 亚洲色图35p| 欧美一区二区三区成人片在线| 欧美日韩一级视频| av资源免费观看| 亚洲欧美国产三级| 在线免费观看成年人视频| 久久精品国产成人一区二区三区 | 国产极品一区| 69影院欧美专区视频| 黄色一级片在线观看| 亚洲欧美日韩视频一区| 亚洲免费不卡视频| 91麻豆精品国产综合久久久久久| 久久久精品福利| 午夜久久福利影院| 私库av在线播放| 国产精品久久久久天堂| 一卡二卡三卡四卡| 成人免费电影视频| 亚洲国产欧美日韩在线| 久久99精品久久久久久国产越南| 国产日产欧美视频| 亚洲激情亚洲| 中文字幕无码精品亚洲资源网久久| 999视频精品| 亚洲韩国在线| 成人激情诱惑| 日韩久久不卡| 久9久9色综合| 欧美日韩精品一区| 日韩欧美美女在线观看| 黄色小网站91| 国产精品中文字幕制服诱惑| 97视频资源在线观看| vam成人资源在线观看| 国产精品入口日韩视频大尺度| 偷拍中文亚洲欧美动漫| 欧美一级视频在线观看| 日韩大片免费观看| 91精品国产一区| 国内激情视频在线观看| 96精品视频在线| 小早川怜子影音先锋在线观看| 91精品国产色综合| 亚洲精品中文字幕| 国产a级全部精品| 午夜激情成人网| 国产精品丝袜白浆摸在线 | 亚洲精品电影院| 国产精品福利一区二区三区| 亚洲黄色网址大全| 中文字幕五月欧美| 欧美日韩在线国产| 亚洲成av人片观看| 天堂а√在线中文在线新版| 色噜噜狠狠成人中文综合| 日韩av免费播放| 欧美精品少妇一区二区三区| 国产精品一区二区av白丝下载| 91精品国产综合久久久久久久 | 欧美日本亚洲视频| 国内在线免费视频| 欧美亚洲激情在线| 91p九色成人| 91日本视频在线| 成人性生交大片免费看96| 国产视频一区二区不卡| 亚洲区小说区图片区qvod| 日韩妆和欧美的一区二区| 色综合天天爱| 麻豆视频传媒入口| 亚洲激情女人| 污污的网站18| 国产成人亚洲综合a∨婷婷图片| 国产精品久久AV无码| 久久久蜜桃精品| 污软件在线观看| 精品欧美一区二区三区| 久久久久久无码精品大片| 欧美一区二区网站| 污视频软件在线观看| 最近2019中文字幕在线高清| 欧美人体视频xxxxx| 日韩美女视频免费在线观看| 国产精久久一区二区| 久久精品国产美女| 91精品国产自产在线观看永久∴ | 国产精品99精品久久免费| 国产激情视频网站| 亚洲欧洲中文日韩久久av乱码| 国产精彩视频在线| 欧美精品在欧美一区二区少妇| 亚洲精品一级片| 色吧影院999| 免费一二一二在线视频| 成人黄色av网站| 国产一区二区三区网| 国产日韩亚洲欧美在线| 日韩不卡一区二区| 亚洲の无码国产の无码步美| 亚洲欧洲性图库| 亚洲精品毛片一区二区三区| 欧美成va人片在线观看| 瑟瑟视频在线| 日av在线播放中文不卡| 亚洲日本va午夜在线电影| 日韩精品一线二线三线| 国产精品五区| 9.1在线观看免费| 亚洲视频一二三| 高潮无码精品色欲av午夜福利| 亚洲国产精品嫩草影院久久| 快射视频在线观看| 国产精品久久久久久一区二区| 国产精品极品| 免费观看亚洲视频| 精品影视av免费| 日韩女同一区二区三区| 狠狠色噜噜狠狠狠狠97| 黑人精品一区二区| 欧美精品免费在线观看| 91嫩草国产线观看亚洲一区二区 | 高清美女视频一区| 欧美专区在线观看| 日本中文字幕在线一区| 男人插女人视频在线观看| 国产精品996| 岛国毛片在线观看| 欧美一区二区三区人| 日本视频在线播放| 国产精品最新在线观看| 激情五月综合| 午夜欧美福利视频| 国产亚洲一区二区三区| 国产91国语对白在线| 精品亚洲永久免费精品| 黄色污网站在线观看| 国产欧美日韩一区| 亚洲激情自拍| 韩国无码一区二区三区精品| 亚洲国产一区二区a毛片| 亚洲黄色一级大片| 欧美黑人性生活视频| 亚洲码欧美码一区二区三区| 懂色av粉嫩av蜜臀av| 国产福利视频一区二区三区| 婷婷在线精品视频| 精品国产伦一区二区三区观看体验 | 午夜天堂在线视频| 亚洲色图欧洲色图| www.av网站| 性色av一区二区三区| 日韩欧美天堂| 欧美大尺度做爰床戏| 中文字幕在线不卡一区| 国产男男gay网站| 欧美日韩福利电影| 精品一区二区男人吃奶| 999在线观看视频| 国产性天天综合网| 在线亚洲欧美日韩| 久久久国产精品x99av | 日本在线免费观看一区| 奇米色777欧美一区二区| 日本一级片免费| 欧美mv日韩mv| 成人免费影院| 伊人久久99| 成人精品gif动图一区| 黄色一级片免费在线观看| 亚洲一区二区精品| 2019中文亚洲字幕| 免费无码毛片一区二三区| 久久综合久久综合九色| 91久久精品国产91性色69| 久久99热精品| 九色精品国产蝌蚪| 一级做a爱视频| 精品女厕一区二区三区| seseavlu视频在线| 高清国产在线一区| 久久亚洲欧洲| 久草视频在线免费看| 亚洲日本欧美中文幕| 老司机亚洲精品一区二区| 91传媒久久久| 亚洲精品一卡二卡| 嫩草影院国产精品| 国产成人免费9x9x人网站视频| 亚洲精品国产综合区久久久久久久| 免费网站在线观看人| 欧美大香线蕉线伊人久久国产精品| 六月丁香婷婷色狠狠久久| 精品无码黑人又粗又大又长| 在线观看精品自拍私拍| 大伊香蕉精品在线品播放| 91精品无人成人www| 亚洲成人手机在线| 免费看美女视频在线网站 |