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

刷抖音看美腿中毒后,我決定做一款抖音App

開發 架構 開發工具
當下抖音非常火熱,你是不是也很心動做一個類似的 App?

 當下抖音非常火熱,你是不是也很心動做一個類似的 App?

[[268595]]

 

短視頻內容生產

優質短視頻內容的產生依賴于短視頻的采集和特效編輯,這就要求在進行抖音 App 開發時,用到基礎的美顏、混音、濾鏡、變速、圖片視頻混剪、字幕等功能。

在這些功能基礎上,進行預處理,結合 OpenGL、AI、AR 技術,產生很多有趣的動態貼紙玩法,使得短視頻內容更具創意。

 

視頻錄制的大致實現流程是先由 Camera 、 AudioRecord 進行最原始的相機畫面以及聲音的采集,然后將采集的數據進行濾鏡、降噪等前處理,處理完成后由 MediaCodec 進行硬件編碼,***采用 MediaMuxer 生成最終的 MP4 文件。

短視頻處理播放

視頻的處理和播放主要是視頻的清晰度、觀看流暢度方面的體驗。在這方面來講,可以采用“窄帶高清”技術,在節省碼率的同時能夠提供更加清晰的觀看體驗,經過測試,同等視頻質量下***可以節省 20-40% 帶寬。

除了帶寬之外,短視頻內容的存儲和 CDN 優化也尤為重要,通常我們需要上傳到云存儲服務器的內容是短視頻內容和封面內容。

而 CDN 優化帶給短視頻平臺的則是進一步的短視頻***載入和循環播放方面的體驗。

比如針對首播慢的問題,像阿里云播放器支持 QUIC 協議,基于 CDN 的調度,可以使短視頻***播放秒開的成功率達到 98%。

此外在循環播放時還可以邊播放邊緩存,用戶反復觀看某一短視頻時就不用耗費流量了。

錄制視頻的方式

在 Android 系統當中,如果需要一臺 Android 設備來獲取到一個 MP4 這樣的視頻文件的話,主流的方式一共與三種:

  • MediaRecorder
  • MediaCodec+MediaMuxer
  • FFmpeg

MediaRecorder:是 Android 系統直接提供給我們的錄制類,用于錄制音頻和視頻的一個類,簡單方便。

它不需要理會中間錄制過程,結束錄制后可以直接得到音頻文件進行播放,錄制的音頻文件是經過壓縮的,需要設置編碼器,錄制的音頻文件可以用系統自帶的播放器播放。

優點:大部分以及集成,直接調用相關接口即可,代碼量小,簡單穩定;缺點:無法實時處理音頻;輸出的音頻格式不是很多。

MediaCodec+MediaMuxer:MediaCodec 與 MediaMuxer 結合使用同樣能夠實現錄制的功能。

MediaCodec 是 Android 提供的編解碼類,MediaMuxer 則是復用類(生成視頻文件)。

從易用性的角度上來說肯定不如 MediaRecorder,但是允許我們進行更加靈活的操作,比如需要給錄制的視頻添加水印等各種效果。

優點: 與 MediaRecorder 一樣低功耗速度快,并且更加靈活;缺點: 支持的格式有限,兼容性問題。

FFmpeg:FFmpeg(Fast forword mpeg,音視頻轉換器)是一個開源免費跨平臺的視頻和音頻流方案,它提供了錄制/音視頻編解碼、轉換以及流化音視頻的完整解決方案。

主要的作用在于對多媒體數據進行解協議、解封裝、解碼以及轉碼等操作。

優點:格式支持非常的強,十分的靈活,功能強大,兼容性好;缺點:C語言些的音視頻編解碼程序,使用起來不是很方便。

雖然從數據看來 FFmpeg 是***的,但是我們得首先排除這種,因為他的易用性是最差的。

其次,MediaRecorder 也是需要排除的,所以在這里我比較推薦 MediaCodec+MediaMuxer 這種方式。

 

編碼器參數

碼率:數據傳輸時單位時間傳送的數據位數,KBPS:千位每秒。碼率和質量成正比,也和文件體積成正比。碼率超過一定數值,對圖像的質量沒有多大的影響。

幀數:每秒顯示多少個畫面,FPS。

關鍵幀間隔:在 H.264 編碼中,編碼后輸出的壓縮圖像數據有多種,可以簡單的分為關鍵幀和非關鍵幀。

