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

手把手教你使用Python第三方庫PyAudio打造一款錄音工具

開發 后端
音頻錄制與視頻錄制相似,也是以數據幀的方式錄制保存,這次使用強大的第三方包PyAudio和內置的wave模塊編寫主要部分代碼:pip install PyAudio

大家好,我是【🌑(這是月亮的背面)】。今天給大家分享Python使用PyAudio制作錄音工具:

最近有在使用屏幕錄制軟件錄制桌面,在用的過程中突發奇想,使用python能不能做屏幕錄制工具,也鍛煉下自己的動手能力。接下準備寫使用python如何做屏幕錄制工具的系列文章:

  • 錄制屏幕制作視頻
  • 錄制音頻
  • 合成視頻,音頻
  • 基于Pyqt5制作可視化窗口

大概上述四個部分,希望自己能夠盡快完善,上一篇文章利用opencv制作了屏幕錄制部分,接下繼續更新系列,使用python錄制音頻。

應用平臺

  • windows 10
  • python 3.7

音頻錄制部分

音頻錄制與視頻錄制相似,也是以數據幀的方式錄制保存,這次使用強大的第三方包PyAudio和內置的wave模塊編寫主要部分代碼:pip install PyAudio

如果出現安裝失敗,可點擊去此處下載對應.whl文件,cp37代表python3.7環境,64代表64位操作系統。假如不是下載對應的whl包會導致安裝失敗,下載完成后,cmd窗口下進入whl的所在目錄,使用pip install PyAudio-xx.whl即可完成安裝。

音頻錄制主要代碼:

  1. from pyaudio import PyAudio, paInt16, paContinue, paComplete 
  2.  
  3. # 設置固定參數 
  4. chunk = 1024  # 每個緩沖區的幀數 
  5. format_sample = paInt16  # 采樣位數 
  6. channels = 2  # 聲道:1,單聲道;2,雙聲道 
  7. fps = 44100  # 采樣頻率 
  8.  
  9. # 這里采用回調的方式錄制音頻 
  10. def callback(in_data, frame_count, time_info, status): 
  11.     """錄制回調函數""" 
  12.     wf.writeframes(in_data) 
  13.     if xx:  # 當某某條件滿足時 
  14.         return in_data, paContinue 
  15.     else
  16.         return in_data, paComplete 
  17.  
  18. # 實例化PyAudio 
  19. p = PyAudio() 
  20. stream = p.open(format=format_sample, 
  21.     channels=channels, 
  22.     rate=fps, 
  23.                 frames_per_buffer=chunk, 
  24.                 input=True
  25.                 input_device_index=None,  # 輸入設備索引, None為默認設備 
  26.                 stream_callback=callback   # 回調函數 
  27.                 ) 
  28. # 開始流錄制 
  29. stream.start_stream() 
  30. # 判斷流是否活躍 
  31. while stream.is_active(): 
  32.  time.sleep(0.1)    # 0.1為靈敏度 
  33. # 錄制完成,關閉流及實例 
  34. stream.stop_stream() 
  35. stream.close() 
  36. p.terminate() 

采取流式并用回調函數錄制,需要先定義保存音頻文件,用wave新建音頻二進制文件:

  1. import wave 
  2. wf = wave.open('test.wav''wb'
  3. wf.setnchannels(channels) 
  4. wf.setsampwidth(p.get_sample_size(format_sample)) 
  5. wf.setframerate(fps) 

為了后續代碼可以很好的與之結合復用,將上面的代碼包裝成類

  1. from pyaudio import PyAudio 
  2.  
  3. class AudioRecord(PyAudio): 
  4.  
  5.     def __init__(self,): 

源碼于文末補充。

音頻播放部分

播放部分代碼與錄制部分代碼相差不大,核心部分:

  1. wf = wave.open('test.wav''rb'
  2. def callback(in_data, frame_count, time_info, status): 
  3.  data = wf.readframes(frame_count) 
  4.  return data, paContinue 
  5.  
  6. stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), 
  7.     channels=wf.getnchannels(), 
  8.                 rate=wf.getframerate(), 
  9.     output=True
  10.     output_device_index=output_device_index,  # 輸入設備索引 
  11.     stream_callback=callback  # 輸出用回調函數 
  12.                 ) 
  13. stream.start_stream() 
  14. while stream.is_active(): 
  15.  time.sleep(0.1) 

