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

Android通過流播放聲音

移動開發 Android
AudioRecord和AudioTrack類是Android獲取和播放音頻流的重要類,下面是對AudioRecord和AudioTrack類在使用方面的經驗總結。

AudioRecord和AudioTrack類是Android獲取和播放音頻流的重要類,放置在android.media包中。與該包中的 MediaRecorder和MediaPlayer類不同,AudioRecord和AudioTrack類在獲取和播放音頻數據流時無需通過文件保存 和文件讀取,可以動態地直接獲取和播放音頻流,在實時處理音頻數據流時非常有用。

當然,如果用戶只想錄音后寫入文件或從文件中取得音頻流進行播放,那么直接使用MediaRecorder和MediaPlayer類是***方案,因為 這兩個類使用非常方便,而且成功率很高。而AudioRecord和AudioTrack類的使用卻比較復雜,我們發現很多人都不能成功地使用這兩個類, 甚至認為Android的這兩個類是不能工作的。

其實,AudioRecord和AudioTrack類的使用雖然比較復雜,但是可以工作,我們不僅可以很好地使用了這兩個類,而且還通過套接字 (Socket)實現了音頻數據的網絡傳輸,做到了一端使用AudioRecord獲取音頻流然后通過套接字傳輸出去,而另一端通過套接字接收后使用 AudioTrack類播放。

下面是對AudioRecord和AudioTrack類在使用方面的經驗總結:

(1)創建AudioRecord和AudioTrack類對象:創建這兩個類的對象比較復雜,通過對文檔的反復和仔細理解,并通過多次失敗的嘗試,并在 北理工的某個Android大牛的網上的文章啟發下,我們也最終成功地創建了這兩個類的對象。創建AudioRecord和AudioTrack類對象的 代碼如下:

AudioRecord類:

  1. m_in_buf_size =AudioRecord.getMinBufferSize(8000
  2. AudioFormat.CHANNEL_CONFIGURATION_MONO, 
  3. AudioFormat.ENCODING_PCM_16BIT); 
  4.  
  5.  
  6. m_in_rec = new AudioRecord(MediaRecorder.AudioSource.MIC,8000
  7. AudioFormat.CHANNEL_CONFIGURATION_MONO, 
  8. AudioFormat.ENCODING_PCM_16BIT, 
  9. m_in_buf_size) ;  

AudioTrack類:

  1. m_out_buf_size = android.media.AudioTrack.getMinBufferSize(8000
  2. AudioFormat.CHANNEL_CONFIGURATION_MONO, 
  3. AudioFormat.ENCODING_PCM_16BIT); 
  4.  
  5.  
  6. m_out_trk = new AudioTrack(AudioManager.STREAM_MUSIC, 8000
  7. AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT, 
  8. m_out_buf_size, 
  9. AudioTrack.MODE_STREAM);  

(2)關于AudioRecord和AudioTrack類的監聽函數,不用也行。

(3)調試方面,包括初始化后看logcat信息,以確定類的工作狀態,初始化是否成功等。