關鍵幀能夠進行獨立解碼,看成是一個圖像經過壓縮的產物。而非關鍵幀包含了與其他幀的“差異”信息,也可以稱呼為“參考幀”,它的解碼需要參考關鍵幀才能夠解碼出一個圖像。非關鍵幀擁有更高的壓縮率。

MediaCodec+MediaMuxer 的使用

MediaMuxer 和 MediaCodec 這兩個類,它們的參考文:

  • http://developer.android.com/reference/android/media/MediaMuxer.html
  • http://developer.android.com/reference/android/media/MediaCodec.html

里邊有使用的框架。這個組合可以實現很多功能,比如音視頻文件的編輯(結合 MediaExtractor),用 OpenGL 繪制 Surface 并生成 MP4 文件,屏幕錄像以及類似 Camera App 里的錄像功能(雖然這個用 MediaRecorder 更合適)等。

它們一個是生成視頻,一個生成音頻,這里把它們結合一下,同時生成音頻和視頻。

基本框架和流程如下:

 

首先是錄音線程,主要參考 HWEncoderExperiments。通過 AudioRecord 類接收來自麥克風的采樣數據,然后丟給 Encoder 準備編碼:

  1. AudioRecord audio_recorder;  
  2. audio_recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,  
  3.  SAMPLE_RATE, CHANNEL_CONFIG, AUDIO_FORMAT, buffer_size);  
  4. // ...  
  5. audio_recorder.startRecording();  
  6. while (is_recording) {  
  7.  byte[] this_buffer = new byte[frame_buffer_size];  
  8.  read_result = audio_recorder.read(this_buffer, 0, frame_buffer_size); // read audio raw data  
  9.  // …  
  10.  presentationTimeStamp = System.nanoTime() / 1000;  
  11.  audioEncoder.offerAudioEncoder(this_buffer.clone(), presentationTimeStamp); // feed to audio encoder  
  12.  
  13. }  

這里也可以設置 AudioRecord 的回調(通過 setRecordPositionUpdateListener())來觸發音頻數據的讀取。

offerAudioEncoder() 里主要是把 Audio 采樣數據送入音頻 MediaCodec 的 InputBuffer 進行編碼:

  1. ByteBuffer[] inputBuffers = mAudioEncoder.getInputBuffers();  
  2. int inputBufferIndex = mAudioEncoder.dequeueInputBuffer(-1);  
  3. if (inputBufferIndex >= 0) {  
  4.  ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];  
  5.  inputBuffer.clear();  
  6.  inputBuffer.put(this_buffer);  
  7.  ...  
  8.  mAudioEncoder.queueInputBuffer(inputBufferIndex, 0, this_buffer.length, presentationTimeStamp, 0);  
  9. }  

下面,參考 Grafika-SoftInputSurfaceActivity,并加入音頻處理。主循環大體分四部分:

  1. try {  
  2.  // Part 1  
  3.  prepareEncoder(outputFile);  
  4.  ...  
  5.  // Part 2  
  6.  for (int i = 0; i < NUM_FRAMES; i++) {  
  7.  generateFrame(i);  
  8.  drainVideoEncoder(false);  
  9.  drainAudioEncoder(false);  
  10.  }  
  11.  // Part 3  
  12.  ...  
  13.  drainVideoEncoder(true);  
  14.  drainAudioEncoder(true);  
  15. } catch (IOException ioe) {  
  16.  throw new RuntimeException(ioe);  
  17. } finally {  
  18.  // Part 4  
  19.  releaseEncoder();  
  20. }  

第 1 部分是準備工作,除了 Video 的 MediaCodec,這里還初始化了 Audio 的 MediaCodec:

  1. MediaFormat audioFormat = new MediaFormat();  
  2. audioFormat.setInteger(MediaFormat.KEY_SAMPLE_RATE, 44100);  
  3. audioFormat.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1);  
  4. ...  
  5. mAudioEncoder = MediaCodec.createEncoderByType(AUDIO_MIME_TYPE);  
  6. mAudioEncoder.configure(audioFormat, nullnull, MediaCodec.CONFIGURE_FLAG_ENCODE);  
  7. mAudioEncoder.start();  

第 2 部分進入主循環,App 在 Surface 上直接繪圖,由于這個 Surface 是從 MediaCodec 中用 createInputSurface() 申請來的,所以畫完后不用顯式用 queueInputBuffer() 交給 Encoder。

