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

用HTML5 Audio API開發游戲音樂

開發 前端
音頻在很大程度上使得多媒體體驗非常引人注目。如果你曾經嘗試在關閉聲音的情況下看電影,你就很可能已經注意到了這一點。游戲的音頻提出了一些有趣的挑戰。要創建令人著迷的游戲音樂,設計人員需要調節潛在的不可預知的狀態。現在我們進行深入解析網頁上的游戲音頻,詳細情況下文

注意:本文討論的API尚未最終確定,仍在不斷變化。請在自己的項目中謹慎使用。

介  紹

音頻在很大程度上使得多媒體體驗非常引人注目。如果你曾經嘗試在關閉聲音的情況下看電影,你就很可能已經注意到了這一點。

游戲也不例外!我最喜愛的視頻游戲的回憶里包含了音樂和聲效。在二十年后的今天,大多情況下,當玩我最愛的游戲時,我仍然不能把“塞爾達”里近藤浩二的樂曲和馬特大氣的暗黑配樂從我的頭腦里驅逐掉。這同樣適用于音效,例如魔獸里單位實時點擊的響應,以及任天堂的經典例子。

游戲的音頻提出了一些有趣的挑戰。要創建令人著迷的游戲音樂,設計人員需要調節潛在的不可預知的狀態。實際上,部分游戲能持續未知的時間長度,聲音可以與環境互動,并以復雜的方式混合起來,例如室內效果和相對聲音定位。最后,可能有大量的一次播放聲效,這需要不錯的混合效果和在渲染時沒有性能損失。

網頁上的游戲音頻

簡單的游戲使用<audio>標簽可能就足夠了。然而,許多瀏覽器提供的簡陋實現導致音頻毛刺和高延遲的出現。這可能只是暫時性的問題,因為廠商們都在努力改進各自的實現。要了解<audio>標簽的支持情況,我們可以使用areweplayingyet.org所提供的優秀測試工具。

一旦深入<audio>標簽規范,就會清楚了解到有很多事情根本不能用它實現。這并不奇怪,因為它主要被設計來支持多媒體播放。這些限制包括:

  • 無法為聲音信號使用濾波器
  • 無法訪問原始的PCM(宇捷:即WAV)數據
  • 沒有來源和聽眾位置、方向的概念
  • 沒有細粒度的計時

在下文中,我將深入介紹一些用WebAudio API編寫游戲音頻方面的內容。在入門教程里可以了解到此API的簡單介紹。

背景音樂

游戲里往往有循環播放的背景音樂。例如,一個背景音軌如下:

如果你的循環音樂很短并且已知,會相當的煩人。當玩家被困在一個區域或者關卡上,會同時連續播放相同的背景音樂,我們可能需要逐漸淡出來防止讓玩家厭煩。另一種策略是,根據游戲中的上下文,把不同的音效強度通過逐漸的淡入淡出混合起來。

如果你的玩家在一個史詩般的BOSS關卡里,可能需要對幾個不同的情緒范圍進行混音,例如從藝術氛圍到有心理暗示的氛圍再到激烈的氛圍。音樂合成軟件通常允許你通過選擇音軌集合來導出幾種混音(它們具有同樣長度)。這樣音軌之間就有某種內部一致性,避免出現從一個音軌切換到另一個時出現不和諧的轉換過渡。

然后,利用WebAudio API,你可以使用某些類例如BufferLoader通過XHR導入所有這些音效樣本(這在介紹網絡音頻API的文章中進行了深入介紹)。加載音效需要時間,所以這些在游戲中使用的音效在每一關開始時,應該在頁面加載時同時載入,或者在播放器播放時增量加載。

接下來,你需要為每個節點創建一個源,并為每個源創建一個增益節點,連接圖如下:

        