編寫好代碼,沒有語法錯誤,調用模擬器運行、調試代碼時,logcat發揮了很好的功用。剛調試時,經常會出現模擬器顯示出現異常,這時我們可以在代碼 的一些關鍵語句后添加如Log.d(“test1″,”OK”);這樣的語句進行標識,出現異常時我們就可以在logcat窗口觀察代碼執行到哪里出現異 常,然后進行相應的修改、調試。模擬器不會出現異常時,又遇到了錄放音的問題。錄音方面,剛開始選擇將語音編碼數據存放在多個固定大小的文件中進行傳送, 但是這種情況下會出現聲音斷續的現象,而且要反復的建立文件,比較麻煩,后來想到要進行網上傳輸,直接將語音編碼數據以數據流的形式傳送,經過驗證,這種 方法可行并且使代碼更加簡潔。放音方面,將接收到的數據流存放在一個數組中,然后將數組中數據寫到AudioTrack中。剛開始只是“嘟”幾聲,經過檢 查發現只是把數據寫一次,加入循環,讓數據反復寫到AudioTrack中,就可以聽到正常的語音了。接下來的工作主要是改善話音質量與話音延遲,在進行 通話的過程中,觀察logcat窗口,發現向數組中寫數據時會出現Bufferflow的情況,于是把重心轉移到數組大小的影響上,經過試驗,發現 AudioRecord一次會讀640個數據,然后就對錄音和放音中有數組的地方進行實驗修改。AudioRecord和AudioTrack進行實例化 時,參數中各有一個數組大小,經過試驗這個數組大小和AudioRecord和AudioTrack能正常實例化所需的最小Buffer大小(即上面實例 化時的m_in_buf_size和m_out_buf_size參數)相等且服務器方進行緩存數據的數組尺寸是上述數值的2倍時,語音質量***。由于錄 音和放音的速度不一致,受到北理工大牛的啟發,在錄音方面,將存放錄音數據的數組放到LinkedList中,當LinkedList中數組個數達到 2(這個也是經過試驗驗證話音質量***時的數據)時,將先錄好的數組中數據傳送出去。經過上述反復試驗和修改,最終使雙方通話質量較好,且延時較短。

(4)通過套接字傳輸和接收數據

數據傳送部分,使用的是套接字。通信雙方,通過不同的端口向服務器發送請求,與服務器連接上后,開始通話向服務器發送數據,服務器通過一個套接字接收到一 方的數據后,先存在一個數組中,然后將該數組中數據以數據流的形式再通過另一個套接字傳送到另一方。這樣就實現了雙方數據的傳送。

(5)代碼架構

為避免反復錄入和讀取數據占用較多資源,使程序在進行錄放音時不能執行其他命令,故將錄音和放音各寫成一個線程類,然后在主程序中,通過MENU控制通話的開始、停止、結束。

***說明,AudioRecord和AudioTrack類可以用,只是稍微復雜些。以下貼出雙方通信的源碼,希望對大家有所幫助:

主程序

  1. package eoe.demo; 
  2.  
  3. import android.app.Activity; 
  4. import android.os.Bundle; 
  5. import android.view.Menu; 
  6. import android.view.MenuItem; 
  7.  
  8. public class Daudioclient extends Activity { 
  9.  
  10. public static final int MENU_START_ID = Menu.FIRST ; 
  11. public static final int MENU_STOP_ID = Menu.FIRST + 1 ; 
  12. public static final int MENU_EXIT_ID = Menu.FIRST + 2 ; 
  13.  
  14. protected Saudioserver m_player ; 
  15. protected Saudioclient m_recorder ; 
  16.  
  17. @Override 
  18. public void onCreate(Bundle savedInstanceState) { 
  19. super.onCreate(savedInstanceState); 
  20. setContentView(R.layout.main); 
  21.  
  22. public boolean onCreateOptionsMenu(Menu aMenu) 
  23. boolean res = super.onCreateOptionsMenu(aMenu) ; 
  24.  
  25. aMenu.add(0, MENU_START_ID, 0, “START”) ; 
  26. aMenu.add(0, MENU_STOP_ID, 0, “STOP”) ; 
  27. aMenu.add(0, MENU_EXIT_ID, 0, “EXIT”) ; 
  28.  
  29. return res ; 
  30. public boolean onOptionsItemSelected(MenuItem aMenuItem) 
  31. switch (aMenuItem.getItemId()) { 
  32. case MENU_START_ID: 
  33. m_player = new Saudioserver() ; 
  34. m_recorder = new Saudioclient() ; 
  35.  
  36. m_player.init() ; 
  37. m_recorder.init() ; 
  38.  
  39. m_recorder.start() ; 
  40. m_player.start() ; 
  41.  
  42. break ; 
  43. case MENU_STOP_ID: 
  44. m_recorder.free() ; 
  45. m_player.free() ; 
  46.  
  47. m_player = null ; 
  48. m_recorder = null ; 
  49. break ; 
  50. case MENU_EXIT_ID: 
  51. int pid = android.os.Process.myPid() ; 
  52. android.os.Process.killProcess(pid) ; 
  53. break ; 
  54. default
  55. break ; 
  56.  
  57. return super.onOptionsItemSelected(aMenuItem); 

錄音程序Saudioclient:

  1. package eoe.demo; 
  2.  
  3. import java.io.DataOutputStream; 
  4. import java.io.IOException; 
  5. import java.net.Socket; 
  6. import java.net.UnknownHostException; 
  7. import java.util.LinkedList; 
  8.  
  9. import android.media.AudioFormat; 
  10. import android.media.AudioRecord; 
  11. import android.media.MediaRecorder; 
  12. import android.util.Log; 
  13.  
  14. public class Saudioclient extends Thread 
  15.  
  16. protected AudioRecord m_in_rec ; 
  17. protected int m_in_buf_size ; 
  18. protected byte [] m_in_bytes ; 
  19. protected boolean m_keep_running ; 
  20. protected Socket s; 
  21. protected DataOutputStream dout; 
  22. protected LinkedList<byte[]> m_in_q ; 
  23.  
  24. public void run() 
  25. try 
  26. byte [] bytes_pkg ; 
  27. m_in_rec.startRecording() ; 
  28. while(m_keep_running) 
  29. m_in_rec.read(m_in_bytes, 0, m_in_buf_size) ; 
  30. bytes_pkg = m_in_bytes.clone() ; 
  31. if(m_in_q.size() >= 2
  32. dout.write(m_in_q.removeFirst() , 0, m_in_q.removeFirst() .length); 
  33. m_in_q.add(bytes_pkg) ; 
  34.  
  35. m_in_rec.stop() ; 
  36. m_in_rec = null ; 
  37. m_in_bytes = null ; 
  38. dout.close(); 
  39.  
  40. catch(Exception e) 
  41. e.printStackTrace(); 
  42.  
  43. public void init() 
  44. m_in_buf_size = AudioRecord.getMinBufferSize(8000
  45. AudioFormat.CHANNEL_CONFIGURATION_MONO, 
  46. AudioFormat.ENCODING_PCM_16BIT); 
  47.  
  48. m_in_rec = new AudioRecord(MediaRecorder.AudioSource.MIC, 
  49. 8000
  50. AudioFormat.CHANNEL_CONFIGURATION_MONO, 
  51. AudioFormat.ENCODING_PCM_16BIT, 
  52. m_in_buf_size) ; 
  53.  
  54. m_in_bytes = new byte [m_in_buf_size] ; 
  55.  
  56. m_keep_running = true ; 
  57. m_in_q=new LinkedList<byte[]>(); 
  58.  
  59. try 
  60. s=new Socket(“192.168.1.100″,4332); 
  61. dout=new DataOutputStream(s.getOutputStream()); 
  62. //new Thread(R1).start(); 
  63. catch (UnknownHostException e) 
  64. // TODO Auto-generated catch block 
  65. e.printStackTrace(); 
  66. catch (IOException e) 
  67. // TODO Auto-generated catch block 
  68. e.printStackTrace(); 
  69.  
  70.  
  71. public void free() 
  72. m_keep_running = false ; 
  73. try { 
  74. Thread.sleep(1000) ; 
  75. catch(Exception e) { 
  76. Log.d(“sleep exceptions…\n”,”") ; 

放音程序Saudioserver:

  1. package eoe.demo; 
  2.  
  3. import java.io.DataInputStream; 
  4. import java.io.IOException; 
  5. import java.net.Socket; 
  6.  
  7. import android.media.AudioFormat; 
  8. import android.media.AudioManager; 
  9. import android.media.AudioTrack; 
  10. import android.util.Log; 
  11.  
  12. public class Saudioserver extends Thread 
  13. protected AudioTrack m_out_trk ; 
  14. protected int m_out_buf_size ; 
  15. protected byte [] m_out_bytes ; 
  16. protected boolean m_keep_running ; 
  17. private Socket s; 
  18. private DataInputStream din; 
  19. public void init() 
  20. try 
  21. s=new Socket(“192.168.1.100″,4331); 
  22. din=new DataInputStream(s.getInputStream()); 
  23.  
  24. m_keep_running = true ; 
  25.  
  26. m_out_buf_size = AudioTrack.getMinBufferSize(8000
  27. AudioFormat.CHANNEL_CONFIGURATION_MONO, 
  28. AudioFormat.ENCODING_PCM_16BIT); 
  29.  
  30. m_out_trk = new AudioTrack(AudioManager.STREAM_MUSIC, 8000
  31. AudioFormat.CHANNEL_CONFIGURATION_MONO, 
  32. AudioFormat.ENCODING_PCM_16BIT, 
  33. m_out_buf_size, 
  34. AudioTrack.MODE_STREAM); 
  35.  
  36. m_out_bytes=new byte[m_out_buf_size]; 
  37.  
  38. // new Thread(R1).start(); 
  39.  
  40. catch(Exception e) 
  41. e.printStackTrace(); 
  42.  
  43. public void free() 
  44. m_keep_running = false ; 
  45. try { 
  46. Thread.sleep(1000) ; 
  47. catch(Exception e) { 
  48. Log.d(“sleep exceptions…\n”,”") ; 
  49.  
  50. public void run() 
  51. byte [] bytes_pkg = null ; 
  52. m_out_trk.play() ; 
  53. while(m_keep_running) { 
  54. try 
  55. din.read(m_out_bytes); 
  56. bytes_pkg = m_out_bytes.clone() ; 
  57. m_out_trk.write(bytes_pkg, 0, bytes_pkg.length) ; 
  58. catch(Exception e) 
  59. e.printStackTrace(); 
  60.  
  61.  
  62. m_out_trk.stop() ; 
  63. m_out_trk = null ; 
  64. try { 
  65. din.close(); 
  66. catch (IOException e) { 
  67. // TODO Auto-generated catch block 
  68. e.printStackTrace(); 
責任編輯:徐川 來源: OSChina
相關推薦

2011-07-22 15:59:15

iPhone 聲音 文件

2013-06-14 17:28:11

Windows PhoWP開發播放聲音

2010-01-11 17:30:40

VB.NET播放聲音

2011-08-08 10:23:41

iPhone 流播放 文件

2018-08-17 22:00:22

Linux輸出設備音頻

2009-09-22 14:20:39

C#播放聲音

2018-08-16 14:40:53

Linux輸出設備播放聲音

2013-04-08 09:31:05

iOS開發系統聲音服務

2013-05-21 14:10:11

Android游戲開發SoundPool類同時多音效

2022-06-01 08:21:24

Java內存API

2013-05-21 13:33:02

Android游戲開發異步音樂播放

2010-09-01 08:40:38

蘋果Apple TV

2020-02-20 20:51:09

FedoraLinux播放音樂

2009-04-22 08:57:25

Windows 7微軟操作系統

2018-05-18 14:12:41

Chrome 66自動播放

2020-09-28 06:50:02

DuerOS 智能語音

2010-01-07 18:22:40

VB.NET聲音播放

2010-01-13 11:03:13

VB.NET聲音播放

2010-02-20 09:48:59

Windows 7qq故障

2014-10-20 09:55:02

點贊
收藏

51CTO技術棧公眾號

国产福利一区二区三区视频在线| 欧美黄色录像| 亚洲私人黄色宅男| 国产成人精品免费视频大全最热| 五月天综合在线| 欧美国产极品| 欧美性感一区二区三区| 在线视频不卡国产| 亚洲国产精品二区| 日韩精品午夜视频| 欧美精品精品精品精品免费| 91中文字幕永久在线| 日韩免费在线电影| 天天操天天色综合| 中文字幕日韩一区二区三区| 无码国产伦一区二区三区视频 | 美女扒开大腿让男人桶| 国产69精品久久app免费版| 黄一区二区三区| 欧洲成人在线观看| 国产精品老熟女一区二区| 国产成人一区| 精品国产sm最大网站免费看| 午夜激情av在线| 无遮挡爽大片在线观看视频| 亚洲精品美腿丝袜| 日韩av电影免费播放| 成人午夜免费福利| 久久99精品国产麻豆婷婷| 欧美一级黄色网| 美女视频黄免费| 日韩在线欧美| 日韩激情一区二区| 不卡的av网站| 国产在线精品一区免费香蕉 | 午夜亚洲福利老司机| 中文字幕在线观看一区二区三区| 手机亚洲第一页| 国产传媒久久文化传媒| 国产美女久久精品香蕉69| 国产美女激情视频| 99在线精品免费视频九九视| 欧美老女人性生活| 天天看天天摸天天操| 日韩欧美1区| 亚洲性av网站| 久久精品老司机| 精品亚洲自拍| 亚洲第一区第一页| 国产精品嫩草69影院| 久久视频免费| 4438亚洲最大| 婷婷激情5月天| 国产a亚洲精品| 欧美亚一区二区| 青青草精品视频在线观看| 久久sese| 色婷婷久久一区二区三区麻豆| 99re在线精品| 国产精品欧美久久久| 成人毛片一区二区三区| 丝袜美腿成人在线| 国产精品国产三级国产专播精品人| 国产免费观看av| 国产农村妇女毛片精品久久莱园子 | 涩多多在线观看| 国产精品白丝久久av网站| 欧美日韩一级二级三级| 手机版av在线| 99tv成人影院| 欧美一区二区视频在线观看| 性生活一级大片| 亚洲**毛片| 欧美精品一区二区三| 国产极品一区二区| 亚洲视频分类| 色哟哟入口国产精品| 国产传媒视频在线 | 亚洲色图都市激情| 欧美精品videosex| 午夜精品久久久久久| 夫妻免费无码v看片| 免费电影日韩网站| 欧美在线不卡视频| www.污网站| 国产精品x8x8一区二区| 亚洲欧洲在线播放| 欧美做爰啪啪xxxⅹ性| 欧美色一级片| 日韩免费在线观看视频| 6—12呦国产精品| 高清shemale亚洲人妖| 久久久久久a亚洲欧洲aⅴ| 97超碰人人在线| 亚洲精品第1页| 精品欧美一区免费观看α√| 黄色成人在线视频| 日韩精品专区在线影院观看| 中文字幕av网址| 婷婷精品进入| 57pao成人永久免费视频| 怡红院男人天堂| 成人蜜臀av电影| 视频一区三区| av不卡高清| 欧美日韩精品欧美日韩精品一| 免费黄色av网址| 波多野结衣在线观看一区二区三区| 久久中文字幕一区| 国产精品人人人人| 国产精品综合二区| 日韩福利在线| 午夜伦理大片视频在线观看| 欧洲一区在线观看| 色欲欲www成人网站| 日韩大片在线播放| 97视频在线观看网址| 97国产精品久久久| 久久人人97超碰com| 四虎精品欧美一区二区免费| 激情开心成人网| 国产成人精选| 亚洲第一主播视频| 国产一区二区在线观看免费视频| 久久香蕉精品香蕉| 久久成人免费视频| 中文字幕久久网| 91毛片在线观看| 欧美激情视频免费看| 欧州一区二区三区| 在线电影中文日韩| 国产精品视频123| 成人丝袜18视频在线观看| 综合网五月天| 本网站久久精品| 精品视频一区在线视频| 国产午夜福利精品| 国产aⅴ精品一区二区三区色成熟| 亚洲永久激情精品| 麻豆精品蜜桃| 亚洲视频视频在线| 黄色在线免费观看| 精品久久国产视频| 日本一区二区视频在线| 91视频 -- 69xx| 久久影院资源站| 午夜精品在线视频| 成人免费视频国产| 亚洲午夜视频在线观看| 可以看的av网址| 欧美有码视频| 92裸体在线视频网站| 浪潮av一区| 91麻豆精品国产| 国产人妻精品一区二区三区不卡| 国产在线精品免费| 99精品视频网站| 久久久久久亚洲精品美女| 美乳少妇欧美精品| 亚洲乱码精品久久久久..| 一区二区视频在线| 国产精品手机在线观看| 亚洲美女一区| 久久综合一区| av在线不卡精品| 国产一区二区激情| 在线观看国产黄| 亚洲色图20p| 国产精品一级无码| 在线看片成人| 久久久久久九九九九| 范冰冰一级做a爰片久久毛片| 国产一区二区三区视频| 亚洲综合精品视频| 一区二区三区在线免费视频| 欧美熟妇精品一区二区蜜桃视频| 国产一区二区三区的电影 | 99国产精品久久久久久久成人 | 亚洲美女自拍视频| 最近中文字幕在线视频| 亚洲精品写真福利| 日韩片在线观看| 日韩激情一区二区| 99热一区二区三区| 欧美网色网址| 国产啪精品视频网站| 九色91在线| 国产午夜一区二区| 国产免费无遮挡| 黑人巨大精品欧美一区二区免费| 极品尤物一区二区| 成人小视频在线| 三级在线视频观看| 国产精品红桃| 日本韩国欧美国产| 日本亚洲自拍| 亚洲精品毛片| 久久噜噜噜精品国产亚洲综合| 欧美黄色小说| 日韩亚洲电影在线| 亚洲欧美一二三区| 一级做a爱片久久| 精品无码一区二区三区| 国产精品一区在线观看你懂的| av免费中文字幕| 中文字幕一区二区精品区| 欧美日韩另类综合| 日韩精品三级| 国产精品夜间视频香蕉| 99色在线观看| 不卡av电影在线观看| 全色精品综合影院| 精品国产乱码久久久久久牛牛 | 日韩午夜av在线| 在线视频不卡一区二区| 在线成人动漫av| 国产精品二区三区| 经典三级久久| 国产精品旅馆在线| gogo久久| 欧美大胆a视频| 伊人免费在线| 亚洲片国产一区一级在线观看| 亚洲av综合色区无码一区爱av| 欧美色成人综合| 亚洲 欧美 日韩 综合| 亚洲一区二区三区四区五区中文 | 亚洲欧洲美洲国产香蕉| 成人影片在线播放| 国产精品一区二区三区四区在线观看 | 黄视频在线免费看| 久久精品国产成人精品| √新版天堂资源在线资源| 亚洲男子天堂网| 色欲久久久天天天综合网| 欧美一级一区二区| 99精品视频免费看| 91精品国产一区二区三区蜜臀 | 老司机久久99久久精品播放免费| r级无码视频在线观看| 国产精品www994| 青青视频免费在线观看| 亚州av乱码久久精品蜜桃| 亚洲精品一区国产精品| 成人精品影视| 亚洲欧美电影在线观看| 欧美xxav| japanese在线视频| 影视亚洲一区二区三区| 影音先锋男人的网站| 五月天久久久| 大地资源网在线观看免费官网| 婷婷综合激情| 国产日韩欧美大片| 激情久久五月| 日韩欧美一区二| 国产精品一区毛片| 免费看黄色一级大片| 蜜臀国产一区二区三区在线播放| 天天爱天天操天天干| 美腿丝袜亚洲三区| 午夜不卡福利视频| 久久精品xxx| aaa级黄色片| 波多野结衣在线一区二区| 日韩在线观看免费高清完整版| 91精品国产综合久久久久久豆腐| 中文字幕亚洲天堂| 欧美日韩欧美| 欧美激情视频免费观看| 国产亚洲成av人片在线观看| 992tv成人免费影院| 欧美男女交配| 国产欧美 在线欧美| 国产欧美88| 国产日产精品一区二区三区四区| 日韩系列在线| 天天综合色天天综合色hd| 夜间精品视频| 成人性生活视频免费看| 免费日韩av| 色91精品久久久久久久久| 成人午夜看片网址| 亚洲一区视频在线播放| 亚洲视频一区在线| 国产无人区码熟妇毛片多| 欧美图片一区二区三区| 精品乱子伦一区二区| 日韩精品亚洲视频| 久草中文在线观看| 91国产视频在线| 国产亚洲欧美日韩精品一区二区三区 | 7777精品伊人久久久大香线蕉最新版 | 在线黄色网页| 欧美一区视频在线| 日韩国产一二三区| 久久精品人成| 亚洲破处大片| 日韩欧美精品在线观看视频| 精品综合免费视频观看| 国产精品第七页| 中文字幕一区av| 久久久久99精品成人片我成大片| 欧美丰满少妇xxxbbb| 神马亚洲视频| 九九热r在线视频精品| 日产精品一区| 国产日韩一区二区| 欧美大人香蕉在线| 无码精品a∨在线观看中文| 国产真实精品久久二三区| 丰满少妇高潮一区二区| 亚洲综合激情另类小说区| 中文字幕永久免费视频| 日韩黄色av网站| 中文字幕中文字幕在线中高清免费版| 国产成人久久精品| 国产精品网站在线看| 亚洲第一综合网站| 免费人成网站在线观看欧美高清| 北岛玲一区二区| 亚洲一卡二卡三卡四卡| 国产精品视频一区二区三区,| 国产亚洲美女久久| 亚洲精品国产精品国产| 国产精品视频福利| 欧美国产三级| 日韩av自拍偷拍| 中文子幕无线码一区tr| 人人爽人人爽人人片av| 日韩av综合中文字幕| 波多一区二区| 999视频在线免费观看| 婷婷亚洲综合| 亚洲精品国产一区二区三区| 国产免费成人在线视频| 亚洲图片欧美日韩| 精品亚洲一区二区三区| 成人ssswww在线播放| 国产精品美女黄网| 国精品一区二区| 亚洲成人精品在线播放| 亚洲乱码国产乱码精品精98午夜| 国产一区二区三区在线观看| 自拍偷拍亚洲在线| 91av一区| 午夜精品亚洲一区二区三区嫩草 | 99久久精品免费看国产交换| 另类专区欧美制服同性| 精品成人18| 日本成人在线不卡| 国产成人h网站| 久久精品免费在线| 亚洲国产成人久久综合| 黄色在线免费观看网站| 久久综合色一本| 爽爽淫人综合网网站| 亚洲一级片在线播放| 欧美性三三影院| 日本中文字幕在线2020| 成人黄色免费看| 国产精品www.| 欲求不满的岳中文字幕| 欧美日韩亚洲国产一区| 国产一二三区在线视频| 国产女人18毛片水18精品| 中文字幕乱码亚洲无线精品一区| 国产a级片视频| 精品美女国产在线| 岛国最新视频免费在线观看| 国产欧美日韩91| 欧美日韩 国产精品| 国产精品无码在线| 欧美偷拍一区二区| 肉体视频在线| 久久精品国产综合精品| 日本欧美一区二区三区| www.av视频| 日韩精品高清在线| 国产一区精品福利| 妞干网在线播放| 久久亚区不卡日本| 国产乱码精品一区二区三区精东| 欧美黑人极品猛少妇色xxxxx| 日韩av影院| 在线观看国产一级片| 亚洲国产日产av| 欧洲综合视频| 欧美一级理论片| 欧美黄色高清视频| 欧美性猛交xxxx免费看| 1769在线观看| 国产在线精品一区二区中文 | 亚洲AV无码成人片在线观看| 91av视频在线观看| 99久久综合| 国产精品第七页| 欧美一区二区福利在线| 久久电影tv| 日本大片免费看|