目前暫時測試了.wav和.mp3格式可以正常錄制及播放,其它類型格式音頻可以自行調用代碼進行測試。

GUI窗口所需屬性值代碼部分

考慮到GUI窗口能較為人性化的輸出及輸入值,編寫該部分代碼,內容含音頻時長及獲取輸入設備及輸出設備。

  1. # 音頻時長 
  2. duration = wf.getnframes() / wf.getframerate() 
  1. # 獲取系統目前已安裝的輸入輸出設備 
  2. dev_info = self.get_device_info_by_index(i) 
  3. default_rate = int(dev_info['defaultSampleRate']) 
  4. if not dev_info['hostApi'and default_rate == fps and '映射器' not in dev_info['name']: 
  5.  if dev_info['maxInputChannels']: 
  6.   print('輸入設備:', dev_info['name']) 
  7.  elif dev_info['maxOutputChannels']: 
  8.   print('輸出設備:', dev_info['name']) 

pynput監聽鍵盤

在這部分代碼也暫時使用pynput監聽鍵盤來對錄音做中斷處理??梢哉{用上一篇文章中的鍵盤監聽代碼。

  1. def hotkey(self): 
  2.     """熱鍵監聽""" 
  3.     with keyboard.Listener(on_press=self.on_press) as listener: 
  4.         listener.join() 
  5.  
  6. def on_press(self, key): 
  7.     try: 
  8.         if key.char == 't':  # t鍵,錄制結束,保存音頻 
  9.             self.flag = True 
  10.         elif key.char == 'k':  # k鍵,錄制中止,刪除文件 
  11.             self.flag = True 
  12.             self.kill = True 
  13.     except Exception as e: 
  14.         print(e) 

功能與上一篇類似,不再贅述。

總結

大家好,我是【🌑(這是月亮的背面)】。以上就是使用PyAudio調用windows的音頻設備進行錄制及播放的內容了,這篇文章帶大家整體學習了使用類及其繼承相關知識,用法在這只是展示了冰山一角,還有更多的知識等待著我們一起去探索!

源碼:

  1. import wave 
  2. import time 
  3. from pathlib import Path 
  4. from threading import Thread 
  5. from pyaudio import PyAudio, paInt16, paContinue, paComplete 
  6. from pynput import keyboard  # pip install pynput 
  7.  
  8.  
  9. class AudioRecord(PyAudio): 
  10.  
  11.     def __init__(self, channels=2): 
  12.         super().__init__() 
  13.         self.chunk = 1024  # 每個緩沖區的幀數 
  14.         self.format_sample = paInt16  # 采樣位數 
  15.         self.channels = channels  # 聲道:1,單聲道;2,雙聲道 
  16.         self.fps = 44100  # 采樣頻率 
  17.         self.input_dict = None 
  18.         self.output_dict = None 
  19.         self.stream = None 
  20.         self.filename = '~test.wav' 
  21.         self.duration = 0   # 音頻時長 
  22.         self.flag = False 
  23.         self.kill = False 
  24.  
  25.     def __call__(self, filename): 
  26.         """重載文件名""" 
  27.         self.filename = filename 
  28.  
  29.     def callback_input(self, in_data, frame_count, time_info, status): 
  30.         """錄制回調函數""" 
  31.         self.wf.writeframes(in_data) 
  32.         if not self.flag: 
  33.             return in_data, paContinue 
  34.         else
  35.             return in_data, paComplete 
  36.  
  37.     def callback_output(self, in_data, frame_count, time_info, status): 
  38.         """播放回調函數""" 
  39.         data = self.wf.readframes(frame_count) 
  40.         return data, paContinue 
  41.  
  42.     def open_stream(self, name): 
  43.         """打開錄制流""" 
  44.         input_device_index = self.get_device_index(nameTrue) if name else None 
  45.         return self.open(format=self.format_sample, 
  46.                          channels=self.channels, 
  47.                          rate=self.fps, 
  48.                          frames_per_buffer=self.chunk, 
  49.                          input=True
  50.                          input_device_index=input_device_index,  # 輸入設備索引 
  51.                          stream_callback=self.callback_input 
  52.                          ) 
  53.  
  54.     def audio_record_run(self, name=None): 
  55.         """音頻錄制""" 
  56.         self.wf = self.save_audio_file(self.filename) 
  57.         self.stream = self.open_stream(name
  58.         self.stream.start_stream() 
  59.         while self.stream.is_active(): 
  60.             time.sleep(0.1) 
  61.         self.wf.close() 
  62.         if self.kill: 
  63.             Path(self.filename).unlink() 
  64.         self.duration = self.get_duration(self.wf) 
  65.         print(self.duration) 
  66.         self.terminate_run() 
  67.  
  68.     def run(self, filename=None, name=None, record=True): 
  69.         """音頻錄制線程""" 
  70.         thread_1 = Thread(target=self.hotkey, daemon=True
  71.         if record: 
  72.             # 錄制 
  73.             if filename: 
  74.                 self.filename = filename 
  75.             thread_2 = Thread(target=self.audio_record_run, args=(name,)) 
  76.         else
  77.             # 播放 
  78.             if not filename: 
  79.                 raise Exception('未輸入音頻文件名,不能播放,請輸入后再試!'
  80.             thread_2 = Thread(target=self.read_audio, args=(filename, name,)) 
  81.         thread_1.start() 
  82.         thread_2.start() 
  83.  
  84.     def read_audio(self, filename, name=None): 
  85.         """音頻播放""" 
  86.         output_device_index = self.get_device_index(nameFalse) if name else None 
  87.         with wave.open(filename, 'rb'as self.wf: 
  88.             self.duration = self.get_duration(self.wf) 
  89.             self.stream = self.open(format=self.get_format_from_width(self.wf.getsampwidth()), 
  90.                                     channels=self.wf.getnchannels(), 
  91.                                     rate=self.wf.getframerate(), 
  92.                                     output=True
  93.                                     output_device_index=output_device_index,  # 輸出設備索引 
  94.                                     stream_callback=self.callback_output 
  95.                                     ) 
  96.             self.stream.start_stream() 
  97.             while self.stream.is_active(): 
  98.                 time.sleep(0.1) 
  99.         print(self.duration) 
  100.         self.terminate_run() 
  101.  
  102.     @staticmethod 
  103.     def get_duration(wf): 
  104.         """獲取音頻時長""" 
  105.         return round(wf.getnframes() / wf.getframerate(), 2) 
  106.  
  107.     def get_in_out_devices(self): 
  108.         """獲取系統輸入輸出設備""" 
  109.         self.input_dict = {} 
  110.         self.output_dict = {} 
  111.         for i in range(self.get_device_count()): 
  112.             dev_info = self.get_device_info_by_index(i) 
  113.             default_rate = int(dev_info['defaultSampleRate']) 
  114.             if not dev_info['hostApi'and default_rate == self.fps and '映射器' not in dev_info['name']: 
  115.                 if dev_info['maxInputChannels']: 
  116.                     self.input_dict[dev_info['name']] = i 
  117.                 elif dev_info['maxOutputChannels']: 
  118.                     self.output_dict[dev_info['name']] = i 
  119.  
  120.     def get_device_index(self, name, input_in=True): 
  121.         """獲取選定設備索引""" 
  122.         if input_in and self.input_dict: 
  123.             return self.input_dict.get(name, -1) 
  124.         elif not input_in and self.output_dict: 
  125.             return self.output_dict.get(name, -1) 
  126.  
  127.     def save_audio_file(self, filename): 
  128.         """音頻文件保存""" 
  129.         wf = wave.open(filename, 'wb'
  130.         wf.setnchannels(self.channels) 
  131.         wf.setsampwidth(self.get_sample_size(self.format_sample)) 
  132.         wf.setframerate(self.fps) 
  133.         return wf 
  134.  
  135.     def terminate_run(self): 
  136.         """結束流錄制或流播放""" 
  137.         if self.stream: 
  138.             self.stream.stop_stream() 
  139.             self.stream.close() 
  140.         self.terminate() 
  141.  
  142.     def hotkey(self): 
  143.         """熱鍵監聽""" 
  144.         with keyboard.Listener(on_press=self.on_press) as listener: 
  145.             listener.join() 
  146.  
  147.     def on_press(self, key): 
  148.         try: 
  149.             if key.char == 't':  # t鍵,錄制結束,保存音頻 
  150.                 self.flag = True 
  151.             elif key.char == 'k':  # k鍵,錄制中止,刪除文件 
  152.                 self.flag = True 
  153.                 self.kill = True 
  154.         except Exception as e: 
  155.             print(e) 
  156.  
  157.  
  158. if __name__ == '__main__'
  159.     audio_record = AudioRecord() 
  160.     audio_record.get_in_out_devices() 
  161.     # 錄制 
  162.     print(audio_record.input_dict) 
  163.     audio_record.run('test.mp3'
  164.     # 播放 
  165.     print(audio_record.output_dict) 
  166.     audio_record.run('test.mp3', record=False

 小伙伴們,快快用實踐一下吧!

 

責任編輯:姜華 來源: Python爬蟲與數據挖掘
相關推薦

2021-12-30 08:56:57

Python摸魚倒計界面Python基礎

2022-02-17 10:26:17

JavaScript掃雷游戲前端

2021-11-01 10:26:07

CanvasAPI畫布技術HTML5

2022-01-24 11:02:27

PySimpleGUPython計算器

2023-05-22 10:04:24

2021-02-01 08:41:06

Java考試系統

2017-09-14 09:09:04

php應用LibreOfficeWord轉HTML

2021-02-04 15:52:46

Java考試系統

2021-01-04 09:55:26

Java移動互聯網

2021-01-05 09:04:20

Javatxt文件

2021-06-10 07:49:28

Python詞云圖wordcloud

2025-05-07 00:31:30

2021-07-14 09:00:00

JavaFX開發應用

2010-05-25 11:09:31

SVN工具

2021-06-24 10:52:35

JDBC數據庫圖書管理系統

2014-07-22 10:56:45

Android Stu第三方類庫

2021-01-13 09:03:48

Java游戲函數

2021-01-10 08:14:01

Go語言TCP掃描器

2018-09-09 15:38:55

SD-WAN網絡WAN

2019-07-30 11:35:54

AndroidRetrofit
點贊
收藏

51CTO技術棧公眾號

久久精品中文字幕电影| 亚洲在线中文字幕| 91精品久久久久久久| 好吊日在线视频| 国产一区二区三区不卡av| 伊人成人网在线看| 亚洲精品综合久久中文字幕| 九九九在线观看视频| 18videosex性欧美麻豆| 久久免费国产精品| www.久久久| 久草热在线观看| 欧美视频官网| 在线视频欧美日韩| 五月天丁香社区| 国产成人福利夜色影视| 天天综合色天天| 黄色一级片网址| 国产大学生校花援交在线播放| 国产麻豆欧美日韩一区| 国产成人在线一区二区| 一区二区三区免费高清视频| 日韩dvd碟片| 亚洲乱亚洲乱妇无码| 最好看的中文字幕| 国模私拍国内精品国内av| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲精品中文字幕在线| 亚洲人妻一区二区三区| 国产精品18久久久久久vr| 国产欧美婷婷中文| 日本免费在线观看视频| 在线播放一区| 欧美多人爱爱视频网站| 亚洲怡红院在线观看| 精品久久中文| 国产一区二区三区在线免费观看| 国产人妻黑人一区二区三区| 中文字幕一区二区三区四区久久 | 在线天堂中文字幕| 欧美激情综合| 久久夜色撩人精品| 亚洲一二三在线观看| 日韩av大片| 国产一区二区美女视频| 国产精品揄拍100视频| 奇米影视777在线欧美电影观看| 欧美成人女星排名| 欧美日韩一区二区区| 精品91福利视频| 日韩一区二区三区视频在线| 中文字幕乱码一区二区三区| 黄色影院在线播放| 久久99精品久久久久婷婷| 日本一区二区三区在线播放| 国产亚洲欧美在线精品| 久久高清免费观看| 日韩美女视频在线观看| 天天爱天天做天天爽| 99久久综合| 日韩视频免费中文字幕| 搜索黄色一级片| 伊人久久大香线| 欧美激情乱人伦| 福利一区二区三区四区| 美女精品在线观看| 国产精品 欧美在线| 黄色av一区二区| 精品一区二区三区免费视频| 亚洲va欧美va在线观看| 亚洲精品久久久久久无码色欲四季| 国产成人av电影| 国产在线一区二| 成人在线观看黄色| 国产精品国产三级国产普通话99| 91成人在线视频观看| 国产第一页在线视频| 欧美日韩在线第一页| 网站一区二区三区| 欧美成年网站| 亚洲码在线观看| 国产suv精品一区二区68| 亚洲小说欧美另类婷婷| 国产精品福利网| 国产按摩一区二区三区| 91亚洲精品久久久蜜桃| 五月天综合网| brazzers在线观看| 欧美一a一片一级一片| 少妇欧美激情一区二区三区| 亚洲免费毛片| 欧美成人h版在线观看| 国产精品午夜影院| 国产真实精品久久二三区| 精品亚洲欧美日韩| 黄色大片在线播放| 懂色av影视一区二区三区| 爱爱爱爱免费视频| 麻豆一区二区| 久久偷看各类女兵18女厕嘘嘘| 国产美女激情视频| 韩国成人福利片在线播放| 久久国产精品免费一区| 欧美私人网站| 一本到一区二区三区| 99久久综合网| 国产精品久久占久久| 奇米四色中文综合久久| www.久久精品.com| 国产一区二区视频在线播放| 精品视频在线观看| 色呦呦在线资源| 欧美日韩不卡视频| 日韩人妻无码精品综合区| 欧美日韩少妇| 成人网在线观看| 国产三级在线观看视频| 久久先锋影音av| 成人免费性视频| 成年永久一区二区三区免费视频| 欧美午夜影院在线视频| 99视频在线观看视频| 国产亚洲一卡2卡3卡4卡新区| 亚洲欧美999| 免费在线一级片| 韩日av一区二区| 亚洲欧洲日本国产| 校园春色亚洲色图| 日韩精品在线免费观看| 日韩美女黄色片| 福利电影一区二区三区| 在线观看18视频网站| 欧美aaa级| 中文字幕日韩综合av| 亚洲成人第一网站| 91色婷婷久久久久合中文| 成人性生活视频免费看| 天堂精品久久久久| 欧美成人午夜免费视在线看片| 亚洲一区二区视频在线播放| 欧美激情在线观看视频免费| 日本特级黄色大片| 午夜av成人| 伊人伊人伊人久久| 懂色av中文字幕| 国产清纯美女被跳蛋高潮一区二区久久w| 鲁一鲁一鲁一鲁一色| 福利片在线一区二区| 国a精品视频大全| 殴美一级特黄aaaaaa| 亚洲成人福利片| 精品无码在线视频| 久久高清免费观看| 日韩av电影免费播放| 欧美日韩五区| 少妇高潮久久久久久潘金莲| 888奇米影视| 亚洲欧美日本在线| 深夜视频在线观看| 中文久久精品| 日韩国产高清一区| 欧美黄页免费| 欧美俄罗斯乱妇| 日本天堂影院在线视频| 欧美午夜一区二区三区 | 亚洲欧美色视频| 欧美性xxxx极品hd欧美风情| 国产黄色网址在线观看| 日本不卡在线视频| 特大黑人娇小亚洲女mp4| yellow字幕网在线| 亚洲精品一二区| 中文在线观看免费高清| 国产精品不卡在线| caopor在线| 久久亚洲一区| 99亚洲国产精品| 亚洲大片精品免费| 91精品久久久久久| 蜜桃视频动漫在线播放| 中文字幕日韩欧美| 成人黄色在线观看视频| 欧美日韩午夜视频在线观看| 国产主播av在线| 成人动漫在线一区| 美女一区二区三区视频| 极品av少妇一区二区| 日韩精品大片| 超碰精品在线| 国产精品自产拍在线观| 三级资源在线| 一区二区三区精品99久久| 精品国产999久久久免费| 色综合网站在线| 中文字幕亚洲欧美日韩| 久久久久久久久久看片| 杨幂一区二区国产精品| 色乱码一区二区三区网站| 91情侣在线视频| 成人直播视频| 欧美成人在线免费视频| 国产三区四区在线观看| 日韩欧美成人激情| 中文字幕一区二区久久人妻| 亚洲成人免费影院| 欧美日韩午夜视频| 国产亚洲成av人在线观看导航 | 欧美高清自拍一区| 国产视频网站在线| 亚洲精品大尺度| 国产美女自慰在线观看| 欧美综合一区二区| 可以免费看的av毛片| 亚洲综合图片区| 顶臀精品视频www| 国产精品欧美久久久久一区二区 | 亚洲精品88| 精品一区二区电影| 黄频网站在线观看| 欧美一区二区三区在线电影| 波多野结衣理论片| 福利一区福利二区微拍刺激| 久久亚洲av午夜福利精品一区| 国产精品成人免费精品自在线观看| 右手影院亚洲欧美| 99视频一区二区| 性欧美18—19sex性高清| 欧美日韩理论| avove在线观看| 99久久这里只有精品| 亚洲高清视频一区| 欧美日中文字幕| 日韩精品极品视频在线观看免费| 人体久久天天| 久久99精品久久久久久久久久 | 久久精品99国产精品| 国产精彩免费视频| 丝袜亚洲精品中文字幕一区| 北条麻妃69av| 国产免费成人| 青青草原av在线播放| 亚洲专区一区| 日韩 欧美 高清| 天堂蜜桃一区二区三区| 免费看污污网站| 美女网站色91| 国产成人永久免费视频| 在线一级成人| 欧美精品一区二区视频| 欧美女优在线视频| 亚洲va欧美va国产综合久久| 欧美a在线观看| 国产精品福利视频| 日本欧美韩国国产| 欧美日韩亚洲一区二区三区在线观看| 九九免费精品视频在线观看| 日产精品一线二线三线芒果| 精品免费在线| 永久免费在线看片视频| 午夜久久tv| 欧美 丝袜 自拍 制服 另类 | 天天av天天操| 国产福利一区二区三区在线视频| 少妇献身老头系列| 99久久精品国产一区二区三区 | 亚洲女爱视频在线| 久久无码精品丰满人妻| 色综合久久中文综合久久牛| 在线观看免费观看在线| 日韩一区二区免费电影| 六月丁香综合网| 亚洲欧美制服第一页| 一本一道波多野毛片中文在线| 欧美巨大黑人极品精男| freexxx性亚洲精品| 国产精品高潮呻吟久久av黑人| 综合久久av| 精品麻豆av| 成人一二三区| 欧美精品卡一卡二| 日精品一区二区| 男男受被啪到高潮自述| 久久亚洲综合av| 侵犯稚嫩小箩莉h文系列小说| 精品国产91久久久久久老师| 在线观看国产精品入口男同| 日韩一卡二卡三卡| 免费毛片在线| 欧美极品少妇与黑人| 欧美日韩精品免费观看视欧美高清免费大片| 国产精品视频26uuu| 一本大道色婷婷在线| 国产精品视频网址| 久久人人爽人人爽人人片av不| 日本一区视频在线观看| 欧美日韩三级| 日本黄大片一区二区三区| av一本久道久久综合久久鬼色| 国产3级在线观看| 色婷婷av一区二区三区之一色屋| 日韩免费黄色片| 天天色综合成人网| 国产精品视频久久久久久| 欧美喷水一区二区| 色综合888| 欧美国产第一页| 亚洲二区av| 91观看网站| 欧美国产偷国产精品三区| 18禁免费观看网站| 国产情侣一区| 三年中文在线观看免费大全中国| 久久蜜桃av一区精品变态类天堂| 青青草手机在线观看| 欧美日本乱大交xxxxx| 九色在线播放| 欧美一级片免费在线| 国产v日韩v欧美v| 亚洲综合视频1区| 色天天综合网| 日本888xxxx| 久久久777精品电影网影网 | 在线综合欧美| 日韩精品视频一区二区在线观看| 国产盗摄视频一区二区三区| 亚洲熟女少妇一区二区| 在线免费精品视频| 美州a亚洲一视本频v色道| 91高清视频免费| 噜噜噜天天躁狠狠躁夜夜精品| 免费看欧美一级片| 国产精品一区在线| av成人免费网站| 91麻豆精品国产91久久久资源速度 | 欧美国产综合在线| 国产最新精品免费| 91视频青青草| 欧美一区三区四区| h片在线播放| 99免费在线视频观看| 午夜精品久久99蜜桃的功能介绍| 韩国三级与黑人| 一区二区三区91| 亚洲第一色网站| 国模精品一区二区三区色天香| 中文字幕一区日韩精品 | 日韩精品色哟哟| 亚洲а∨天堂久久精品2021| 欧美午夜视频网站| 日本高清中文字幕在线| 91久久国产婷婷一区二区| 一区二区免费不卡在线| 国产无套精品一区二区三区| 亚洲成av人片| 你懂的在线免费观看| 国产精品成av人在线视午夜片| 欧美肥老太太性生活| 中文字幕第三区| 亚洲v精品v日韩v欧美v专区| 人人九九精品| 国产精品一区久久| 亚洲精品小说| 亚洲精品第二页| 色菇凉天天综合网| 美女免费久久| 国产视色精品亚洲一区二区| 欧美亚洲一区二区三区| 在线观看免费小视频| 日韩一区二区免费在线电影| 欧美日韩国产观看视频| 亚洲成人网上| 国产盗摄一区二区三区| 中文字幕免费观看| 日韩在线观看免费高清| 高清欧美性猛交xxxx黑人猛| 激情视频综合网| 伊人色综合久久天天| 香蕉视频国产在线| 国产免费亚洲高清| 亚洲激情专区| 手机看片国产精品| 欧美日韩国产专区| 久操视频在线播放| 久久av一区二区三区亚洲| 卡一卡二国产精品 | 欧洲精品二区| 成人免费看吃奶视频网站| 狠狠色综合网| 久久久久亚洲AV成人无在| 日韩欧美高清dvd碟片| 国产免费不卡| 青青青在线观看视频| 中文字幕不卡的av| 人人妻人人澡人人爽人人欧美一区| 国产精品久久国产精品99gif| 一区在线播放| av成人免费网站| 亚洲最新av在线| 亚洲人成网77777色在线播放 | 一区二区三区自拍视频|