drainVideoEncoder() 和 drainAudioEncoder() 分別將編碼好的音視頻從 Buffer 中拿出來(通過 dequeueOutputBuffer()),然后交由 MediaMuxer 進行混合(通過 writeSampleData())。

注意音視頻通過 PTS(Presentation Time Stamp,決定了某一幀的音視頻數據何時顯示或播放)來同步,音頻的 time stamp 需在 AudioRecord 從 MIC 采集到數據時獲取并放到相應的 bufferInfo 中。

視頻由于是在 Surface 上畫,因此直接用 dequeueOutputBuffer() 出來的 bufferInfo 中的就行,***將編碼好的數據送去 MediaMuxer 進行多路混合。

注意這里 Muxer 要等把 audio track 和 video track 都加入了再開始。

MediaCodec 在一開始調用 dequeueOutputBuffer() 時會返回一次 INFO_OUTPUT_FORMAT_CHANGED消息。

我們只需在這里獲取該 MediaCodec 的 format,并注冊到 MediaMuxer 里。

接著判斷當前 audio track 和 video track 是否都已就緒,如果是的話就啟動 Muxer。

總結來說,drainVideoEncoder() 的主邏輯大致如下,drainAudioEncoder 也是類似的,只是把 video 的 MediaCodec 換成 audio 的 MediaCodec 即可:

  1. while(true) {  
  2.  int encoderStatus = mVideoEncoder.dequeueOutputBuffer(mBufferInfo, TIMEOUT_USEC);  
  3.  if (encoderStatus == MediaCodec.INFO_TRY_AGAIN_LATER) {  
  4.  ...  
  5.  } else if (encoderStatus == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {  
  6.  encoderOutputBuffers = mVideoEncoder.getOutputBuffers();  
  7.  } else if (encoderStatus == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {  
  8.  MediaFormat newFormat = mAudioEncoder.getOutputFormat();  
  9.  mAudioTrackIndex = mMuxer.addTrack(newFormat);  
  10.  mNumTracksAdded++;  
  11.  if (mNumTracksAdded == TOTAL_NUM_TRACKS) {  
  12.  mMuxer.start();  
  13.  }  
  14.  } else if (encoderStatus < 0) {  
  15.  ...  
  16.  } else {  
  17.  ByteBuffer encodedData = encoderOutputBuffers[encoderStatus];  
  18.  ...  
  19.  if (mBufferInfo.size != 0) {  
  20.  mMuxer.writeSampleData(mVideoTrackIndex, encodedData, mBufferInfo);  
  21.  }  
  22.  mVideoEncoder.releaseOutputBuffer(encoderStatus, false);  
  23.  if ((mBufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {  
  24.  break;  
  25.  }  
  26.  }  
  27.  
  28. }  

第 3 部分是結束錄制,發送 EOS 信息,這樣在 drainVideoEncoder() 和 drainAudioEncoder 中就可以根據 EOS 退出內循環。

第 4 部分為清理工作。把 audio 和 video 的 MediaCodec,MediaCodec 用的 Surface 及 MediaMuxer 對象釋放。

***幾點注意:

  • 在 AndroidManifest.xml 里加上錄音權限,否則創建 AudioRecord 對象時鐵定失敗。
  • 音視頻通過 PTS 同步,兩個的單位要一致。
  • MediaMuxer 的使用要按照 Constructor->addTrack->start->writeSampleData->Stop 的順序。如果既有音頻又有視頻,在 Stop 前兩個都要 writeSampleData() 過。

總結

以上就是抖音類 App 的部分內容,其中的步驟和過程是我親自實踐過的,按照上述的過程應該都可以正常運行,寫這一篇文章花了很多時間,希望所有看了這篇文章的朋友們都能夠有一定的收獲。

 

 

責任編輯:武曉燕 來源: 51CTO博客
相關推薦

2021-06-28 05:19:32

抖音電腦

2022-01-22 07:44:12

抖音PC 版電腦刷抖音

2020-07-13 11:20:21

Python開發工具

2020-10-27 09:33:39

抖音印度移動應用

2022-06-06 12:19:08

抖音功耗優化Android 應用

2020-12-02 09:42:42

PythonApp抖音視頻

2019-03-07 15:04:37

抖音快手同城

2020-08-06 10:09:08

抖音木馬安全隱私

2025-07-30 09:36:47

2024-06-13 17:10:16

2020-09-26 22:30:18

開源技術 數據

2019-02-20 10:02:52

抖音小程序音躍球球

2021-04-29 05:58:20

微信搖一搖抖音

2018-06-05 10:54:06

2020-12-25 18:40:07

微信支付寶APP

2020-10-12 19:06:06

微信直播快手

2024-03-12 17:13:51

2022-08-10 08:41:01

Feed 容器維護管理

2022-07-20 22:55:39

直播OOM抖動
點贊
收藏

51CTO技術棧公眾號

欧美一区二区国产| 人妻一区二区三区四区| 成人一区二区不卡免费| 亚洲国产视频二区| 日本不卡视频在线观看| 欧美一级理论性理论a| 欧美一卡2卡3卡4卡无卡免费观看水多多| 开心激情五月网| 中文字幕乱码中文乱码51精品 | 欧美一级特黄aaaaaa在线看片| 国产一级性生活| 久久91视频| 91偷拍与自偷拍精品| 久久999免费视频| 嫩草视频免费在线观看| 国产黄色片在线播放| 亚洲久久一区| 亚洲成色www8888| 800av在线免费观看| 国产精品久久久久久久久毛片 | 国产精品久久波多野结衣| 国产一二三av| 成人交换视频| 国产欧美精品区一区二区三区| 2019亚洲男人天堂| 亚洲の无码国产の无码步美| 色屁屁www国产馆在线观看| 国产一区日韩二区欧美三区| 亚洲欧美三级伦理| 国产特级黄色大片| 日本福利片在线| 亚洲在线观看| 国产午夜精品麻豆| av片中文字幕| 国产片在线观看| 国产精品一二三四五| 欧美成人在线影院| 美女搡bbb又爽又猛又黄www| av影视在线看| 成人aaaa免费全部观看| 97超视频免费观看| 性欧美丰满熟妇xxxx性仙踪林| 伊人网在线播放| 亚洲欧美另类小说| 99re视频在线播放| 日韩成年人视频| 色88888久久久久久影院| 色综合久久久久综合体桃花网| 麻豆av一区二区三区| 国产免费www| 99久久久国产精品美女| 欧美一级免费大片| www.日本一区| 18videosex性欧美麻豆| 成人动漫在线一区| av观看久久| 最近国语视频在线观看免费播放| 欧美va久久久噜噜噜久久| 在线电影欧美成精品| 欧美日韩午夜爽爽| 91亚洲精选| 国产不卡高清在线观看视频| 7m第一福利500精品视频| 中文字幕影音先锋| 亚洲第一论坛sis| 欧美色老头old∨ideo| 青少年xxxxx性开放hg| 亚洲经典一区二区三区| 天堂一区二区在线| 亚洲黄色在线看| 在线免费观看av的网站| 羞羞污视频在线观看| 国产精品蜜臀av| 国产综合动作在线观看| 在线视频播放大全| 一区二区亚洲精品| 在线视频欧美性高潮| 国产一级片中文字幕| 亚洲欧美韩国| 色综合久久九月婷婷色综合| 日韩一级在线免费观看| 伊人在我在线看导航| 亚洲视频在线一区| 欧美午夜精品久久久久免费视| 精品国产伦一区二区三| 老司机精品视频网站| 日韩av色综合| 国产亚洲第一页| 色综合天天综合网中文字幕| 日韩av在线电影网| 天天干天天曰天天操| 激情五月综合婷婷| 欧美三日本三级三级在线播放| 亚洲精品www.| 亚洲日本va中文字幕| 日韩av在线看| 日韩黄色中文字幕| 欧美尿孔扩张虐视频| 欧美日韩精品一二三区| 日本不卡在线观看视频| 色呦呦在线免费观看| 午夜精品久久久久久久99樱桃| 午夜啪啪免费视频| 爱情岛论坛亚洲品质自拍视频网站 | 国产精品国产三级国产有无不卡| 国产不卡一区二区三区在线观看| 中文字幕免费视频观看| 久久99久国产精品黄毛片色诱| 秋霞av国产精品一区| 久久久国产精华液| 久久精品观看| 欧洲亚洲免费视频| 97国产成人无码精品久久久| 日本成人在线一区| 91网免费观看| www.亚洲欧美| 久久青草欧美一区二区三区| 久久精品丝袜高跟鞋| 亚洲欧美另类日韩| 国产精品羞羞答答xxdd| 精品一区二区三区自拍图片区| 精品久久久无码中文字幕| 99久久婷婷国产综合精品 | 成人小视频在线观看免费| 巨茎人妖videos另类| 天天综合色天天| 日韩成人三级视频| 欧美亚洲大片| 欧美性猛片aaaaaaa做受| 成人免费xxxxx在线视频| 黑人巨大亚洲一区二区久| 7777精品伊人久久久大香线蕉完整版 | 午夜视频1000| 成人一区在线观看| 99国产在线视频| 毛片在线播放网址| 国产日韩av一区| 四虎永久在线精品免费一区二区| 可以免费看污视频的网站在线| 亚洲精品成a人| www插插插无码免费视频网站| 草民电影神马电影一区二区| 精品偷拍一区二区三区在线看| 免费中文字幕在线| 久久国产精品第一页| 茄子视频成人在线观看 | 久久久久久com| 欧美成欧美va| 蜜桃一区二区三区四区| 亚洲一区亚洲二区| 黄色www视频| 亚洲欧美日韩国产综合| 色91精品久久久久久久久| 国产一区二区视频在线看| 精品久久五月天| 亚洲黄色免费在线观看| 国产精品v亚洲精品v日韩精品| 性欧美视频videos6一9| 无码人妻黑人中文字幕| 极品少妇xxxx精品少妇偷拍| 国产精品久久精品视| 香蕉久久aⅴ一区二区三区| 欧美一区二区啪啪| 久久国产美女视频| 国产精品亚洲欧美| 成人国产精品日本在线| 少妇高潮一区二区三区69| 久久毛片高清国产| 91免费视频网站在线观看| **爰片久久毛片| 国产综合在线看| 无码视频一区二区三区| 久久先锋影音av鲁色资源| 北条麻妃在线视频观看| 蜜臀91精品国产高清在线观看| 久久天天躁狠狠躁夜夜av| 国产成人无码精品久在线观看| 欧美a级理论片| 手机成人在线| 国产精品1区在线| 欧美乱大交xxxxx| 黄色美女一级片| 午夜精品视频在线观看| 免费观看av网站| 蜜臀av一区二区在线观看| 正在播放精油久久| 最新欧美电影| 自拍偷拍免费精品| 精品国产亚洲av麻豆| 午夜av电影一区| 永久免费毛片在线观看| 妖精视频成人观看www| 成人免费观看a| 国产丝袜视频在线播放| 日韩高清有码在线| 中文字幕久久久久| 99国产麻豆精品| 欧洲精品视频在线| 国产精品tv| 欧美激情女人20p| 国产精品国产三级国产普通话对白| 一区二区三区在线播放| 菠萝菠萝蜜网站| 精品白丝av| 色噜噜一区二区| 国产欧美88| 日韩av不卡电影| 久操视频在线播放| 欧美日韩高清影院| 国产真人真事毛片| 国产日韩精品视频一区| 人妻av一区二区三区| 一区二区三区午夜探花| 国产在线观看不卡| 99re在线视频| 亚洲国产精品电影| 亚洲网站免费观看| 精品av在线播放| 国产成人综合在线视频| 久久精品视频免费观看| 亚洲 自拍 另类小说综合图区| 欧美1区2区3| 国产成人精品免高潮在线观看| 性xxxx视频| 69p69国产精品| 人人妻人人爽人人澡人人精品 | 奇米888一区二区三区| 波多野结衣欧美| 欧美精品一二区| 黄色网址在线播放| 欧美性大战久久| www.av麻豆| 亚洲精品久久久蜜桃| 1024在线看片| 久久美女艺术照精彩视频福利播放| 俄罗斯女人裸体性做爰| 欧美色123| 国产综合精品一区二区三区| 日本一区二区三区电影免费观看| 久久99国产精品自在自在app | 国精产品一区一区三区视频| 成人免费直播在线| 91沈先生作品| 成人高潮aa毛片免费| 久久精品国产视频| 亚洲高清视频在线播放| 欧美顶级少妇做爰| 一本色道久久综合熟妇| 在线一区二区三区| 777777国产7777777| 成人视屏免费看| 在线观看网站黄| 国内成+人亚洲+欧美+综合在线| 日本美女高潮视频| 亚洲一区二区日韩| 亚洲欧美日韩精品综合在线观看| 国产亚洲观看| 成人性生交大片免费看视频直播 | 成人a在线观看| 国产第一亚洲| 国产精品亚洲一区二区三区| 性xxxxfjsxxxxx欧美| 美女精品久久久| 在线免费观看的av| 欧美黑人xxxⅹ高潮交| 丁香花高清在线观看完整版| 欧美黄色www| 国产精品vvv| 波霸ol色综合久久| 色综合免费视频| 精品视频久久久| 韩国精品视频| 色阁综合伊人av| 色婷婷视频在线| 日韩久久精品成人| 精品久久av| 三级精品视频久久久久| 免费看a在线观看| 亚洲精品aⅴ中文字幕乱码| 天天干天天舔天天射| 国产偷国产偷亚洲清高网站| 黄视频在线播放| 精品国模在线视频| 欧美日韩经典丝袜| 中文字幕亚洲字幕| 快射av在线播放一区| 欧美大片在线免费观看| 蜜桃视频在线观看播放| 久久成人精品一区二区三区| 在线观看中文| 2019中文在线观看| 巨大黑人极品videos精品| 亚洲在线免费视频| 欧美电影免费网站| 午夜欧美性电影| 精品成人久久| www.亚洲高清| 成人午夜精品在线| 99久久精品免费视频 | 中文字字幕码一二三区| 国产精品女主播在线观看| 麻豆chinese极品少妇| 国产精品久久久久久久久久久免费看| 岛国毛片在线观看| 日韩欧美国产网站| 国产精品乱子伦| 亚洲6080在线| 久久久久久久久久一级| 欧美一级黄色录像| 日本成人一区| 久久91亚洲人成电影网站| 午夜av成人| 国产福利视频一区| 久久99成人| 色女人综合av| 在线看片日韩| 亚洲精品mv在线观看| 九九**精品视频免费播放| zjzjzjzjzj亚洲女人| 国产福利不卡视频| 亚洲免费观看在线| 久久精品视频在线看| 美女毛片在线观看| 欧美无人高清视频在线观看| 婷婷五月综合激情| 久久亚洲欧美日韩精品专区| 偷拍精品精品一区二区三区| 国产精品7m视频| 91精品国产自产在线丝袜啪 | 欧美最顶级丰满的aⅴ艳星| 欧美9999| 综合视频免费看| 日韩精品每日更新| 国产精品久久久毛片| av激情亚洲男人天堂| 国产精品久久久久久久精| 欧美在线短视频| 日韩美女一级视频| 久久人人爽国产| 欧美a在线观看| 精品少妇人妻av一区二区| 美腿丝袜亚洲三区| 这里只有久久精品| 国产精品久久毛片av大全日韩| 中文字幕第四页| 亚洲第一中文字幕| 男女视频在线| 97伦理在线四区| 好吊日精品视频| 亚洲黄色小说在线观看| 一区二区三区 在线观看视频| 国产成人无码一区二区三区在线 | 欧美专区第一页| 五月综合久久| 日韩精品视频久久| 久久久91精品国产一区二区精品| 男人日女人网站| 亚洲欧美一区二区激情| 黄色综合网址| 视频在线精品一区| 美女视频一区二区| 国产又粗又长又黄的视频| 亚洲美女视频一区| 99久久精品日本一区二区免费| 亚洲国产精品va在线观看黑人| 丝袜综合欧美| 国产精品亚洲一区| 亚洲美女黄色| 草草影院第一页| 精品视频在线免费观看| 国产精品久久麻豆| 99se婷婷在线视频观看| 亚洲高清av| 国产交换配乱淫视频免费| 欧美三级电影精品| av观看在线| 久久精品中文字幕一区二区三区| 午夜一区二区三区不卡视频| 一区二区三区在线观看免费视频| 欧美三级视频在线观看| 中文字幕有码在线观看| 国产日韩一区二区三区| 久久精品二区三区| 久久国产美女视频| 亚洲精品99久久久久| 91综合国产| 日韩中文字幕在线不卡| 麻豆国产精品一区二区三区 | 波多野结衣视频在线观看| 日韩有码片在线观看| 第四色中文综合网| 污视频免费在线观看网站| 亚洲制服丝袜在线| 日中文字幕在线| 91久久国产综合久久91精品网站 | 久久久久国产一区二区三区| 亚洲美女久久| 日本特黄在线观看| 色偷偷久久一区二区三区| 亚洲小说区图片|