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

Android SurfaceView播放視頻源碼

移動開發 Android
先來介紹一下大部分軟件如何解析一段視頻流。首先它需要先確定視頻的格式,這個和解碼相關, 不同的格式視頻編碼不同,不是這里的重點。知道了視頻的編碼格式后,再通過編碼格式進行解碼,最后得到一幀一幀的圖像,并把這些圖像快速的顯示在界面上, 即為播放一段視頻。SurfaceView在Android中就是完成這個功能的。

android

SurfaceView

先來介紹一下大部分軟件如何解析一段視頻流。首先它需要先確定視頻的格式,這個和解碼相關, 不同的格式視頻編碼不同,不是這里的重點。知道了視頻的編碼格式后,再通過編碼格式進行解碼,最后得到一幀一幀的圖像,并把這些圖像快速的顯示在界面上, 即為播放一段視頻。SurfaceView在Android中就是完成這個功能的。

既然SurfaceView是配合MediaPlayer使用的,MediaPlayer也提供了相應的方法設置SurfaceView顯示圖片,只需要為MediaPlayer指定SurfaceView顯示圖像即可。它的完整簽名如下:

void setDisplay(SurfaceHolder sh)

它需要傳遞一個SurfaceHolder對象,SurfaceHolder可以理解為SurfaceView裝載需要顯示的一幀幀圖像的容器,它可以通過SurfaceHolder.getHolder()方法獲得。

使用MediaPlayer配合SurfaceView播放視頻的步驟與播放使用MediaPlayer播放MP3大體一致,只需要額外設置顯示的SurfaceView即可。

SurfaceView雙緩沖

上面有提到,SurfaceView和大部分視頻應用一樣,把視頻流解析成一幀幀的圖像進行 顯示,但是如果把這個解析的過程放到一個線程中完成,可能在上一幀圖像已經顯示過后,下一幀圖像還沒有來得及解析,這樣會導致畫面的不流暢或者聲音和視頻 不同步的問題。所以SurfaceView和大部分視頻應用一樣,通過雙緩沖的機制來顯示幀圖像。那么什么是雙緩沖呢?雙緩沖可以理解為有兩個線程輪番去 解析視頻流的幀圖像,當一個線程解析完幀圖像后,把圖像渲染到界面中,同時另一線程開始解析下一幀圖像,使得兩個線程輪番配合去解析視頻流,以達到流暢播 放的效果。

SurfaceHolder

SurfaceView內部實現了雙緩沖的機制,但是實現這個功能是非常消耗系統內存的。因為移動設備的局限性,Android在設計的時候規 定,SurfaceView如果為用戶可見的時候,創建SurfaceView的SurfaceHolder用于顯示視頻流解析的幀圖片,如果發現 SurfaceView變為用戶不可見的時候,則立即銷毀SurfaceView的SurfaceHolder,以達到節約系統資源的目的。

如果開發人員不對SurfaceHolder進行維護,會出現最小化程序后,再打開應用的時候,視頻的聲音在繼續播放,但是不顯示畫面了的情況,這 就是因為當SurfaceView不被用戶可見的時候,之前的SurfaceHolder已經被銷毀了,再次進入的時候,界面上的 SurfaceHolder已經是新的SurfaceHolder了。所以SurfaceHolder需要我們開發人員去編碼維護,維護 SurfaceHolder需要用到它的一個回調,SurfaceHolder.Callback(),它需要實現三個如下三個方法:

  • void surfaceDestroyed(SurfaceHolder holder):當SurfaceHolder被銷毀的時候回調。
  • void surfaceCreated(SurfaceHolder holder):當SurfaceHolder被創建的時候回調。
  • void surfaceChange(SurfaceHolder holder):當SurfaceHolder的尺寸發生變化的時候被回調。

以下是這三個方法的調用的過程,在應用中分別為SurfaceHolder實現了這三個方法,先進入應用,SurfaceHolder被創建,創建 好之后會改變SurfaceHolder的大小,然后按Home鍵回退到桌面銷毀SurfaceHolder,最后再進入應用,重新 SurfaceHolder并改變其大小。