完成之后,你可以在一個循環中同時回放這些音效源,因為它們都具有相同的長度,WebAudio API將保證它們保持一致。由于最后的BOSS戰時音效風格會變得相近或更不同,游戲可以使用類似于下面的增量算法來改變鏈中各節點對應的增益值:

  1. // Assume gains is an array of AudioGainNode, normVal is the intensity  
  2. // between 0 and 1.  
  3. var value = normVal * (gains.length - 1);  
  4. // First reset gains on all nodes.  
  5. for (var i = 0; i < gains.length; i++) {  
  6.   gains[i].gain.value = 0;  
  7. }  
  8. // Decide which two nodes we are currently between, and do an equal  
  9. // power crossfade between them.  
  10. var leftNode = Math.floor(value);  
  11. // Normalize the value between 0 and 1.  
  12. var x = value - leftNode;  
  13. var gain1 = Math.cos(x * 0.5*Math.PI);  
  14. var gain2 = Math.cos((1.0 - x) * 0.5*Math.PI);  
  15. // Set the two gains accordingly.  
  16. gains[leftNode].gain.value = gain1;  
  17. // Check to make sure that there's a right node.  
  18. if (leftNode < gains.length - 1) {  
  19.   // If there is, adjust its gain.  
  20.   gains[leftNode + 1].gain.value = gain2;  

在上述方法中,有兩個音效源同時播放,我們使用同等功率的曲線(如介紹所述)從它們之間淡入淡出。下面的示例使用了這一策略,演示的背景音樂在魔獸爭霸2的主題上逐漸增強:


 完整源代碼

缺少的環節:Web Audio的Audio標簽

現在許多游戲開發商為背景音樂使用<audio>標簽,因為它非常適合流媒體內容。現在你可以通過<audio>標簽把內容帶入網絡音頻的上下文。

<audio>標簽支持流媒體相當有用,因為它可以讓你立即播放背景音樂,而無須等待下載所有內容。在網絡音頻API支持音頻流之后,你可以操作或分析它們。下面的例子為通過<audio>標簽播放的音樂使用了一個低通濾波器:

  1. var audioElement = document.querySelector('audio');  
  2. var mediaSourceNode = context.createMediaElementSource(audioElement);  
  3. // Create the filter  
  4. var filter = context.createBiquadFilter();  
  5. // Create the audio graph.  
  6. mediaSourceNode.connect(filter);  
  7. filter.connect(context.destination); 

關于<audio>標簽和網絡音頻API整合更多的討論,可以看看這篇短文。

音  效

游戲經常在響應用戶輸入或者游戲狀態改變時播放聲音效果。但是像背景音樂一樣,音效可以很快的讓用戶厭倦。 為了避免這種情況,最好有一個音效池放置相似但是不同的音效。 這可以從輕微變化到急劇變化間通過固定長度來過渡,像魔獸系列里點擊各單位的時候。

游戲音效的另外一個關鍵點是可以同時有多個。想象一下,你與多個演員拍攝槍戰時。每個機槍每秒觸發多次,造成幾十個音效同時播放。從多個源同時播放音效,還要對音效源精確計時,是網絡音頻API真正的亮點。

下面的例子演示了由多個單獨子彈樣本組成的機槍,其創建了多個播放時間錯開的聲源。

  1. var time = context.currentTime;  
  2. for (var i = 0; i < rounds; i++) {  
  3.   var source = this.makeSource(this.buffers[M4A1]);  
  4.   source.noteOn(time + i * interval);  

下面是這個代碼的效果:


如果你覺得聲音太響了,我感到抱歉。我們將在后面的章節討論測量和動態壓縮。

現在,如果你游戲里所有的機槍都像這樣響起,那將相當無聊。當然,它們會基于目標的距離和相對位置而有所差異(稍后討論),但即使這樣做可能還不夠。幸運的是,網絡音頻API提供了對上面的示例進行輕松調整的方式,主要有兩種:

  1. 發射子彈時間上微妙的變化
  2. 改變每個音效的播放速率(同時改變音高),以更好地模擬現實世界中的隨機性。

這兩種方法的效果如下:


 

完整源代碼

對于這些技術在現實生活中的實際例子,可以看看臺球桌的演示 ,它采用了隨機抽樣和變化的播放速率來表現更有趣的球的碰撞聲。

3D定位音效

游戲往往設定在一個2D或者3D的世界里。在這樣的情況下,立體定位的音頻可以大大增加沉浸感的體驗。幸運的是,網絡音頻API帶來了內置硬件加速的位置音頻特性,可以直接的使用。 順便說一下,你應該確保有立體聲揚聲器(最好是耳機)來運行下面的例子。 在下面的示例中,你可以通過在畫布上滾動鼠標滾輪來更改聲源的角度。


完整源代碼

上面的例子中,有一個監聽者在畫布正中(人的圖標),同時鼠標控制聲源(喇叭圖標)的位置,這是使用AudioPannerNode實現這種效果的簡單例子。它的基本思想是通過設置音頻信號源的位置響應鼠標的移動,如下所示:

  1. PositionSample.prototype.changePosition = function(position) {  
  2.   // Position coordinates are in normalized canvas coordinates  
  3.   // with -0.5 < x, y < 0.5 
  4.   if (position) {  
  5.     if (!this.isPlaying) {  
  6.       this.play();  
  7.     }  
  8.     var mul = 2;  
  9.     var x = position.x / this.size.width;  
  10.     var y = -position.y / this.size.height;  
  11.     this.panner.setPosition(x * mul, y * mul, -0.5);  
  12.   } else {  
  13.     this.stop();  
  14.   }  
  15. }; 

關于網絡音頻空間化處理需要了解的事情:

  • 監聽者默認在原點(0,0,0)。
  • 網絡音頻位置API沒有單位,所以我引入了一個乘數使得演示的聲效更好。
  • 網絡音頻采用Y-型直角坐標系(和大多數計算機圖形系統相反)。 這就是為什么我在上面的代碼片段進行了y軸的變換。

高級:音錐

定位模型非常強大,而且相當先進,主要基于OpenAL。詳細信息請查看上述規范的第3和第4節。


 

在有單一的AudioListener連接到網絡音頻API的情況下,它可以通過位置和方向配置空間。每個源可以通過一個AudioPannerNode(音頻聲像節點)來使得音頻輸入空間化。聲像節點有位置和方向,以及距離和方向性模型。

距離模型指定的增益取決于和源的接近程度,而方向模型可以通過指定內外錐來配置,以決定監聽者在內部錐里,在內外錐之間,或在外部錐之外時增益的大小(通常為負值)。

  1. var panner = context.createPanner();  
  2. panner.coneOuterGain = 0.5;  
  3. panner.coneOuterAngle = 180;  
  4. panner.coneInnerAngle = 0

雖然我的例子在2D空間,但是這種模式很容易推廣到三維。例如3D聲音空間化的例子可以看看這個位置演示。另外對于位置來說,網絡音頻模型也可以選擇多普勒頻移的速度。這個例子展示了多普勒效應的詳細信息。

關于這一主題的更多信息,可以閱讀混合定位音頻和WebGL的詳細教程 。

室內效果和濾波器

在現實中,聲音被感覺的方式很大程度上取決于聲音所在的房間。相同吱吱作響的門在地下室與大型的開放式大廳里相比會發出相當不同的聲音。高產值的游戲將會模仿這些影響,因為為每個環境創建一套獨立的音效是相當昂貴的,并且會產生相當多的材料和大量的游戲數據。

嚴格地說,描述原始聲音和現實中所聽到之間不同的音頻術語是脈沖響應。這些脈沖響應可以被精心錄制,其實也有網站為了方便你的使用存放了許多這種預先錄制的脈沖響應文件(作為音頻方式存儲)。

對于如何從一個給定的環境創建脈沖響應的更多信息,可以通讀網絡音頻API規范卷積部分的“錄音設置”一節。

更重要的是針對我們的目標,網絡音頻API提供了一個簡單的方法來在我們的聲音里應用脈沖響應,即通過使用ConvolverNode的方式。

  1. // Make a source node for the sample.  
  2. var source = context.createBufferSource();  
  3. source.buffer = this.buffer;  
  4. // Make a convolver node for the impulse response.  
  5. var convolver = context.createConvolver();  
  6. convolver.buffer = this.impulseResponseBuffer;  
  7. // Connect the graph.  
  8. source.connect(convolver);  
  9. convolver.connect(context.destination); 

下面的示例展示了一些不同脈沖響應下的軍事演講:

還可以看看網絡音頻API規范頁面上的房間效果演示,以及這個讓你控制通過一個偉大的爵士標準混合干(原料)和濕(通過卷積處理)的例子。

最后的倒計時

現在你已經創建了一個游戲,添加了位置音頻,而且現在在你的圖里有大量的同時播放的AudioNodes。 太棒了,但是還有一件事要考慮:

由于多種聲音互相疊加起來播放,你可能會發現在某種情況下,聲音超過了揚聲器的最大承受能力。就像圖像超出了畫布邊界的情況一樣,聲音也會在波形超過最大閾值時進行削波,導致明顯的失真。波形看起來會像下面這樣:


這里有一個真實削波的例子。波形看起來相當糟糕:


聽起來也很糟糕:

聽到像上面這樣嚴重扭曲的音樂是很嚴重的事,或者與此相反,過分的混合會迫使聽眾調大音量。如果你現在有這種情況,你真的需要立即解決它!

檢測削波

從技術角度看,削波發生在任何一個通道的信號值超出有效范圍即-1和1之間時。一旦檢測到削波反生時,視覺反饋會非常有用。要可靠的實現這點,可以把JavaScriptAudioNode放到你的圖里。音頻圖將會按如下進行設置:

  1. // Assume entire sound output is being piped through the mix node.  
  2. var meter = context.createJavaScriptNode(2048, 1, 1);  
  3. meter.onaudioprocess = processAudio;  
  4. mix.connect(meter);  
  5. meter.connect(context.destination); 

同時通過下面的processAudio方法可以檢測到削波:

  1. function processAudio(e) {  
  2.   var buffer = e.inputBuffer.getChannelData(0);  
  3.    
  4.   var isClipping = false;  
  5.   // Iterate through buffer to check if any of the |values| exceeds 1.  
  6.   for (var i = 0; i < buffer.length; i++) {  
  7.     var absValue = Math.abs(buffer[i]);  
  8.     if (absValue >= 1) {  
  9.       isClipping = true;  
  10.       break;  
  11.     }  
  12.   }  

在通常情況下要小心,因為性能方面的原因,不要過度的使用JavaScriptAudioNode。 在這種情況下,一種替代的方法是為getByteFrequencyData在音頻圖里加入RealtimeAnalyserNode,在渲染時通過requestAnimationFrame來檢測。這個方法更有效,但會錯過多數信號(包括有可能削波的地方),因為渲染最多發生60次,而音頻信號的變化更為迅速。

因為削波的檢測非常重要,未來我們很可能將看到網絡音頻API節點內置MeterNode。

防止削波

通過調整主要AudioGainNode的增益,你可以控制混音的水平來防止削波。 然而在實踐中,因為你游戲中所播放的聲音可能取決于大量因素,所以決定主增益值來防止所有情況下的削波是相當困難的。在通常情況下,你應該調整增益來預期最壞的情況,但這是一門藝術,而不是科學。

要知道這是具體如何實現的,下面是一個示例,在此你可以調整主增益。如果增益設置過高,會導致聲音削波。監視器會變成紅色來給出削波的視覺反饋。下面的音響生態環境是Disco Dan的混音作品,原曲是由Yasunori Mitsuda所做的偉大的“超時空之輪”。

完整源代碼

加一點糖

音樂和游戲制作中經常使用效果器來平滑信號和控制尖峰。此功能在網絡音頻世界里可以通過DynamicsCompressorNode 來實現,可以在你的音頻圖加入一個更響亮,更豐富,更飽滿的音色,這也有利于削波。直接引用規范里的話,這個節點

“...降低了信號最響亮部分的體積,并提升了最柔軟部分的音量... 尤其重要的是在游戲和音樂應用里,當大量獨立的聲音播放時,控制信號整體水平,并有助于避免削波。”

使用動態壓縮通常來說是一個好主意,尤其是在游戲的設置里,正如前面所討論的一樣,你并不知道到底此時什么聲音將會何時播放。DinahMoe實驗室的Plink是很好的例子,因為聲音的回放完全取決于你和其他參與者。效果器在大多數情況下是有用的,除了一些罕見的情況外,而這種情況下你可以使用已經精心調整過,并且聽起來“恰到好處”的曲目。

它的實現是一件簡單的事情,只需要在你的音頻圖里把DynamicsCompressorNode作為目標前的最后一個節點添加進去。

  1. // Assume the output is all going through the mix node.  
  2. var compressor = context.createDynamicsCompressor();  
  3. mix.connect(compressor);  
  4. compressor.connect(context.destination); 

 

 

關于動態壓縮的更多細節,Wikipedia上的這篇文章非常翔實。

總結一下,仔細檢查削波,通過插入主增益節點來防止它的出現。然后使用動態效果器節點來收緊整個混音。你的音頻圖可能看起來像這樣:

結  論

以上內容涵蓋了我認為使用網絡音頻API來開發游戲音樂最重要的方面。有了這些技術,可以在你的瀏覽器上構建真正有吸引力的音頻體驗。在我結束本文之前,給你一個提示:如果你的瀏覽器標簽使用page visibility API切換到了后臺,一定要讓聲音暫停,否則你會為用戶提供一個潛在的令人厭煩的體驗。

對于關于網絡音頻的其他信息,需要在入門的文章進行更多了解。如果你有問題,看看它是否已經在網絡音頻FAQ里得到解答。最后,如果你有其他問題,可以在Stack Overflow上的web-audio標簽下提問。

在本文結束前,讓我為你展示網絡音頻API現在在實際游戲里的用途:

  • Field Runners,以及有關一些技術細節的文檔。
  • 憤怒的小鳥,最近換用了網絡音頻API。到這個文檔查看更多信息。
  • SkidRacer,大量使用了立體音效。

 

譯自:http://www.html5rocks.com/en/tutorials/webaudio/games/

原文鏈接:http://blog.csdn.net/hfahe/article/details/7443276

【編輯推薦】

  1. 分享Web應用運行的細節問題
  2. 10個基于Web的HTML5音樂播放器
  3. 關于HTML5的七個傳說
  4. HTML5人工智能基礎及實踐
  5. 10個絕對讓你瘋狂的HTML5和JS實驗性展示
責任編輯:林師授 來源: hfahe的博客
相關推薦

2017-08-09 15:57:11

JavaScriptHtml5音頻

2015-07-08 16:38:10

Cocos游戲引擎

2014-12-30 17:13:51

HTML5

2015-10-23 13:44:14

巴巴獵

2013-01-08 11:00:20

IBMdW

2012-05-03 14:29:53

HTML5

2014-11-12 16:00:12

火舞游戲

2013-10-21 15:24:49

html5游戲

2015-09-06 09:51:02

html5開發經驗開發工具

2015-09-06 13:26:41

HTML5游戲開發工具手游開發

2015-09-07 14:17:44

HTML5游戲開發工具

2013-01-18 10:59:44

IBMdW

2016-01-05 09:39:32

HTML5游戲開發工具

2012-03-29 09:18:47

HTML5WEB

2013-06-24 14:55:30

HTML5

2015-07-10 10:27:21

Cocos游戲開發引擎

2011-12-09 20:25:16

HTML5

2016-04-18 16:20:55

2012-11-07 09:43:58

IBMdw

2015-07-24 17:08:24

點贊
收藏

51CTO技術棧公眾號

日本麻豆一区二区三区视频| 国产一区在线电影| 国产精品毛片无遮挡高清| 国产精品亚洲一区二区三区| 国产精品酒店视频| 国产激情一区| 懂色av一区二区三区| 日韩在线三区| 国产高清免费观看| 亚洲在线一区| 欧美裸体xxxx极品少妇| 醉酒壮男gay强迫野外xx| 99九九久久| 中文字幕人成不卡一区| 国产精品久久久久久久久久久久冷| 国产精品国产三级国产专区52| 欧美在线观看视频一区| 精品国产亚洲在线| 高清一区在线观看| 欧美男男tv网站在线播放| 国产精品狼人久久影院观看方式| 国产欧美日韩伦理| 国产日韩精品suv| 亚洲一级在线| 欧美国产日韩精品| 2014亚洲天堂| 九九亚洲精品| 亚洲福利精品在线| 天天操夜夜操很很操| 视频在线日韩| 午夜精品福利一区二区蜜股av| 欧美日韩在线免费观看视频| 精品推荐蜜桃传媒| 国产成人精品一区二区三区四区 | 亚洲人体大胆视频| 久久国产精彩视频| 天天操天天摸天天舔| 亚洲免费观看高清完整版在线观| 日韩久久免费av| 久久久久久久久久一区二区| 伊人久久高清| 色悠悠亚洲一区二区| 国内精品在线观看视频| 午夜伦理在线视频| 亚洲免费观看在线观看| 亚洲自拍偷拍二区| av影片在线看| 亚洲国产高清在线观看视频| 女同一区二区| 日本福利片高清在线观看| 成人精品国产福利| av一区二区三区四区电影| 国产精品羞羞答答在线| 麻豆国产精品视频| 国产欧美日韩视频| 在线观看视频中文字幕| 日本sm残虐另类| 国产精品福利在线观看| 国产精品欧美综合| 日韩和欧美一区二区三区| 欧亚精品中文字幕| 国内自拍视频在线播放| 另类av一区二区| 欧美在线一级视频| 日韩免费av网站| 日韩高清在线电影| 国产精品白嫩初高中害羞小美女| 成人免费视频国产免费| 日韩电影在线观看一区| 国产精品亚洲第一区| 一级成人免费视频| 国产一区二区三区日韩| 粉嫩av免费一区二区三区| 丰满人妻一区二区| 97精品电影院| 色女人综合av| 麻豆传媒视频在线观看免费| 亚洲色图欧美偷拍| 久久男人资源站| 国产剧情av在线播放| 欧美日韩性视频| 欧美一级裸体视频| 成人豆花视频| 精品国产百合女同互慰| 精品国产av无码| 第一会所sis001亚洲| 日韩在线播放视频| 久久久久久久久久久网 | aaa毛片在线观看| 综合在线影院| 欧美精品高清视频| 麻豆av免费看| 国产中文精品久高清在线不| 精品国产欧美一区二区三区成人| 久草视频手机在线观看| 性感少妇一区| 91在线高清免费观看| 欧美熟妇另类久久久久久不卡| 久久伊人中文字幕| 一区二区三区|亚洲午夜| 欧美人与禽猛交乱配| 色爱区综合激月婷婷| 亚洲一二三不卡| 日韩极品少妇| 欧美成人激情图片网| 国内自拍视频在线播放| 精品一区免费av| 国产尤物99| 日本视频在线| 精品人伦一区二区三区蜜桃免费| 男生操女生视频在线观看| 成人av地址| 色噜噜久久综合伊人一本| 日韩福利片在线观看| 免费成人在线影院| 久久久精彩视频| 91高清在线观看视频| 欧美自拍丝袜亚洲| 中文成人无字幕乱码精品区| 98精品久久久久久久| 日本欧美黄网站| 黑人操亚洲女人| 国产精品第13页| 免费午夜视频在线观看| 综合视频一区| 久久精品人人做人人爽| 无码一区二区三区| 成人免费高清视频在线观看| 亚洲亚洲精品三区日韩精品在线视频| 9lporm自拍视频区在线| 欧美一卡二卡三卡| 香蕉成人在线视频| 日本不卡123| 欧美日韩日本网| 成人免费图片免费观看| 日韩精品最新网址| 婷婷激情四射网| 蜜臀av在线播放一区二区三区| 精品国产乱码久久久久| 蜜臀av在线| 日韩美一区二区三区| 成人免费精品动漫网站| 美女视频黄 久久| 日韩欧美精品一区二区三区经典| 不卡专区在线| 亚洲国产日韩欧美在线图片| 青娱乐免费在线视频| 国产一区二区不卡| 一区二区三区四区视频在线| 成人自拍视频网| 中文字幕久久久av一区| 中文字幕精品无码亚| 亚洲国产精品精华液ab| 美女黄色片视频| 久久在线电影| 国产日韩精品电影| 日本美女高清在线观看免费| 欧美日韩美少妇| 永久免费看片直接| 黑人精品欧美一区二区蜜桃| 美国av在线播放| 国产一区二区三区免费观看在线| 久久天堂电影网| 国产ts变态重口人妖hd| 一区二区三区四区在线播放| 精品国产午夜福利在线观看| 欧美特黄视频| 国产综合 伊人色| 97se综合| 夜夜嗨av一区二区三区四区| 亚洲一区二区色| 亚洲天堂精品视频| 美女日批在线观看| 亚洲免费大片| 日本一区二区在线视频| 成人精品国产| 久久福利视频导航| 欧美 日韩 人妻 高清 中文| 激情成人中文字幕| 国产sm调教视频| 国产专区综合网| 69sex久久精品国产麻豆| 亚洲盗摄视频| 国产美女精品免费电影| 日韩另类在线| 亚洲美女激情视频| 97人妻一区二区精品免费视频| 亚洲精品免费看| 中文字幕av观看| 麻豆精品久久久| 日韩极品视频在线观看| 欧美精美视频| 5g国产欧美日韩视频| 伊人久久国产| 久久国产精品久久久久| 日韩午夜影院| 91精品婷婷国产综合久久| 亚洲精品国产精品乱码| 国产精品狼人久久影院观看方式| 91九色蝌蚪porny| 日本网站在线观看一区二区三区| 国产女主播av| 欧美精品一二| 国产精品av一区| 国产原创一区| 88xx成人精品| 色婷婷视频在线观看| 亚洲人成电影网站色| www.久久色| 91福利视频在线| 欧美精品xxxxx| 中文字幕二三区不卡| 成人性生活免费看| 国产在线精品免费av| 男人舔女人下面高潮视频| 欧美激情综合色综合啪啪| 日韩一二三区不卡在线视频| 精品久久ai| 99www免费人成精品| 欧美成人一二区| 国产xxx69麻豆国语对白| 97人澡人人添人人爽欧美| 久久综合九色九九| 337p日本欧洲亚洲大胆鲁鲁| 亚洲男人天堂2023| 免费观看国产精品| 欧美剧情电影在线观看完整版免费励志电影 | aaa在线视频| 亚洲第一在线综合网站| 日韩在线观看视频一区二区| 久久久久久久电影| 久久人人妻人人人人妻性色av| 国产成人在线视频免费播放| 黄色aaaaaa| 激情综合色丁香一区二区| 日本美女高潮视频| 日韩电影免费在线| 成人观看免费完整观看| 国产伦理一区| 日韩av黄色网址| 在线一区视频| 欧美亚洲精品一区二区| 日韩视频免费| 国产精品50p| 国产一区导航| 丝袜老师办公室里做好紧好爽| 99精品国产一区二区青青牛奶 | 中文字幕在线看高清电影| 日韩欧美黄色| 91久久极品少妇xxxxⅹ软件| 欧美a在线观看| 91亚洲精品久久久久久久久久久久| 国产精品亲子伦av一区二区三区| 国产精品色视频| 毛片在线免费播放| 在线观看黄av| 精品国产电影一区二区| 韩国av免费在线观看| 日韩精品影音先锋| 国产精品国产三级国产aⅴ| 欧美日韩久久久一区| 在线观看毛片av| 欧美精品在线视频| 999久久久久| 精品国产区一区| 神马午夜一区二区| 亚洲欧美激情另类校园| 成年人在线视频| 日韩在线中文字| 国产不卡在线| 久久久免费精品| 国产va在线视频| 欧美中文字幕视频| 狂野欧美性猛交xxxx| 亚洲综合小说区| 久久亚洲道色| 视频一区二区三区免费观看| 久久精品国产大片免费观看| 国产日韩欧美大片| 日韩一级不卡| 日韩一级理论片| 国产美女精品在线| 国产精品一区二区人妻喷水| 久久久蜜桃精品| 免费精品在线视频| 亚洲国产日韩综合久久精品| 五月天激情四射| 欧美日韩不卡一区| 欧美视频一二区| 中文国产成人精品| 国产精品186在线观看在线播放| 欧美一区二粉嫩精品国产一线天| 国产成人午夜性a一级毛片| 97超级在线观看免费高清完整版电视剧| 国产精品丝袜在线播放| 亚洲v欧美v另类v综合v日韩v| 午夜国产一区| 日日摸天天爽天天爽视频| 国产中文一区二区三区| 日本xxxx裸体xxxx| 18欧美亚洲精品| youjizz在线视频| 日韩欧美中文字幕公布| 日产精品久久久久久久性色| 久久久91精品国产| 台湾佬成人网| 国产精品日韩欧美一区二区三区 | 欧洲精品码一区二区三区免费看| 中文精品久久| 欧美激情成人网| jvid福利写真一区二区三区| 亚洲区一区二区三| 色综合久久久久久久久久久| 亚洲AV无码精品国产| 宅男66日本亚洲欧美视频| 两个人看的在线视频www| 亚洲一区二区三区在线免费观看| 国产videos久久| 波多野结衣之无限发射| 国产高清不卡一区| aa片在线观看视频在线播放| 亚洲综合久久久久| 国产精品久久久久久免费播放| 亚洲欧美另类在线观看| 极品在线视频| 国产三级精品在线不卡| 好吊日精品视频| 一级片免费在线观看视频| 国产色综合一区| 日本熟女毛茸茸| 日韩精品极品视频| 黄色视屏在线免费观看| 国产欧美在线一区二区| 欧美视频亚洲视频| 四川一级毛毛片| 日韩理论片中文av| 国产一区二区波多野结衣| 中文字幕欧美亚洲| 97成人超碰| 亚洲不卡1区| 日本视频免费一区| 日本一二三不卡视频| 91九色02白丝porn| 黄色国产在线| 国产精品第3页| 北条麻妃国产九九九精品小说| 欧美精品第三页| 国产三区在线成人av| 中文字幕日韩免费| 亚洲欧美中文另类| 欧美国产日韩电影| 亚洲高清在线观看一区| 日本亚洲最大的色成网站www| 中文字幕第4页| 欧美偷拍一区二区| 日本天堂在线观看| 7777精品久久久大香线蕉小说| 欧美69视频| 在线观看免费视频国产| 亚洲va欧美va国产va天堂影院| 神马午夜在线观看| 日韩av电影手机在线| 欧美伦理影院| 亚洲免费黄色网| 亚洲欧美欧美一区二区三区| 午夜精品久久久久久久96蜜桃| 久久久久久成人| 综合亚洲色图| 另类小说第一页| 亚洲三级在线观看| 丁香花免费高清完整在线播放| 77777亚洲午夜久久多人| 综合国产视频| 天天操天天干天天做| 一区二区在线观看视频| 亚洲av成人无码久久精品老人 | 国产精品18p| 国产婷婷色综合av蜜臀av| 成人涩涩视频| 91国在线高清视频| 久久综合国产精品| 91成人国产综合久久精品| 欧美高清视频免费观看| 一区二区三区视频免费观看| www.亚洲高清| 亚洲亚洲人成综合网络| 国产一二在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女| 一区在线免费观看| av男人的天堂av| 日韩欧美一级二级三级| 伊人久久av| 欧美少妇一区二区三区| 久久亚洲综合av| 国产ts变态重口人妖hd| 日本最新高清不卡中文字幕| 午夜精品国产| www久久久久久久| 精品国产一区二区在线观看| 97精品国产99久久久久久免费|