日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

在Spydroid-ipcamera基础上做推流的实现之二

發(fā)布時(shí)間:2024/3/12 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Spydroid-ipcamera基础上做推流的实现之二 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

接上一篇,已經(jīng)清楚RTSP推流需要發(fā)送的RTSP請(qǐng)求消息,所以我們實(shí)現(xiàn)一個(gè)RTSP的客戶端,完成這些請(qǐng)求消息,并將H264的RTP包推送到指定的RTSP服務(wù)器即可,這個(gè)客戶端同時(shí)推送過(guò)Darwin和Crtmp-server兩個(gè)RTSP的服務(wù)端,來(lái)驗(yàn)證推流客戶端的功能實(shí)現(xiàn)。

下面是我們實(shí)現(xiàn)的RtspPushStreamClient推流客戶端類:

package net.majorkernelpanic.streaming.rtmp;import static net.majorkernelpanic.streaming.SessionBuilder.AUDIO_NONE; import static net.majorkernelpanic.streaming.SessionBuilder.VIDEO_NONE; import android.hardware.Camera.CameraInfo; import android.os.Handler; import android.util.Log; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.Random;import net.majorkernelpanic.streaming.Session; import net.majorkernelpanic.streaming.SessionBuilder; import net.majorkernelpanic.streaming.rtsp.RtspClient; import net.majorkernelpanic.streaming.rtsp.RtspClient.Callback;/*** Created by aaa on 2015/11/25.*/ public class RtspPushStreamClient implements Callback{private static final String TAG = "RtspPushStreamClient"; // private static int localPort = 8100;RtspPushClient client;String mSdp;Handler mUserHandler;//public RtspPushStreamClient(Handler handler){client = new RtspPushClient(this); mUserHandler= handler;}public void startRtspClient(String ip, String rtmp_path){ client.start_connect(ip, 554, rtmp_path); }public void switchCamera(){client.switchCamera();}public void setFlash(boolean mode){client.setFlash(mode);}public void stopRtspClient(){client.stop_connect();}public static class RtspPushClient {private RtspClient client;private String request_uri;String mSdp;public RtspPushClient(RtspPushStreamClient streamClient){client = new RtspClient(); client.setCallback(streamClient);}public void start_connect(String ip, int port, String path){//"rtsp://192.168.0.5:9010/"client.setServerAddress(ip, port); client.setStreamPath("/"+path);//"/live/rtsp_test"//setCamera --CAMERA_FACING_FRONTSessionBuilder builder = SessionBuilder.getInstance().clone(); // builder.setCamera(CameraInfo.CAMERA_FACING_FRONT); // builder.setAudioEncoder(SessionBuilder.AUDIO_AAC).setVideoEncoder(SessionBuilder.VIDEO_H264);builder.setAudioEncoder(SessionBuilder.AUDIO_AAC).setVideoEncoder(SessionBuilder.VIDEO_H264);SessionBuilder b = SessionBuilder.getInstance(); Random rand = new Random();int localPort = rand.nextInt(1000)+ 8100; //8100-9100localPort = (localPort & 0xFFFE); /* turn to even number */Session session = builder.build(localPort); client.setSession(session);client.startStream(localPort); }public void switchCamera(){ client.switchCamera();}public void setFlash(boolean mode){client.setFlash(mode);}public void stop_connect(){ client.stopStream();} }@Overridepublic void onRtspUpdate(int message, Exception exception) {// TODO Auto-generated method stubLog.d(TAG, "message:"+message);mUserHandler.sendEmptyMessage(message); }}


RTSPClient的tryConnection方法完成了和服務(wù)器的RTSP請(qǐng)求交互:

/** Copyright (C) 2011-2014 GUIGUI Simon, fyhertz@gmail.com* * This file is part of Spydroid (http://code.google.com/p/spydroid-ipcamera/)* * Spydroid is free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 3 of the License, or* (at your option) any later version.* * This source code is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.* * You should have received a copy of the GNU General Public License* along with this source code; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/package net.majorkernelpanic.streaming.rtsp;import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.util.Log;import net.majorkernelpanic.streaming.Session; import net.majorkernelpanic.streaming.Stream; import net.majorkernelpanic.streaming.video.VideoStream;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.Socket; import java.net.SocketException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.HashMap; import java.util.Locale; import java.util.concurrent.Semaphore; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** RFC 2326.* A basic and asynchronous RTSP client.* The original purpose of this class was to implement a small RTSP client compatible with Wowza.* It implements Digest Access Authentication according to RFC 2069. */ public class RtspClient {public final static String TAG = "RtspClient";/** Message sent when the connection to the RTSP server failed. */public final static int ERROR_CONNECTION_FAILED = 0x01;/** Message sent when the credentials are wrong. */public final static int ERROR_WRONG_CREDENTIALS = 0x03;/** * Message sent when the connection with the RTSP server has been lost for * some reason (for example, the user is going under a bridge).* When the connection with the server is lost, the client will automatically try to* reconnect as long as {@link #stopStream()} is not called. **/public final static int ERROR_CONNECTION_LOST = 0x04;/*** Message sent when the connection with the RTSP server has been reestablished.* When the connection with the server is lost, the client will automatically try to* reconnect as long as {@link #stopStream()} is not called.*/public final static int MESSAGE_CONNECTION_RECOVERED = 0x05;private final static int STATE_STARTED = 0x00;private final static int STATE_STARTING = 0x01;private final static int STATE_STOPPING = 0x02;private final static int STATE_STOPPED = 0x03;private int mState = 0;private int mPort = 0;private class Parameters {public String host; public String username;public String password;public String path;public Session session;public int port;public Parameters clone() {Parameters params = new Parameters();params.host = host;params.username = username;params.password = password;params.path = path;params.session = session;params.port = port;return params;}}private Parameters mTmpParameters;private Parameters mParameters;private Socket mSocket;private String mSessionID;private String mAuthorization;private BufferedReader mBufferedReader;private OutputStream mOutputStream;private int mCSeq;private Callback mCallback;private Handler mMainHandler;private Handler mHandler;/*** The callback interface you need to implement to know what's going on with the * RTSP server (for example your Wowza Media Server).*/public interface Callback {public void onRtspUpdate(int message, Exception exception);}public RtspClient() {mCSeq = 0;mTmpParameters = new Parameters();mTmpParameters.port = 1935;mTmpParameters.path = "/";setCredentials("1102", "123456");mAuthorization = null;mCallback = null;mMainHandler = new Handler(Looper.getMainLooper());mState = STATE_STOPPED;final Semaphore signal = new Semaphore(0);new HandlerThread("net.majorkernelpanic.streaming.RtspClient"){@Overrideprotected void onLooperPrepared() {mHandler = new Handler();signal.release();}}.start();signal.acquireUninterruptibly();}/*** Sets the callback interface that will be called on status updates of the connection* with the RTSP server.* @param cb The implementation of the {@link Callback} interface*/public void setCallback(Callback cb) {mCallback = cb;}/*** The {@link Session} that will be used to stream to the server.* If not called before {@link #startStream()}, a it will be created.*/public void setSession(Session session) {mTmpParameters.session = session;}public Session getSession() {return mTmpParameters.session;} /*** Sets the destination address of the RTSP server.* @param host The destination address* @param port The destination port*/public void setServerAddress(String host, int port) {mTmpParameters.port = port;mTmpParameters.host = host;}/*** If authentication is enabled on the server, you need to call this with a valid username/password pair.* Only implements Digest Access Authentication according to RFC 2069.* @param username The username* @param password The password*/public void setCredentials(String username, String password) {mTmpParameters.username = username;mTmpParameters.password = password;}/*** The path to which the stream will be sent to. * @param path The path*/public void setStreamPath(String path) {mTmpParameters.path = path;}public boolean isStreaming() {return mState==STATE_STARTED|mState==STATE_STARTING;}/*** Connects to the RTSP server to publish the stream, and the effectively starts streaming.* You need to call {@link #setServerAddress(String, int)} and optionnally {@link #setSession(Session)} * and {@link #setCredentials(String, String)} before calling this.* Should be called of the main thread !*/public void startStream(int port) {mPort = port;if (mTmpParameters.host == null) throw new IllegalStateException("setServerAddress(String,int) has not been called !");if (mTmpParameters.session == null) throw new IllegalStateException("setSession() has not been called !");mHandler.post(new Runnable () {@Overridepublic void run() {if (mState != STATE_STOPPED) return;mState = STATE_STARTING;Log.i(TAG,"Connecting to RTSP server...");// If the user calls some methods to configure the client, it won't modify its behavior until the stream is restartedmParameters = mTmpParameters.clone();mParameters.session.setDestination(mTmpParameters.host);try {mParameters.session.syncConfigure();} catch (Exception e) {mParameters.session = null;mState = STATE_STOPPED;return;} try {tryConnection();} catch (Exception e) { // postError(ERROR_CONNECTION_FAILED);Log.i(TAG,"Exception failed:"+e.getMessage()); // abord();return;}try {mParameters.session.syncStart();mState = STATE_STARTED;// mHandler.post(mConnectionMonitor);} catch (Exception e) {Log.i(TAG,"ii Exception failed:"+e.getMessage()); // abord();}//notify user success.postMessage(0); }});}public void switchCamera(){Stream stream = mParameters.session.getTrack(1);//videoif (stream instanceof VideoStream){VideoStream videoStream = (VideoStream)stream;try {videoStream.switchCamera();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public void setFlash(boolean bFlag){Stream stream = mParameters.session.getTrack(1);//videoif (stream instanceof VideoStream){VideoStream videoStream = (VideoStream)stream;try {videoStream.setFlashState(bFlag);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/*** Stops the stream, and informs the RTSP server.*/public void stopStream() {mHandler.post(new Runnable () {@Overridepublic void run() {if (mParameters != null && mParameters.session != null) {mParameters.session.stop();}if (mState != STATE_STOPPED) {mState = STATE_STOPPING;abord();}}});}public void release() {stopStream();mHandler.getLooper().quit();}private void abord() {Log.i(TAG, "abord");try {sendRequestTeardown();} catch (Exception ignore) {}try {mSocket.close();} catch (Exception ignore) {}mHandler.removeCallbacks(mConnectionMonitor);mHandler.removeCallbacks(mRetryConnection);mState = STATE_STOPPED; }private void tryConnection() throws IOException {mCSeq = 0;mSocket = new Socket(mParameters.host, mParameters.port);mBufferedReader = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));mOutputStream = mSocket.getOutputStream();sendRequestOption();sendRequestAnnounce();if (sendRequestSetup()){if (!sendRequestRecord()){Log.e(TAG, "Record failed.");postError(ERROR_CONNECTION_FAILED);}}else{postError(ERROR_CONNECTION_FAILED);}}/*** Forges and sends the ANNOUNCE request */private void sendRequestAnnounce() throws IllegalStateException, SocketException, IOException {String body = mParameters.session.getSessionDescription();String request = "ANNOUNCE rtsp://"+mParameters.host+":"+mParameters.port+mParameters.path+" RTSP/1.0\r\n" +"Content-Type: application/sdp\r\n" +"CSeq: " + (++mCSeq) + "\r\n" +"User-Agent: " + "XdjaClient" + "\r\n" +"Content-Length: " + body.length() + "\r\n\r\n" +body; Log.i(TAG,request.substring(0, request.indexOf("\r\n")));mOutputStream.write(request.getBytes("UTF-8"));Response response = Response.parseResponse(mBufferedReader);if (response.headers.containsKey("server")) {Log.i(TAG,"RTSP server name:" + response.headers.get("server"));} else {Log.i(TAG,"RTSP server name unknown");} // // try { // Matcher m = Response.rexegSession.matcher(response.headers.get("session")); // m.find(); // mSessionID = m.group(1); // } catch (Exception e) { // throw new IOException("Invalid response from server. Session id: "+mSessionID); // }if (response.status == 401) {String nonce, realm;Matcher m;if (mParameters.username == null || mParameters.password == null) throw new IllegalStateException("Authentication is enabled and setCredentials(String,String) was not called !");try {m = Response.rexegAuthenticate.matcher(response.headers.get("www-authenticate")); m.find();nonce = m.group(2);realm = m.group(1);} catch (Exception e) {throw new IOException("Invalid response from server");}String uri = "rtsp://"+mParameters.host+":"+mParameters.port+mParameters.path;String hash1 = computeMd5Hash(mParameters.username+":"+m.group(1)+":"+mParameters.password);String hash2 = computeMd5Hash("ANNOUNCE"+":"+uri);String hash3 = computeMd5Hash(hash1+":"+m.group(2)+":"+hash2);mAuthorization = "Digest username=\""+mParameters.username+"\",realm=\""+realm+"\",nonce=\""+nonce+"\",uri=\""+uri+"\",response=\""+hash3+"\"\r\n";request = "ANNOUNCE rtsp://"+mParameters.host+":"+mParameters.port+mParameters.path+" RTSP/1.0\r\n" +"CSeq: " + (++mCSeq) + "\r\n" +"Content-Type: application/sdp"+ "\r\n" +"Content-Length: " + body.length() + "\r\n" +"Authorization: " + mAuthorization +"Session: " + mSessionID + "\r\n" +"User-Agent: " + "xdja-xa" + "\r\n\r\n" +body+ "\r\n\r\n";Log.i(TAG,request);mOutputStream.write(request.getBytes("UTF-8"));response = Response.parseResponse(mBufferedReader);if (response.status == 401) throw new RuntimeException("Bad credentials !");} else if (response.status == 403) {throw new RuntimeException("Access forbidden !");}}/*** Forges and sends the SETUP request */private boolean sendRequestSetup() throws IllegalStateException, SocketException, IOException {boolean bHaveAudio = false;for (int i=0;i<2;i++) {Stream stream = mParameters.session.getTrack(i);if (stream != null) {if (i == 0){bHaveAudio = true;}/* String request = "SETUP rtsp://"+mParameters.host+":"+mParameters.port+mParameters.path+"/trackID="+i+" RTSP/1.0\r\n" +"Transport: RTP/AVP/UDP;unicast;client_port="+(5000+2*i)+"-"+(5000+2*i+1)+";mode=record\r\n" +addHeaders();*/int trackId = i;if (!bHaveAudio){trackId = 0;}String request = "SETUP rtsp://"+mParameters.host+":"+mParameters.port+mParameters.path+"/streamid="+trackId+" RTSP/1.0\r\n" +"Transport: RTP/AVP/UDP;unicast;client_port="+(mPort+2*i)+"-"+(mPort+2*i+1)+";mode=record\r\n" +addHeaders();Log.i(TAG,request.substring(0, request.indexOf("\r\n")));mOutputStream.write(request.getBytes("UTF-8"));Response response = Response.parseResponse(mBufferedReader);//if (i == 0){try { mSessionID = response.headers.get("session").trim();Log.i(TAG,"mSessionID: "+ mSessionID+ "response.status:"+response.status);} catch (Exception e) {throw new IOException("Invalid response from server. Session id: "+mSessionID);}}if (response.status != 200){Log.i(TAG,"return for resp :" +response.status);return false;}Matcher m;try {if (response.headers.get("transport") == null){Log.i(TAG,"return for not transport");return false;}m = Response.rexegTransport.matcher(response.headers.get("transport")); m.find();stream.setDestinationPorts(Integer.parseInt(m.group(3)), Integer.parseInt(m.group(4))); // mParameters.session.syncStart(i);Log.i(TAG, "Setting destination ports: "+Integer.parseInt(m.group(3))+", "+Integer.parseInt(m.group(4)));} catch (Exception e) {e.printStackTrace();int[] ports = stream.getDestinationPorts();Log.i(TAG,"Server did not specify ports, using default ports: "+ports[0]+"-"+ports[1]);}} }return true;}/*** Forges and sends the RECORD request */private boolean sendRequestRecord() throws IllegalStateException, SocketException, IOException {String request = "RECORD rtsp://"+mParameters.host+":"+mParameters.port+mParameters.path+" RTSP/1.0\r\n" +"Range: npt=0.000-\r\n" +addHeaders();Log.i(TAG,request.substring(0, request.indexOf("\r\n")));mOutputStream.write(request.getBytes("UTF-8"));Response resp = Response.parseResponse(mBufferedReader);if (resp.status != 200){return false;}return true;}/*** Forges and sends the TEARDOWN request */private void sendRequestTeardown() throws IOException {String request = "TEARDOWN rtsp://"+mParameters.host+":"+mParameters.port+mParameters.path+" RTSP/1.0\r\n" + addHeaders();Log.i(TAG,request.substring(0, request.indexOf("\r\n")));mOutputStream.write(request.getBytes("UTF-8"));}/*** Forges and sends the OPTIONS request */private void sendRequestOption() throws IOException {String request = "OPTIONS rtsp://"+mParameters.host+":"+mParameters.port+mParameters.path+" RTSP/1.0\r\n" + addHeaders();Log.i(TAG,request.substring(0, request.indexOf("\r\n")));mOutputStream.write(request.getBytes("UTF-8"));Response.parseResponse(mBufferedReader);} private String addHeaders() {return "CSeq: " + (++mCSeq) + "\r\n" +"Content-Length: 0\r\n" +(mSessionID != null ? "Session: " + mSessionID + "\r\n" :"") +"User-Agent: " + "xdja-xa" + "\r\n" +(mAuthorization != null ? "Authorization: " + mAuthorization + "\r\n\r\n":"\r\n");} /*** If the connection with the RTSP server is lost, we try to reconnect to it as* long as {@link #stopStream()} is not called.*/private Runnable mConnectionMonitor = new Runnable() {@Overridepublic void run() {if (mState == STATE_STARTED) {try {// We poll the RTSP server with OPTION requestssendRequestOption();mHandler.postDelayed(mConnectionMonitor, 6000);} catch (IOException e) {// Happens if the OPTION request failspostMessage(ERROR_CONNECTION_LOST);Log.e(TAG, "Connection lost with the server...");mParameters.session.stop();mHandler.post(mRetryConnection);}}}};/** Here, we try to reconnect to the RTSP. */private Runnable mRetryConnection = new Runnable() {@Overridepublic void run() {if (mState == STATE_STARTED) {try {Log.e(TAG, "Trying to reconnect...");tryConnection();try {mParameters.session.start();mHandler.post(mConnectionMonitor);postMessage(MESSAGE_CONNECTION_RECOVERED);} catch (Exception e) {abord();}} catch (IOException e) {mHandler.postDelayed(mRetryConnection,1000);}}}};final protected static char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};private static String bytesToHex(byte[] bytes) {char[] hexChars = new char[bytes.length * 2];int v;for ( int j = 0; j < bytes.length; j++ ) {v = bytes[j] & 0xFF;hexChars[j * 2] = hexArray[v >>> 4];hexChars[j * 2 + 1] = hexArray[v & 0x0F];}return new String(hexChars);}/** Needed for the Digest Access Authentication. */private String computeMd5Hash(String buffer) {MessageDigest md;try {md = MessageDigest.getInstance("MD5");return bytesToHex(md.digest(buffer.getBytes("UTF-8")));} catch (NoSuchAlgorithmException ignore) {} catch (UnsupportedEncodingException e) {}return "";}private void postMessage(final int message) {mMainHandler.post(new Runnable() {@Overridepublic void run() {if (mCallback != null) {mCallback.onRtspUpdate(message, null); }}});}private void postError(final int message) {mMainHandler.post(new Runnable() {@Overridepublic void run() {if (mCallback != null) {mCallback.onRtspUpdate(message, null); }}});} static class Response {// Parses method & uripublic static final Pattern regexStatus = Pattern.compile("RTSP/\\d.\\d (\\d+) (\\w+)",Pattern.CASE_INSENSITIVE);// Parses a request headerpublic static final Pattern rexegHeader = Pattern.compile("(\\S+):(.+)",Pattern.CASE_INSENSITIVE);// Parses a WWW-Authenticate headerpublic static final Pattern rexegAuthenticate = Pattern.compile("realm=\"(.+)\",\\s+nonce=\"(\\w+)\"",Pattern.CASE_INSENSITIVE);// Parses a Session headerpublic static final Pattern rexegSession = Pattern.compile("(\\d+)",Pattern.CASE_INSENSITIVE);// Parses a Transport headerpublic static final Pattern rexegTransport = Pattern.compile("client_port=(\\d+)-(\\d+).+server_port=(\\d+)-(\\d+)",Pattern.CASE_INSENSITIVE);public int status;public HashMap<String,String> headers = new HashMap<String,String>();/** Parse the method, uri & headers of a RTSP request */public static Response parseResponse(BufferedReader input) throws IOException, IllegalStateException, SocketException {Response response = new Response();String line;Matcher matcher;// Parsing request method & uriif ((line = input.readLine())==null) throw new SocketException("Connection lost");matcher = regexStatus.matcher(line);matcher.find();response.status = Integer.parseInt(matcher.group(1));// Parsing headers of the requestwhile ( (line = input.readLine()) != null) {//Log.e(TAG,"l: "+line.length()+"c: "+line);if (line.length()>3) {matcher = rexegHeader.matcher(line);matcher.find();Log.i(TAG, "response.headers: "+matcher.group(1).toLowerCase(Locale.US)+": "+ matcher.group(2));response.headers.put(matcher.group(1).toLowerCase(Locale.US), matcher.group(2));} else {break;}}if (line==null) throw new SocketException("Connection lost");Log.i(TAG, "Response from server: "+response.status);return response;}}}


界面部分只需要實(shí)例化一個(gè)RtspPushStreamClient對(duì)象,并調(diào)用startRtspClient方法就可以啟動(dòng)推流動(dòng)作,如果是視頻流,則需要添加一個(gè)net.majorkernelpanic.streaming.gl.SurfaceView 的SurfaceView,并通過(guò)SessionBuilder.getInstance().setSurfaceView設(shè)置到spydroid提供的接口中。



總結(jié)

以上是生活随笔為你收集整理的在Spydroid-ipcamera基础上做推流的实现之二的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

人人干干人人 | 黄色av大片 | 人人爱夜夜操 | 91完整版在线观看 | 99精品在线观看 | 久久国产精品视频观看 | 亚洲五月综合 | 国产超碰97| 99re国产视频| 中文字幕在线播出 | 在线中文字幕播放 | 波多野结衣视频一区 | 国产精品久久久久久久久久久杏吧 | 伊人久久在线观看 | 久久综合九色综合欧美就去吻 | 国产成人久久精品 | 麻豆免费精品视频 | 亚洲精品乱码久久久久久蜜桃91 | 91精品视屏 | 日韩超碰 | 中日韩欧美精彩视频 | 久久视频这里只有精品 | 国产精品久久久久aaaa九色 | 2019天天干天天色 | 日本中文字幕在线观看 | 国产精品麻豆视频 | 婷婷丁香激情综合 | 色综合久久悠悠 | 综合中文字幕 | 在线成人性视频 | 欧美日韩在线观看一区 | 国产色视频| 91传媒在线观看 | 国产成人精品一区二区在线 | www.婷婷com | 天堂av在线| 日韩亚洲欧美中文字幕 | 久草免费电影 | 伊人精品影院 | 国产美女精品久久久 | 久久精品爱爱视频 | 色偷偷人人澡久久超碰69 | 亚洲 欧美 变态 国产 另类 | 亚洲狠狠操 | 国产三级午夜理伦三级 | 欧美国产日韩中文 | 日韩免费电影网 | 国产露脸91国语对白 | 国产精品入口麻豆www | www国产一区 | 欧美精品做受xxx性少妇 | 美女精品网站 | 国产一区二区在线免费视频 | 国产高清视频免费观看 | 午夜av大片 | 国产精品国产自产拍高清av | 91精品视频在线看 | 亚洲精品视频免费在线观看 | 91自拍视频在线 | 在线观影网站 | 欧美日韩国产成人 | 午夜精品久久久久久久久久久久 | 国产精品一区二区白浆 | 免费福利小视频 | www.色五月 | 亚洲精品www久久久久久 | 一区av在线播放 | 亚洲欧美国产精品 | 狠狠操狠狠干天天操 | 久久999久久| 中文字幕国内精品 | 亚洲国内精品 | av软件在线观看 | 激情五月色播五月 | 国产精品第一 | 在线 高清 中文字幕 | 欧美日韩视频在线 | 国产资源精品 | 亚洲欧美日韩在线看 | 久草在线免费看视频 | 日韩资源视频 | 香蕉久久久久久久 | 午夜精品导航 | 久久天堂网站 | 久久8精品| 久久电影国产免费久久电影 | 欧美最新大片在线看 | 91亚色在线观看 | www.黄色片.com | 97超碰免费在线观看 | av在线收看 | 国产九九热视频 | 免费在线日韩 | 日韩免费中文 | 国产一二区视频 | 国精产品满18岁在线 | 国产精品va在线 | 五月婷婷久 | 极品嫩模被强到高潮呻吟91 | 在线91精品 | 久青草国产在线 | 又黄又刺激 | 亚洲精品久久视频 | 欧美成人精品欧美一级乱 | 99久久精品午夜一区二区小说 | 黄污污网站 | 91漂亮少妇露脸在线播放 | 成年人视频在线免费 | 欧美在线aa | 一区二区三区中文字幕在线 | av电影免费在线看 | 97成人精品区在线播放 | 人人擦| 亚洲一区视频免费观看 | 国产精品久久久久久久久搜平片 | 人人干人人上 | 亚洲一区二区三区91 | 久久亚洲欧美 | 在线观看亚洲国产 | 日韩免费观看av | 成年人app网址 | 国产精品video爽爽爽爽 | 成人欧美一区二区三区在线观看 | 日韩欧美视频二区 | 97人人澡人人添人人爽超碰 | 亚洲一区二区精品视频 | 四虎成人精品在永久免费 | 一区精品在线 | 天天操天天能 | 日韩三级.com | 亚洲专区路线二 | 中文乱幕日产无线码1区 | 久草在线久草在线2 | 久久草草热国产精品直播 | 黄色软件视频网站 | 99精品久久久久久久久久综合 | 国内成人精品2018免费看 | 久久精品99国产精品酒店日本 | 91成品视频 | 国产精品一区二区在线观看 | 中文字幕欲求不满 | 亚洲精品白浆高清久久久久久 | 91高清视频 | 婷婷社区五月天 | av夜夜操 | 国产精品久久久久久一区二区三区 | 国产在线综合视频 | bbbb操bbbb | 精品一区二区免费视频 | 日韩大片在线免费观看 | 国产精品嫩草影视久久久 | 怡红院成人在线 | 亚洲精品一区二区18漫画 | 免费在线观看视频a | 色久五月 | 成人一级片免费看 | 99在线看 | 欧美精品乱码99久久影院 | 国产精品a级 | 国产精品国产精品 | av中文字幕第一页 | 中文字幕在线一二 | 久久久久久久久久影视 | 日韩专区在线观看 | 超碰在线日韩 | 91福利社在线观看 | 四虎影视精品永久在线观看 | 免费的成人av | 亚洲精区二区三区四区麻豆 | 国产高清网站 | 久草在线精品观看 | 黄色日批网站 | 99视频在线观看免费 | 精品久久精品久久 | 欧美黄色高清 | 三日本三级少妇三级99 | 日韩欧美视频二区 | 亚洲成人第一区 | 国产精品成人一区二区 | 久久久久免费视频 | 中文字幕一区二区三区四区视频 | 天天操天天色综合 | 九九精品毛片 | 99久久精品午夜一区二区小说 | 国产中文在线视频 | 911久久香蕉国产线看观看 | 久久免费av电影 | 日韩一区二区三 | 岛国av在线免费 | 亚洲欧洲国产视频 | 九九热精品视频在线播放 | 国精产品999国精产品岳 | 国产精品久久久免费 | 最新av网址大全 | 国产色视频一区二区三区qq号 | 亚洲丝袜一区 | 久久99精品热在线观看 | 亚洲精品乱码久久久久 | 国产视频中文字幕 | 亚洲精品久久久久999中文字幕 | 免费日韩一级片 | 亚洲一区二区高潮无套美女 | 成av人电影 | 黄色三级免费 | 欧美在线视频二区 | 91免费版成人 | 欧美激情第一页xxx 午夜性福利 | 欧美日韩国产一区 | 国产精品一区久久久久 | 亚洲美女免费视频 | 亚洲自拍av在线 | av三区在线 | 国产一区二区精品久久91 | 亚洲黄色免费电影 | 欧美精品亚州精品 | 69精品视频在线观看 | 丁香婷婷综合色啪 | 免费看片网站91 | 久精品视频在线 | 欧美日本国产在线观看 | 9草在线| 9在线观看免费高清完整版在线观看明 | 五月综合激情 | 一区中文字幕在线观看 | 亚洲欧美日韩国产精品一区午夜 | 国产在线欧美 | 日日干日日操 | 亚洲国产人午在线一二区 | 人人爽人人爽人人爽人人爽 | 久久99热这里只有精品 | 九九免费精品视频在线观看 | 亚洲精品99久久久久久 | 在线影院中文字幕 | av福利网址导航 | 国产无套精品久久久久久 | 国产xxxx做受性欧美88 | 超碰免费av | 国产精品免费观看久久 | 亚洲成av人片在线观看无 | 亚洲涩涩网站 | 国产高清专区 | 国产自产高清不卡 | 国产二区视频在线观看 | 五月天天av | 国产a国产| 天天插天天爽 | 免费国产在线观看 | 欧美日韩国产综合一区二区 | 99久久精品国产亚洲 | 国产精品久久久久久五月尺 | 国产精品女 | 婷婷 综合 色 | 中文字幕亚洲综合久久五月天色无吗'' | 日韩丝袜 | 亚洲一区二区麻豆 | 日韩欧美在线观看一区 | 四虎小视频 | 青青草久草在线 | 日本久久久影视 | av在线免费不卡 | 黄色综合| 丁香婷婷电影 | 国产高清专区 | 在线观看不卡视频 | 日免费视频 | 国产一区在线视频播放 | 成人一级 | 国产中文字幕大全 | 91香蕉久久 | www成人精品 | 五月婷综合 | 国产国产人免费人成免费视频 | 国产亚洲精品免费 | 日韩一区二区三区视频在线 | 亚洲精品久久久蜜臀下载官网 | 日日躁夜夜躁aaaaxxxx | 尤物97国产精品久久精品国产 | 国产精品视频最多的网站 | 久久久久一区二区三区 | 久久婷婷丁香 | 韩国在线一区二区 | 96在线| 91成人免费观看视频 | 狠狠操狠狠插 | 国产一线二线三线性视频 | 欧美日韩视频在线观看一区二区 | 在线黄色免费av | 国产成人免费在线 | 午夜骚影 | 久久狠狠干 | 中文一区二区三区在线观看 | 亚洲美女免费精品视频在线观看 | 成人av高清| 色妞色视频一区二区三区四区 | 五月婷婷六月综合 | 国产精品欧美一区二区三区不卡 | 一区二区精品在线 | 欧美性另类 | av网址aaa| 日韩精品在线免费播放 | 手机在线看永久av片免费 | 亚洲视频综合在线 | 91九色精品女同系列 | 国产一级h | 国产精品美女免费 | 色综合婷婷 | 99久久久久久久久 | 中文字幕在线免费97 | 激情综合五月天 | 九九久久免费 | 亚洲精品在线观看av | 欧美亚洲精品在线观看 | 久久久免费精品国产一区二区 | 国产成人精品一区二 | 99久热在线精品视频观看 | 久久99精品国产99久久 | 久久久精品国产免费观看同学 | 欧美日韩精品久久久 | 亚洲精品在线免费观看视频 | 亚洲综合成人婷婷小说 | 91福利社区在线观看 | 久草视频免费在线播放 | 中文字幕亚洲精品在线观看 | 97色资源| 久久久久亚洲天堂 | 91亚洲精品在线观看 | 国产剧情久久 | 人人干狠狠操 | 黄在线免费观看 | 日韩欧美69 | 在线看国产日韩 | 日韩激情第一页 | 成人av资源网站 | 久久精品中文字幕一区二区三区 | 日本不卡一区二区三区在线观看 | 成人av免费在线看 | 欧美日韩国产精品一区二区三区 | 国产精品亚洲成人 | 日韩影视在线观看 | 99精品在线免费视频 | 久久久婷| 久久天天躁 | 在线观看视频精品 | 国产精品久久一 | 中文电影网 | 亚洲狠狠丁香婷婷综合久久久 | 成年人在线免费视频观看 | 国产精品a久久 | www黄色av | 狠狠狠色丁香婷婷综合久久五月 | 一区二区三区免费在线观看 | 国产成人精品免费在线观看 | 欧美日韩一区二区视频在线观看 | www.亚洲黄色 | 丁香婷婷基地 | 全黄色一级片 | 人人揉人人揉人人揉人人揉97 | 一级性视频 | 日韩一区二区三区观看 | 日日草夜夜操 | 亚洲第一区在线播放 | 欧美激情精品久久久久久 | 国产精品福利午夜在线观看 | 久久久精品在线观看 | 久香蕉 | 欧美日韩视频在线观看免费 | 五月婷婷视频在线 | 夜夜操狠狠干 | 天堂av免费看 | 91日本在线播放 | 国产无套精品久久久久久 | 视频精品一区二区三区 | 日韩在线免费高清视频 | 欧美国产日韩一区二区三区 | 五月激情电影 | 婷婷丁香狠狠爱 | 最新日本中文字幕 | 亚洲人成在线观看 | 久久久亚洲电影 | 亚州天堂 | 成人一区影院 | 国产成人精品一区二区在线 | www.色五月.com| 天天操天天爽天天干 | 婷婷午夜激情 | 亚洲国产成人高清精品 | 成人小视频免费在线观看 | 色视频网站在线观看一=区 a视频免费在线观看 | 最新一区二区三区 | 99爱在线观看 | 亚洲无毛专区 | 日韩欧美69 | 国产精品久久久久久久久久久久午夜 | 成人网在线免费视频 | 国产精品久久久久久a | 欧美日韩免费在线视频 | 色av男人的天堂免费在线 | 日日夜夜精品视频天天综合网 | 久久综合五月天婷婷伊人 | 91久久久久久久一区二区 | 人人搞人人爽 | 国产精品美女久久久久久久 | 国产xx视频 | 在线看片中文字幕 | 国产高清av免费在线观看 | 99在线观看视频网站 | 精品久久综合 | 免费a网址 | 午夜精品av在线 | 久久爽久久爽久久av东京爽 | 欧美国产一区在线 | 中文在线 | 国产福利91精品 | 欧美激情视频在线观看免费 | 日韩免费电影网站 | 91色国产在线 | 91av电影网| 99国产在线视频 | 亚洲a免费| 成人国产精品久久久久久亚洲 | 日本高清久久久 | 色视频 在线 | 美女搞黄国产视频网站 | 97色视频在线 | 亚洲欧洲精品久久 | 精品主播网红福利资源观看 | 国产在线精 | 免费在线观看一区 | 香蕉在线观看视频 | 黄色小网站免费看 | 日韩手机在线 | 毛片二区| 91人人爽久久涩噜噜噜 | 久久免费视频这里只有精品 | av888.com| 久久99国产精品久久99 | 91视频a| 天天躁日日躁狠狠躁av中文 | 丝袜精品视频 | 国产精品久久久久一区二区 | 精品久久久久久亚洲综合网 | 国产精品久久久久久久久久白浆 | 日韩欧美视频在线播放 | 欧美最爽乱淫视频播放 | 国产欧美日韩精品一区二区免费 | 91精品亚洲影视在线观看 | 黄色字幕网| 亚洲涩涩涩 | 欧美性视频网站 | 国产二区免费视频 | 国产精品黄色av | 亚洲综合色网站 | av大全在线观看 | av网址最新 | 日批视频国产 | 成人在线观看网址 | 久久福利小视频 | 91丨九色丨蝌蚪丨老版 | 婷婷在线播放 | japanesefreesexvideo高潮 | 欧美专区日韩专区 | 日韩在线观看视频中文字幕 | 亚洲欧美视屏 | 免费在线激情视频 | 狂野欧美激情性xxxx欧美 | 韩国一区二区av | 日本在线h | 9999免费视频 | 日本黄色黄网站 | 久草视频在线免费 | 五月婷婷狠狠 | 伊人精品在线 | 亚洲区二区 | 国产精品九九视频 | 国产精品入口麻豆 | 国产一区在线视频观看 | 99riav1国产精品视频 | 91麻豆精品久久久久久 | 美女黄网站视频免费 | 欧美精品久久久久久久久久丰满 | 免费观看成人av | 国产91精品在线观看 | 狠狠干天天 | 91视频在线 | 久久久精品影视 | 美腿丝袜一区二区三区 | 人人干天天射 | 久久国产日韩 | 波多野结衣视频网址 | 手机在线看a | 亚洲成av人片 | 狠狠天天 | 亚洲日本欧美 | 丝袜美女在线观看 | 在线观看中文 | 国产午夜一级毛片 | 小草av在线播放 | 国产精品理论片在线观看 | 国产色婷婷在线 | 五月婷婷综合久久 | 亚洲国内在线 | 日韩动态视频 | 欧美日韩首页 | 五月天九九 | 欧美精品一级视频 | 97国产精品| 成人黄色视 | 国产精品一区二区久久精品爱涩 | 日日夜夜精品视频天天综合网 | 在线中文字幕网站 | 美女久久久久久久 | 国内久久精品 | 午夜少妇| 欧美日韩在线免费观看视频 | 毛片无卡免费无播放器 | 狠狠躁18三区二区一区ai明星 | 亚州日韩中文字幕 | 视频一区二区视频 | 国产福利91精品张津瑜 | 国产黄av | 久久久精品福利视频 | 久草在线视频首页 | 又黄又爽又色无遮挡免费 | 人人射网站 | 天天插伊人 | 在线免费观看的av | 久久国内视频 | 国产精品久久久一区二区三区网站 | 亚洲精品乱码久久久久久久久久 | 麻豆免费视频观看 | 久久婷婷激情 | 国产中文视频 | 黄色av网站在线观看免费 | 成人三级黄色 | 午夜精品一区二区三区在线视频 | 日本狠狠干 | 国产一级视频免费看 | 免费观看版 | 日韩在线网 | 九九热视频在线播放 | 久久精品国产第一区二区三区 | 国产欧美高清 | 欧美精品一区二区免费 | 日韩精品中文字幕一区二区 | 国产不卡在线观看视频 | 激情网五月天 | 综合铜03 | 丁香五月网久久综合 | 99精品久久99久久久久 | 色激情在线 | 国产精品视频最多的网站 | a黄色一级 | 久久国内免费视频 | 麻豆视频在线免费 | 亚洲区精品视频 | 91亚洲在线| 日本h视频在线观看 | 91麻豆精品 | 欧美午夜a| 人人插人人澡 | 亚洲美女在线一区 | 一本一道波多野毛片中文在线 | 国产精品免费av | 99久久精品免费视频 | 中文字幕在线观看网 | 欧美日韩高清在线一区 | 久久中文欧美 | 亚洲精品国偷拍自产在线观看 | 国产精品99久久久久久有的能看 | 91mv.cool在线观看 | 97在线资源 | 国产视频中文字幕 | 二区三区中文字幕 | 99久久精品免费看国产麻豆 | 国产精品乱码在线 | 狠狠干五月天 | 成人免费看视频 | 五月天综合在线 | 国产91在线免费视频 | 天天艹天天| 久久天天躁夜夜躁狠狠85麻豆 | 人人舔人人爽 | 999久久久久久久久 69av视频在线观看 | 在线观看国产亚洲 | 久久理论片 | 青草草在线视频 | 久久久精品视频成人 | 国产福利91精品一区二区三区 | 日韩一区二区免费在线观看 | 国产伦理一区二区三区 | 国产午夜精品一区二区三区 | 婷色在线| 在线观看中文字幕一区二区 | 亚洲最新视频在线播放 | 中文字幕亚洲字幕 | 色综合久久综合网 | 中文字幕一区二区三 | 狠狠干.com | 亚洲精品国产第一综合99久久 | 中文字幕二区在线观看 | 欧美激情综合五月色丁香 | 久久久久久久久久影视 | 18国产精品福利片久久婷 | 超碰com| 国产糖心vlog在线观看 | 成人黄色在线视频 | av在线播放免费 | 爱爱一区 | 中文字幕在线观看国产 | 91精品国| 亚洲成人免费观看 | 综合婷婷丁香 | 91精品导航 | 91完整版 | 成人av网址大全 | 97超碰免费在线 | 欧美日韩免费在线观看视频 | 久久久久久久久久久久久影院 | 中文十次啦 | 日本电影久久 | 亚洲综合最新在线 | 国产精品久久久久久久久久久久午夜 | 亚洲国产福利视频 | 日本少妇视频 | 成人app在线免费观看 | www色片| 91视频 - x99av | 天天操综合网站 | 狠狠色丁香久久婷婷综合丁香 | 日韩一级片观看 | 欧美日韩视频在线 | 91精品国产三级a在线观看 | 免费看麻豆| 91热视频在线观看 | 国产成人久久av免费高清密臂 | 91九色综合 | 精油按摩av | 99免费视频 | 免费一级片在线观看 | 国产精品久久久久亚洲影视 | 国产乱码精品一区二区三区介绍 | 操碰av | 在线免费黄色av | www.成人精品| 麻豆极品 | 国产精品手机在线 | 天天天色综合a | 国产一区二区日本 | 婷婷免费在线视频 | 国产成人精品亚洲a | 日韩视频在线不卡 | 精品久久精品久久 | 最近中文字幕免费观看 | 欧美小视频在线 | 在线黄网站 | 国产精品久久久久久久久久ktv | 日日夜色 | 国产免费观看久久 | 日韩精品中文字幕有码 | 国产成人久久av | 天堂麻豆 | www日韩欧美| 99色| 免费视频 三区 | 国产精品wwwwww| 亚洲a免费 | 日韩成人免费在线电影 | 夜夜干夜夜 | 亚洲电影一级黄 | 中文字幕在线专区 | 国产在线精品播放 | 日韩高清激情 | 天天草天天干天天 | 久久久久女人精品毛片九一 | 黄色成人在线 | 色多视频在线观看 | 3d黄动漫免费看 | 久久精品视频中文字幕 | 国产精品99精品 | 国产成免费视频 | 精品特级毛片 | 亚洲涩涩网站 | 婷婷色婷婷 | 欧美日韩后 | 中国一级特黄毛片大片久久 | 在线看黄网站 | 久草国产在线观看 | 婷婷丁香色| 国产精品第二页 | 久久黄色网页 | 成人午夜精品福利免费 | 成人国产精品免费 | 欧美日韩在线播放 | 成人在线免费视频 | 天天干,天天干 | 怡红院成人在线 | 日韩精品一区二区三区在线播放 | 综合色中文 | 精品国产诱惑 | 国产中文 | 成人在线观看av | 日本精品中文字幕在线观看 | 婷婷丁香在线 | 国产精品一区二区白浆 | 九九视频在线 | 亚洲欧美成人 | 亚洲精品视| 97色在线视频 | 国产一区二区在线视频观看 | 久久9999久久 | 在线看的av网站 | 欧美成人手机版 | 日本精品久久久久影院 | 天堂在线成人 | 久久99久国产精品黄毛片入口 | 精品亚洲男同gayvideo网站 | 天天插天天狠 | 国产成人综合图片 | 亚洲黄色在线 | 日本久久久亚洲精品 | 激情伊人五月天久久综合 | 国产精品久久久久久模特 | 成人黄色大片网站 | 人人澡人人舔 | 成人精品福利 | 日本公妇色中文字幕 | 一区二区视频在线播放 | 成人午夜精品久久久久久久3d | 久草在线视频精品 | 99一级片 | 97国产电影| www.久久成人 | 99久久国产免费,99久久国产免费大片 | 成人av电影在线播放 | 成年人免费看的视频 | 欧美国产日韩在线观看 | 国产视频手机在线 | 国产精品岛国久久久久久久久红粉 | 久久线视频 | 中文av字幕在线观看 | 久久桃花网 | 日韩av网页 | 久久精品爱爱视频 | 亚洲综合精品在线 | 午夜精品一区二区三区在线 | 爱爱一区 | 精品福利国产 | 91国内在线 | 国产人成在线视频 | 一区二区三区 亚洲 | 成人av免费播放 | 美女黄网站视频免费 | 在线观看精品视频 | 91精品久久久久久粉嫩 | 一区二区三区在线观看中文字幕 | av黄色大片 | 亚洲精品白浆高清久久久久久 | 亚洲精品国产精品国 | www.99热精品| 亚洲精品欧美成人 | 欧美日韩国产一二 | 国产资源精品 | 久草视频在线看 | 综合铜03| 日本最新高清不卡中文字幕 | 91麻豆精品国产91久久久无限制版 | 最新在线你懂的 | 西西44人体做爰大胆视频 | 97超碰在线视 | 亚洲精品成人av在线 | 久久婷婷一区二区三区 | 欧美一级日韩三级 | 婷婷在线五月 | 国产一区二区在线免费视频 | 5月丁香婷婷综合 | 国产99在线| 91免费版在线观看 | 永久av免费在线观看 | 在线导航av | 国产精品国产三级国产aⅴ无密码 | 久久久精品欧美一区二区免费 | 欧美精品久久久久久久久久 | 中文在线最新版天堂 | 99久高清在线观看视频99精品热在线观看视频 | 国产热re99久久6国产精品 | 久久综合国产伦精品免费 | 国产精品成人久久 | 人人藻人人澡人人爽 | 色五丁香 | 国产成人99av超碰超爽 | 亚洲精品午夜国产va久久成人 | 中文字幕视频 | 色婷婷激情电影 | 精品国产一区二区三区在线观看 | 黄色软件大全网站 | 中文字幕日韩有码 | 国产精品乱码久久久久久1区2区 | 成年人av在线播放 | 久久久久高清毛片一级 | 99精品偷拍视频一区二区三区 | 亚洲91在线 | 亚洲做受高潮欧美裸体 | 天天色天天干天天 | 日韩在线视频精品 | 久久草草热国产精品直播 | 精品国产伦一区二区三区免费 | 日日干激情五月 | 97国产大学生情侣酒店的特点 | 国产精品久久久久久久av电影 | 欧美精品成人在线 | 中文字幕之中文字幕 | 香蕉视频导航 | 免费在线黄网 | 日韩最新中文字幕 | 天天插天天干天天操 | 九色视频网| 成年一级片 | 久久久久久久久综合 | 久久久久女教师免费一区 | 国产一级视频在线免费观看 | 日韩在线大片 | 久久久久久久影视 | 国产成人综合精品 | 国内精品久久久久 | 国产精品一区二区av麻豆 | 精品久久久99 | 超碰在线网 | 99精品欧美一区二区三区 | 精品国产区在线 | 在线免费三级 | 精品在线视频观看 | 欧洲精品码一区二区三区免费看 | av软件在线观看 | 欧美va在线观看 | 国产91学生粉嫩喷水 | 91亚洲国产成人久久精品网站 | 中文字幕丝袜制服 | 91麻豆高清视频 | 亚洲国内精品视频 | 亚洲国内精品在线 | 久久婷婷视频 | 欧美日韩精品免费观看视频 | 久草网在线视频 | 日韩v欧美v日本v亚洲v国产v | 亚洲六月丁香色婷婷综合久久 | 久久久久久亚洲精品 | 91福利免费| 天干啦夜天干天干在线线 | 精品国产诱惑 | 中文字幕精品三级久久久 | 免费看一级 | 日韩免费观看视频 | 免费观看的av | 91人人在线 | 久久国产系列 | 亚洲国产中文在线观看 | 久久久黄色 | 国产黄a三级三级 | 亚洲精品国产精品国自产在线 | 97视频人人免费看 | 成人黄大片视频在线观看 | 黄色三级在线看 | 91最新在线| 欧美乱码精品一区二区 | 久久综合操 | 91精品麻豆 | 国产精品乱码高清在线看 | 国偷自产中文字幕亚洲手机在线 | 亚洲精品乱码久久久久久 | 亚洲精品一区二区三区高潮 | 黄p网站在线观看 | 91中文字幕在线 | 国产精品嫩草55av | 视频91| 91精品国产91久久久久久三级 | 中文字幕麻豆 | 日韩一区视频在线 | 99久久久久| 丁香五婷 | 中文在线免费一区三区 | 808电影免费观看三年 | 精品国产一区二区三区四区vr | 久久国产精品久久精品 | 天天色中文 | 欧美日高清视频 | 日韩视| 久久精品免费播放 | 国产精品黄色av | 久久精品欧美一区二区三区麻豆 | 婷婷久久久久 | 狠狠色丁香婷综合久久 | 不卡的av在线 | 国产精品麻豆99久久久久久 | 超碰999 | 九九久久精品 | 午夜黄网| 亚洲欧美日本国产 | 国产在线日韩 | 亚洲欧美日本一区二区三区 | 国产精品99久久久精品免费观看 | 欧美日韩中文在线 | 91插插视频 | 久草在线观看资源 | www.色国产| 久久九九免费视频 | 91九色网址 | 婷婷久久综合九色综合 | 免费三级黄色片 | 天天操夜 | 国产成人一二片 | 91av视频导航 | 欧美另类tv| av在线免费观看黄 | 色www免费视频 | 91av在线看| 欧美成人91 | 激情综合一区 | 伊人五月天婷婷 | 久久久久久久看片 | 国产精品免费在线观看视频 | 日b视频在线观看网址 | 亚洲成人免费在线 | 亚洲国产影院av久久久久 | 99久久婷婷国产综合亚洲 | 久久xxxx| 免费国产黄线在线观看视频 | 99免费精品 | 草在线| 久久精品爱爱视频 | 探花视频在线观看免费 | 久久影院亚洲 | 亚州日韩中文字幕 | 综合网欧美 | 射射射av| 亚洲精品一区二区三区新线路 | 国产成人精品一区二 | 亚洲一区视频在线播放 | 久久99亚洲精品久久久久 | 国产人在线成免费视频 | 欧美一级日韩三级 | 中文字幕在线看人 | 夜夜干夜夜 | 最新婷婷色| 91九色蝌蚪国产 | 国产精品美女久久久久久久久 | 99久热在线精品视频成人一区 | 免费午夜av | 久久黄色片 | 黄色aaa毛片| 欧美在线一级片 | 免费网站污 | 夜夜爽www | 久久这里只有精品1 | 在线中文字幕电影 | www.黄色在线 | 欧美在线视频二区 | 久久久久久久久久久久久9999 | 国产精品av免费在线观看 | 国产精品久久久久久久久岛 | 亚洲精品乱码久久久久久蜜桃91 | 免费视频一二三区 | 久久综合九九 | 久久久久久久久影视 | 久久激情五月婷婷 | 亚洲夜夜网 | 97精品国产97久久久久久 | av免费看网站| 亚洲激情 | 国产成人久久精品亚洲 | 中文字幕在线观看资源 | 91av中文字幕| 天堂在线一区二区三区 | 日韩欧美国产免费播放 | 99精品视频精品精品视频 | 精品亚洲视频在线观看 | 久久综合九色综合欧美就去吻 | 五月婷婷在线播放 | 日本三级吹潮在线 | 狠狠操夜夜操 | 久草电影在线 | 91精品啪 | 99视频精品 | 一区精品在线 | 亚洲高清视频在线观看免费 | 最近久乱中文字幕 | 免费久久精品视频 | 色婷婷五 | 人人干狠狠操 | 成人a在线 | 天天草夜夜 | 国产在线第三页 | 国产精品精品国产色婷婷 | 日韩在线观看 | 中文字幕亚洲国产 | 欧美在线观看视频一区二区三区 | 亚洲视频h | 国产无套一区二区三区久久 | 超碰个人在线 |