SurfaceView的Demo示例

上面講了那么多關于SurfaceView的內容,下面通過一個Demo簡單演示一下 SurfaceView如何播放視頻,加了一個滾動條,用于顯示進度,還可以拖動滾動條選擇播放位置,Demo的注釋比較完整,這里不再累述,視頻是在網 上隨便找的,朋友們運行的時候保證/sdcard/ykzzldx.mp4,這個目錄下有這個文件。

布局文件:activity_main.xml

實現代碼:

  1. package cn.bgxt.surfaceviewdemo; 
  2.   
  3. import java.io.File; 
  4.   
  5. import android.media.AudioManager; 
  6. import android.media.MediaPlayer; 
  7. import android.media.MediaPlayer.OnCompletionListener; 
  8. import android.media.MediaPlayer.OnErrorListener; 
  9. import android.media.MediaPlayer.OnPreparedListener; 
  10. import android.os.Bundle; 
  11. import android.app.Activity; 
  12. import android.util.Log; 
  13. import android.view.SurfaceHolder; 
  14. import android.view.SurfaceHolder.Callback; 
  15. import android.view.SurfaceView; 
  16. import android.view.View; 
  17. import android.widget.Button; 
  18. import android.widget.EditText; 
  19. import android.widget.SeekBar; 
  20. import android.widget.SeekBar.OnSeekBarChangeListener; 
  21. import android.widget.Toast; 
  22.   
  23. public class MainActivity extends Activity { 
  24. private final String TAG = "main"
  25. private EditText et_path; 
  26. private SurfaceView sv; 
  27. private Button btn_play, btn_pause, btn_replay, btn_stop; 
  28. private MediaPlayer mediaPlayer; 
  29. private SeekBar seekBar; 
  30. private int currentPosition = 0
  31. private boolean isPlaying; 
  32.   
  33. @Override 
  34. protected void onCreate(Bundle savedInstanceState) { 
  35. super.onCreate(savedInstanceState); 
  36. setContentView(R.layout.activity_main); 
  37.   
  38. seekBar = (SeekBar) findViewById(R.id.seekBar); 
  39. sv = (SurfaceView) findViewById(R.id.sv); 
  40. et_path = (EditText) findViewById(R.id.et_path); 
  41.   
  42. btn_play = (Button) findViewById(R.id.btn_play); 
  43. btn_pause = (Button) findViewById(R.id.btn_pause); 
  44. btn_replay = (Button) findViewById(R.id.btn_replay); 
  45. btn_stop = (Button) findViewById(R.id.btn_stop); 
  46.   
  47. btn_play.setOnClickListener(click); 
  48. btn_pause.setOnClickListener(click); 
  49. btn_replay.setOnClickListener(click); 
  50. btn_stop.setOnClickListener(click); 
  51.   
  52. // 為SurfaceHolder添加回調 
  53. sv.getHolder().addCallback(callback); 
  54. // 4.0版本之下需要設置的屬性 
  55. // 設置Surface不維護自己的緩沖區,而是等待屏幕的渲染引擎將內容推送到界面 
  56. // sv.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
  57. // 為進度條添加進度更改事件 
  58. seekBar.setOnSeekBarChangeListener(change); 
  59.   
  60. private Callback callback = new Callback() { 
  61. // SurfaceHolder被修改的時候回調 
  62. @Override 
  63. public void surfaceDestroyed(SurfaceHolder holder) { 
  64. Log.i(TAG, "SurfaceHolder 被銷毀"); 
  65. // 銷毀SurfaceHolder的時候記錄當前的播放位置并停止播放 
  66. if (mediaPlayer != null && mediaPlayer.isPlaying()) { 
  67. currentPosition = mediaPlayer.getCurrentPosition(); 
  68. mediaPlayer.stop(); 
  69.   
  70. @Override 
  71. public void surfaceCreated(SurfaceHolder holder) { 
  72. Log.i(TAG, "SurfaceHolder 被創建"); 
  73. if (currentPosition > 0) { 
  74. // 創建SurfaceHolder的時候,如果存在上次播放的位置,則按照上次播放位置進行播放 
  75. play(currentPosition); 
  76. currentPosition = 0
  77.   
  78. @Override 
  79. public void surfaceChanged(SurfaceHolder holder, int format, int width, 
  80. int height) { 
  81. Log.i(TAG, "SurfaceHolder 大小被改變"); 
  82.   
  83. }; 
  84.   
  85. private OnSeekBarChangeListener change = new OnSeekBarChangeListener() { 
  86.   
  87. @Override 
  88. public void onStopTrackingTouch(SeekBar seekBar) { 
  89. // 當進度條停止修改的時候觸發 
  90. // 取得當前進度條的刻度 
  91. int progress = seekBar.getProgress(); 
  92. if (mediaPlayer != null && mediaPlayer.isPlaying()) { 
  93. // 設置當前播放的位置 
  94. mediaPlayer.seekTo(progress); 
  95.   
  96. @Override 
  97. public void onStartTrackingTouch(SeekBar seekBar) { 
  98.   
  99.   
  100. @Override 
  101. public void onProgressChanged(SeekBar seekBar, int progress, 
  102. boolean fromUser) { 
  103.   
  104. }; 
  105.   
  106. private View.OnClickListener click = new View.OnClickListener() { 
  107.   
  108. @Override 
  109. public void onClick(View v) { 
  110.   
  111. switch (v.getId()) { 
  112. case R.id.btn_play: 
  113. play(0); 
  114. break
  115. case R.id.btn_pause: 
  116. pause(); 
  117. break
  118. case R.id.btn_replay: 
  119. replay(); 
  120. break
  121. case R.id.btn_stop: 
  122. stop(); 
  123. break
  124. default
  125. break
  126. }; 
  127.   
  128.   
  129. /* 
  130. * 停止播放 
  131. */ 
  132. protected void stop() { 
  133. if (mediaPlayer != null && mediaPlayer.isPlaying()) { 
  134. mediaPlayer.stop(); 
  135. mediaPlayer.release(); 
  136. mediaPlayer = null
  137. btn_play.setEnabled(true); 
  138. isPlaying = false
  139.   
  140. /** 
  141. * 開始播放 
  142. * 
  143. * @param msec 播放初始位置 
  144. */ 
  145. protected void play(final int msec) { 
  146. // 獲取視頻文件地址 
  147. String path = et_path.getText().toString().trim(); 
  148. File file = new File(path); 
  149. if (!file.exists()) { 
  150. Toast.makeText(this"視頻文件路徑錯誤"0).show(); 
  151. return
  152. try { 
  153. mediaPlayer = new MediaPlayer(); 
  154. mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
  155. // 設置播放的視頻源 
  156. mediaPlayer.setDataSource(file.getAbsolutePath()); 
  157. // 設置顯示視頻的SurfaceHolder 
  158. mediaPlayer.setDisplay(sv.getHolder()); 
  159. Log.i(TAG, "開始裝載"); 
  160. mediaPlayer.prepareAsync(); 
  161. mediaPlayer.setOnPreparedListener(new OnPreparedListener() { 
  162.   
  163. @Override 
  164. public void onPrepared(MediaPlayer mp) { 
  165. Log.i(TAG, "裝載完成"); 
  166. mediaPlayer.start(); 
  167. // 按照初始位置播放 
  168. mediaPlayer.seekTo(msec); 
  169. // 設置進度條的最大進度為視頻流的最大播放時長 
  170. seekBar.setMax(mediaPlayer.getDuration()); 
  171. // 開始線程,更新進度條的刻度 
  172. new Thread() { 
  173.   
  174. @Override 
  175. public void run() { 
  176. try { 
  177. isPlaying = true
  178. while (isPlaying) { 
  179. int current = mediaPlayer 
  180. .getCurrentPosition(); 
  181. seekBar.setProgress(current); 
  182. sleep(500); 
  183. catch (Exception e) { 
  184. e.printStackTrace(); 
  185. }.start(); 
  186.   
  187. btn_play.setEnabled(false); 
  188. }); 
  189. mediaPlayer.setOnCompletionListener(new OnCompletionListener() { 
  190.   
  191. @Override 
  192. public void onCompletion(MediaPlayer mp) { 
  193. // 在播放完畢被回調 
  194. btn_play.setEnabled(true); 
  195. }); 
  196.   
  197. mediaPlayer.setOnErrorListener(new OnErrorListener() { 
  198.   
  199. @Override 
  200. public boolean onError(MediaPlayer mp, int what, int extra) { 
  201. // 發生錯誤重新播放 
  202. play(0); 
  203. isPlaying = false
  204. return false
  205. }); 
  206. catch (Exception e) { 
  207. e.printStackTrace(); 
  208.   
  209.   
  210. /** 
  211. * 重新開始播放 
  212. */ 
  213. protected void replay() { 
  214. if (mediaPlayer != null && mediaPlayer.isPlaying()) { 
  215. mediaPlayer.seekTo(0); 
  216. Toast.makeText(this"重新播放"0).show(); 
  217. btn_pause.setText("暫停"); 
  218. return
  219. isPlaying = false
  220. play(0); 
  221.   
  222.   
  223. /** 
  224. * 暫停或繼續 
  225. */ 
  226. protected void pause() { 
  227. if (btn_pause.getText().toString().trim().equals("繼續")) { 
  228. btn_pause.setText("暫停"); 
  229. mediaPlayer.start(); 
  230. Toast.makeText(this"繼續播放"0).show(); 
  231. return
  232. if (mediaPlayer != null && mediaPlayer.isPlaying()) { 
  233. mediaPlayer.pause(); 
  234. btn_pause.setText("繼續"); 
  235. Toast.makeText(this"暫停播放"0).show(); 
  236.   
  237.   

源碼下載地址 :http://pan.baidu.com/s/1lgKLS

原文地址: Android,SurfaceView播放視頻源碼

責任編輯:閆佳明 來源: itbbu
相關推薦

2013-07-01 10:53:05

2015-09-01 16:48:44

ios暴風視頻播放器

2015-01-22 15:44:55

Android源碼音樂播放器

2022-06-20 05:59:35

5G技術音視頻技術安卓系統

2021-08-25 07:43:17

AndroidSurfaceViewTextureView

2011-08-10 15:58:58

iPhone視頻

2022-08-16 17:37:06

視頻播放器鴻蒙

2024-03-14 08:24:25

MediaCodec解碼播放Android

2013-05-20 17:48:20

2011-07-20 16:21:20

iPhone 視頻 播放器

2011-08-17 14:57:31

iPhone應用視頻播放

2010-06-03 14:53:58

SmokescreenHTML 5Flash

2021-01-12 10:58:04

Web視頻播

2015-05-21 15:25:42

VLC播放器

2013-05-20 17:04:09

2013-05-20 17:51:47

Android游戲開發SurfaceView

2019-05-09 13:52:19

小米Miui

2013-08-13 14:08:23

android 4.0WebView

2009-05-26 15:08:00

UbuntuFlash視頻播放

2014-12-31 16:52:53

音樂播放器源碼
點贊
收藏

51CTO技術棧公眾號

日本老太婆做爰视频| 久久久97精品| 少妇高清精品毛片在线视频 | 欧美一个色资源| 伊人久久在线观看| 三级在线观看| 免费精品视频在线| 欧美精品一区二区免费| www.超碰97| 国产精品麻豆| 色综合色综合色综合色综合色综合| 日韩高清av| 国产黄色片免费| 日韩电影免费在线看| 久久综合五月天| 日本激情小视频| 亚洲精选av| 欧美色视频在线| 国产妇女馒头高清泬20p多| 91美女视频在线| 99精品久久99久久久久| 国产热re99久久6国产精品| 天天综合网入口| 欧美影院一区| 一区二区三区四区在线观看视频| 三大队在线观看| 美女网站视频一区| 午夜影院久久久| 伊人久久在线观看| 香蕉视频在线看| 久久久久久久久久久久久夜| 97久久精品午夜一区二区| 国产成人自拍偷拍| 国产精品社区| 久久久久国产精品免费| 亚洲波多野结衣| 精品精品久久| 亚洲欧洲午夜一线一品| 艳妇乳肉豪妇荡乳xxx| 日韩中文字幕一区二区高清99| 在线观看免费一区| 午夜精品久久久内射近拍高清| 婷婷色在线播放| 国产精品第四页| 亚洲国产精品www| 国产高清自拍视频在线观看| 久久香蕉国产线看观看99| 国产中文一区二区| 后进极品白嫩翘臀在线视频| 国产电影一区二区三区| 92福利视频午夜1000合集在线观看| 中文字幕有码视频| 日韩一区精品视频| 国产精品ⅴa在线观看h| 国产精品成人久久久| 老司机午夜精品视频| 奇米影视亚洲狠狠色| 国产特黄大片aaaa毛片| 国产精品综合| 国产精品第三页| 一级黄色在线观看| 老司机午夜精品99久久| 国产在线999| 国产欧美日韩成人| 国产高清亚洲一区| 国产伦精品一区二区三区免| 亚洲av永久纯肉无码精品动漫| 国产麻豆精品95视频| 成人免费视频97| 日韩免费av网站| 奇米777欧美一区二区| 国产成人精品免费久久久久| 无码人妻av一区二区三区波多野| 亚洲黄色影院| 91精品国产高清自在线| 91av在线免费视频| 亚洲一区二区三区四区五区午夜| 久久久亚洲天堂| 成人高潮免费视频| 欧美区一区二| 久久久免费av| 久久国产精品系列| 在线综合视频| 日韩av电影手机在线观看| 黄色av网站免费观看| 三级亚洲高清视频| 国产精品丝袜白浆摸在线| 在线亚洲欧美日韩| 激情五月激情综合网| 成人欧美一区二区| 亚洲AV成人无码一二三区在线| av爱爱亚洲一区| 美女黄毛**国产精品啪啪| 欧美在线观看在线观看| 国产欧美日韩久久| 中文网丁香综合网| 欧洲黄色一区| 欧美午夜影院在线视频| 国产又黄又猛又粗又爽的视频| 日韩av黄色| 91麻豆精品国产91久久久久| 欧美熟妇精品一区二区蜜桃视频 | 91精品一区二区三区综合| 日韩在线观看免费网站| 美女福利视频在线观看| 欧美日韩亚洲国产精品| 国自在线精品视频| 国产超碰人人爽人人做人人爱| 日韩不卡一二三区| 成人在线精品视频| 午夜视频在线播放| 中文一区二区在线观看| 日产精品高清视频免费| 都市激情在线视频| 夜夜夜精品看看| 不卡影院一区二区| 欧美在线在线| 国语精品免费视频| 欲求不满的岳中文字幕| 欧美黄色网视频| 精品一区二区三区四区| 日本少妇aaa| 狠狠爱综合网| 国产精品久久久久久亚洲影视 | av影片在线一区| 久热爱精品视频线路一| 六月丁香激情综合| 久久一区二区三区四区五区 | 美女撒尿一区二区三区| 五月婷婷色丁香| 国产乱子伦视频一区二区三区| 精品麻豆av| 中文国产字幕在线观看| 日本高清不卡在线观看| 亚洲视频天天射| 日韩精品免费一区二区三区| 国语自产精品视频在线看一大j8 | 日本不卡不卡| 日韩欧中文字幕| 一区二区三区四区影院| 国产精品久久久久9999赢消| 日韩免费观看视频| 国产高中女学生第一次| 亚洲人妖av一区二区| 亚洲欧美另类动漫| 思热99re视热频这里只精品| 久久人人爽人人爽爽久久| 天天干天天操天天操| 成人免费毛片app| 黄色网zhan| 亚洲一区导航| 国产亚洲成精品久久| 国产成人亚洲精品自产在线| 国产99精品在线观看| 性欧美18一19内谢| 国产精品伊人| 亚洲人成五月天| 国产污污视频在线观看| 波多野结衣91| www..com日韩| 99香蕉久久| 欧美国产日产韩国视频| 精品黑人一区二区三区国语馆| 国产精品白丝在线| 三上悠亚在线一区| 91欧美在线| 国产美女久久久| 黄色网页在线观看| 5858s免费视频成人| 青青草华人在线视频| 日本欧美韩国一区三区| 欧洲精品在线一区| 在线观看v片| 亚洲老司机av| www.日韩一区| 久久久99精品免费观看| 亚洲五月天综合| 成人一区不卡| 国产视频999| sm国产在线调教视频| 日韩无一区二区| 久久黄色小视频| 成人av在线观| 波多野结衣家庭教师视频| 免费欧美一区| 国产精品入口日韩视频大尺度 | 中文字幕日韩av综合精品| 中文字幕乱码视频| 亚洲日本护士毛茸茸| 亚洲最大视频网| 99riav国产精品| 日韩欧美三级一区二区| 日韩精品第一| 久久精品视频va| 日韩在线观看视频一区| 欧美午夜激情在线| 九九热久久免费视频| 麻豆精品视频在线观看| 日韩国产成人无码av毛片| 亚洲第一福利社区| 91精品国产综合久久香蕉的用户体验| av免费在线观看网站| 亚洲国产精品一区二区久| 日本视频免费观看| 中文字幕亚洲不卡| 亚洲av无码一区东京热久久| 久久久亚洲人| 天堂v在线视频| 久久影院资源站| 国产成人精品视频在线| 午夜成年人在线免费视频| 亚洲跨种族黑人xxx| 国产手机精品视频| 一本大道久久精品懂色aⅴ | 免费av一区二区三区四区| 国产精品丝袜白浆摸在线| av大片在线| 亚洲欧美中文日韩在线v日本| 国产尤物视频在线观看| 亚洲aⅴ怡春院| 影音先锋男人资源在线观看| 99久久精品国产导航| 成人日韩在线视频| 国产一区二区三区久久久久久久久| 午夜视频久久久| 成人三级av在线| 亚洲a中文字幕| 成人在线爆射| 7777免费精品视频| 羞羞视频在线免费国产| 夜夜嗨av色一区二区不卡| 日本加勒比一区| 这里只有精品免费| 国产美女www| 狠狠色狠狠色综合日日五| 熟女av一区二区| 久久久久久久久久久久久夜| 欧美xxxxx少妇| 韩国女主播成人在线| 手机看片福利日韩| 亚洲一区黄色| 国产精品久久久久久久乖乖| 综合天天久久| 日本一区二区免费高清视频| 欧美视频网址| 欧美一区二区三区在线播放| 超碰97久久| 国产一区不卡在线观看| 一区二区三区四区视频免费观看| 成人免费看吃奶视频网站| 91国拍精品国产粉嫩亚洲一区 | 亚洲深夜视频| 久久久久这里只有精品| 免费在线看电影| 久久亚洲精品国产亚洲老地址| 欧美jizz18性欧美| 亚洲欧美日韩一区二区在线 | 黄色a级片免费看| 亚洲澳门在线| 中文字幕精品一区日韩| 神马影视一区二区| 日本一区二区三区在线视频 | 国产在线一区二区三区四区| 果冻天美麻豆一区二区国产| 国产精品日韩高清| 成人福利免费在线观看| 国产精品久久一区二区三区| 成人免费在线电影网| 成人综合av网| 果冻天美麻豆一区二区国产| 狠狠色噜噜狠狠色综合久| 日韩极品在线| 日本一区二区三区四区高清视频 | 精品视频www| 日本在线视频1区| 亚洲欧美日韩视频一区| 国产午夜精品一区理论片| 亚洲性夜色噜噜噜7777| eeuss影院在线观看| 日韩中文字幕国产| 亚洲资源一区| 欧美一区二区三区图| 电影在线观看一区二区| 国产热re99久久6国产精品| 精品国产亚洲一区二区在线观看 | 九色综合狠狠综合久久| 999在线精品视频| 国产成人超碰人人澡人人澡| 人妻 日韩 欧美 综合 制服| 久久一区二区三区四区| 怡红院一区二区三区| 综合久久久久综合| 久久久国产成人| 欧美日韩亚洲激情| 成人黄色片在线观看| 日韩一区二区三区在线观看| 可以在线观看的av| 久久成人亚洲精品| 欧美亚洲日本精品| 成人在线观看视频网站| 澳门久久精品| 日韩精品欧美在线| 欧美福利影院| 日韩av三级在线| 久久99精品久久久久久久久久久久| 免费黄色av网址| 99re成人在线| 国产suv一区二区三区| 欧美日韩免费看| 91影院在线播放| 亚洲精品99久久久久| 欧美另类极品| 国产91|九色| 欧美一区一区| 久久国产精品免费一区| 亚洲精彩视频| 欧美精品性生活| 99久久婷婷国产| 精品无码一区二区三区蜜臀| 狠狠综合久久av一区二区小说 | 26uuu亚洲电影在线观看| 欧美一级黄色网| 超碰国产精品一区二页| 国产在线一区二区三区播放| 亚洲精品一区二区妖精| 日av中文字幕| 99精品欧美一区二区三区综合在线| 在线观看黄网址| 在线精品国精品国产尤物884a| www.日韩在线观看| 色香阁99久久精品久久久| 性欧美18~19sex高清播放| 亚洲综合中文字幕68页| 要久久电视剧全集免费| 成人污网站在线观看| 免播放器亚洲一区| mm131美女视频| 亚洲成人一区在线| 国产强伦人妻毛片| 亚洲欧洲高清在线| a视频在线观看| 国产区精品视频| 成人在线视频免费观看| 无码精品a∨在线观看中文| 国产福利视频一区二区三区| 岛国片在线免费观看| 欧美色精品天天在线观看视频| 免费在线黄色电影| 午夜精品福利视频| 成人涩涩网站| www.男人天堂网| 国产一区不卡视频| 亚洲欧美精品久久| 欧美日韩高清不卡| 激情福利在线| 国产精品女人网站| jlzzjlzz亚洲女人| 爱情岛论坛成人| 91一区二区在线| 日韩在线视频免费播放| 日韩www在线| 末成年女av片一区二区下载| 国产精品一区二区三区在线 | 久久激情五月丁香伊人| 国产日本久久| 在线视频一区观看| 另类小说欧美激情| 亚洲一级二级片| 4hu四虎永久在线影院成人| 国产剧情在线| 91手机在线视频| 亚洲大胆av| 国产精品无码一区二区三区免费| 性做久久久久久免费观看欧美| 婷婷在线免费观看| 琪琪第一精品导航| 成人综合专区| 亚洲精品中文字幕乱码无线| 日韩美女精品在线| 亚洲经典一区二区三区| 91av在线影院| 国产精品午夜一区二区三区| 91日韩视频在线观看| 亚洲免费av在线| 成人乱码一区二区三区| 青青草精品毛片| 91一区二区| 天天躁日日躁狠狠躁av麻豆男男| 一本大道av伊人久久综合| 欧美一区二区三区| 99视频在线| 久久资源在线| 黑人狂躁日本娇小| 精品国产1区2区3区| 成人爱爱网址| 亚洲午夜精品久久久中文影院av| 成人免费视频app| 性高潮视频在线观看| 欧美高清视频在线| 亚洲老女人视频免费|