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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt视频直播软件--项目实战(Day7)

發布時間:2024/8/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt视频直播软件--项目实战(Day7) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第七天項目日記

1、今日總結

完成有關彈幕的相關內容的開發
用戶發送彈幕之后,開播的人顯示彈幕,觀看直播的人也顯示彈幕
自己發的彈幕用綠色的框框起來
別人發的彈幕直接顯示

2、設計思路

參考連接.
對于彈幕的實現,這里使用了定時器,彈幕的隊列用vector顯示,然后vector中存入Qlabel類,發送或者接收到彈幕之后就給vector中添加對應的label
對于彈幕的移動用QTimer 每20ms移動一次移動到邊界之后自動消失
彈幕的長度根據字符串來自適應,彈幕移動到邊界之后自動消失并且清除緩存

彈幕的發送流程,對于加入直播間的客戶端,服務器端進行記錄加入的房間號,對于開播的直播間來說,記錄開播的房間號。

發送彈幕之后,客戶端發送消息給服務器,服務器轉發彈幕消息,轉發給對于房間號開播的客戶端以及正在觀看該直播間的用戶。
客戶端收到消息之后,隨機現在彈幕的位置在視頻界面。
(后面有時間會整理一個流程圖出來)

3、代碼說明

服務器

服務器主要是對消息的接收和發送的修改

首先是加入直播間和離開直播間

離開直播間只需要清空自定義tcpsocket的類的加入直播間的房間名稱即可

然后是彈幕消息的格式

主要修改以上四個文件

message.h


增加了三種消息

myjson.h

消息的打包和解析

#ifndef MYJSON_H #define MYJSON_H#include <QJsonDocument> #include <QJsonObject> #include <QJsonParseError> #include <QDebug> #include <QJsonArray> #include <QByteArray>class MyJson { public:MyJson();//解析用戶名和密碼QString name_pswd_info(QString message,QString &pswd,QString &name);//打包直播刷新消息QString pack_live_flush(QString action,QStringList name_list);//解析加入直播jsonQString join_info(QString message,QString &room_name);//解析彈幕消息QString barrage_info(QString message,QString &from, QString &room_name, QString &desc);//打包返回的彈幕消息QString pack_ret_barrage_info(QString from, QString desc); };#endif // MYJSON_H
myjson.cpp
#include "myjson.h"MyJson::MyJson() {}QString MyJson::name_pswd_info(QString message, QString &pswd, QString &name) {QByteArray bytes = message.toUtf8();QJsonParseError jsonError;QJsonDocument doucment = QJsonDocument::fromJson(bytes, &jsonError);if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) { // 解析未發生錯誤if (doucment.isObject()){QJsonObject object = doucment.object(); // 轉化為對象if (object.contains("Name")) {QJsonValue value = object.value("Name");if (value.isString()) {name = value.toString();qDebug() << "Name : " << name;}}else{return "json_error_no_name";}if (object.contains("password")) {QJsonValue value = object.value("password");if (value.isString()) {pswd = value.toString();qDebug() << "pswd : " << pswd;}}else{return "json_error_no_pswd";}}else{return "json is no object";}}else{return "json error";}return "success"; }QString MyJson::pack_live_flush(QString action, QStringList name_list) {QJsonObject json;json.insert("action",action);QJsonArray json_array;for (int i = 0; i < name_list.size(); ++i){json_array.insert(i,name_list.at(i));}json.insert("name",json_array);QJsonDocument document;document.setObject(json);QByteArray byteArray = document.toJson(QJsonDocument::Compact);QString strJson(byteArray);return strJson; }QString MyJson::join_info(QString message, QString &room_name) {QByteArray bytes = message.toUtf8();QJsonParseError jsonError;QJsonDocument doucment = QJsonDocument::fromJson(bytes, &jsonError);if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) { // 解析未發生錯誤if (doucment.isObject()){QJsonObject object = doucment.object(); // 轉化為對象if (object.contains("join")) {QJsonValue value = object.value("join");if (value.isString()) {room_name = value.toString();qDebug() << "join : " << room_name;}}else{return "json_error_no_join";}}else{return "json is no object";}}else{return "json error";}return "success"; }QString MyJson::barrage_info(QString message, QString &from, QString &room_name, QString &desc) {QByteArray bytes = message.toUtf8();QJsonParseError jsonError;QJsonDocument doucment = QJsonDocument::fromJson(bytes, &jsonError);if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) { // 解析未發生錯誤if (doucment.isObject()){QJsonObject object = doucment.object(); // 轉化為對象if (object.contains("from")) {QJsonValue value = object.value("from");if (value.isString()) {from = value.toString();}}else{return "json_error_no_from";}if (object.contains("room_name")) {QJsonValue value = object.value("room_name");if (value.isString()) {room_name = value.toString(); // qDebug() << "room_name : " << room_name;}}else{return "json_error_no_room_name";}if (object.contains("desc")) {QJsonValue value = object.value("desc");qDebug()<<"?????";if (value.isString()) {desc = value.toString().toUtf8();qDebug() << "desc : " << desc;}}else{return "json_error_no_desc";}}else{return "json is no object";}}else{return "json error";}return "success"; }QString MyJson::pack_ret_barrage_info(QString from, QString desc) {QJsonObject json;json.insert("from",from);json.insert("desc",desc);QJsonDocument document;document.setObject(json);QByteArray byteArray = document.toJson(QJsonDocument::Compact);QString strJson(byteArray);return strJson; }
tcpsocket.h

tcpsocket.cpp

對于新增消息的處理

由于中文彈幕編碼不正常顯示問號,所以把接收函數進行了修改

tcpserver.cpp

只需要轉發彈幕消息

客戶端


客戶端均有改動

消息打包以及處理

clientjson.h
#ifndef CLIENTJSON_H #define CLIENTJSON_H#include "clientjson.h"#include <QJsonDocument> #include <QJsonObject> #include <QJsonArray> #include <QJsonParseError> #include <QDebug> #include <QByteArray>typedef struct live_flush{QString action;QStringList name; }Live_Flush_S;typedef struct rcv_barrage{QString from;QString desc; }Rcv_Barrage_S;class ClientJson { public:ClientJson();//打包賬號密碼QString pack_name_pswd(QString name,QString pswd);//解析直播間刷新消息QString live_flush_info(QString message_buf,Live_Flush_S &live_msg);//打包加入直播間的內容QString pack_join_room(QString room_name);//打包彈幕內容QString pack_barrage(QString name,QString room_name,QString message);//解析收到的彈幕消息QString rcv_barrage(QString message_buf,Rcv_Barrage_S &barrage_msg); };#endif // CLIENTJSON_H
clientjson.cpp
#include "clientjson.h"ClientJson::ClientJson() {}QString ClientJson::pack_name_pswd(QString name, QString pswd) {QJsonObject json;json.insert("Name",name);json.insert("password",pswd);QJsonDocument document;document.setObject(json);QByteArray byteArray = document.toJson(QJsonDocument::Compact);QString strJson(byteArray);return strJson; }QString ClientJson::live_flush_info(QString message_buf, Live_Flush_S &live_msg) {QByteArray bytes = message_buf.toUtf8();QJsonParseError jsonError;QJsonDocument doucment = QJsonDocument::fromJson(bytes, &jsonError);if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) { // 解析未發生錯誤if (doucment.isObject()){QJsonObject object = doucment.object(); // 轉化為對象if (object.contains("action")) {QJsonValue value = object.value("action");if (value.isString()) {live_msg.action = value.toString();qDebug() << "action : " << live_msg.action;}}else{return "json_error_no_name";}if (object.contains("name")) {QJsonValue value = object.value("name");if (value.isArray()) {QJsonArray array = value.toArray();int size = array.size();for (int i = 0; i < size; ++i) {QJsonValue value = array.at(i);if (value.isString()) {live_msg.name<<value.toString();}}qDebug() << "name : " << live_msg.name;}else{return "name_json_error";}}else{return "json_error_no_action";}}else{return "json is no object";}}else{return "json error";}return "success"; }QString ClientJson::pack_join_room(QString room_name) {QJsonObject json;json.insert("join",room_name);QJsonDocument document;document.setObject(json);QByteArray byteArray = document.toJson(QJsonDocument::Compact);QString strJson(byteArray);return strJson; }QString ClientJson::pack_barrage(QString name, QString room_name, QString message) { // {"from":"123",room_name:"121","desc":"hahaha"}QJsonObject json;json.insert("from",name);json.insert("room_name",room_name);json.insert("desc",message);QJsonDocument document;document.setObject(json);QByteArray byteArray = document.toJson(QJsonDocument::Compact);QString strJson(byteArray);return strJson; }QString ClientJson::rcv_barrage(QString message_buf, Rcv_Barrage_S &barrage_msg) {QByteArray bytes = message_buf.toUtf8();QJsonParseError jsonError;QJsonDocument doucment = QJsonDocument::fromJson(bytes, &jsonError);if (!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) { // 解析未發生錯誤if (doucment.isObject()){QJsonObject object = doucment.object(); // 轉化為對象if (object.contains("from")) {QJsonValue value = object.value("from");if (value.isString()) {barrage_msg.from = value.toString();}}else{return "json_error_no_from";}if (object.contains("desc")) {QJsonValue value = object.value("desc");if (value.isString()) {barrage_msg.desc = value.toString();}}else{return "json_error_no_desc";}}else{return "json is no object";}}else{return "json error";}return "success"; }
room.h

直播間彈幕的實現和觀看直播間彈幕的實現方式一樣,都是利用了定時器
每20ms彈幕的label向右移動一個單位
提供了增加彈幕的接口,這樣可以在widget種實現彈幕的增加

#ifndef LIVEROOM_H #define LIVEROOM_H#include <QWidget> #include <QDebug> #include <QCloseEvent> #include <QPoint> #include <QLabel> #include <QTimer>namespace Ui { class LiveRoom; }class LiveRoom : public QWidget {Q_OBJECTpublic:explicit LiveRoom(QWidget *parent = nullptr);void add_barrage(QString from,QString desc);~LiveRoom();signals:void sendlivemsg(QString);public slots:void barrage_move();private slots:void on_pushexitlive_clicked();protected:virtual void closeEvent(QCloseEvent *ev);private:Ui::LiveRoom *ui;QVector<QLabel*> v;//容器用來存放QLabelQPoint movep;//移動的位移QTimer *timer; };#endif // LIVEROOM_H
room.cpp

注意label的一個函數,adjustSize 自適應text長度

#include "room.h" #include "ui_room.h"Room::Room(QWidget *parent) :QWidget(parent),ui(new Ui::Room) {ui->setupUi(this);movep.setX(1);movep.setY(0);timer = new QTimer;ui->labelvideo->setStyleSheet("QLabel{border:2px solid rgb(0, 255, 0);}");this->setAttribute(Qt::WA_DeleteOnClose);connect(timer,SIGNAL(timeout()),this,SLOT(barrage_move()));//點擊enter時也可以發送彈幕connect(ui->lineBarrage,SIGNAL(returnPressed()),this,SLOT(on_pushBarrage_clicked()));timer->start(20); }QString Room::getroom_name() {return room_name; }void Room::setroom_name(QString name) {room_name = name; }void Room::add_barrage(QString from, QString desc) {QLabel *l = new QLabel(this);l->setText(desc);int y =30 +rand()%370;//隨機值y在30-400之間//設置label的坐標、長寬l->adjustSize();int length = l->width();l->setGeometry(20,y,length+10,20);l->show();v.push_back(l);//把label存到容器中 }Room::~Room() {qDebug()<<"quit";delete ui; }void Room::barrage_move() {QVector<QLabel*>::iterator it = v.begin();for(;it!=v.end();){int len = (*it)->width();//向右移動QPoint p = (*it)->pos() + movep;(*it)->move(p);//移動到400的時候刪除創建的labelif(p.x() == 620 - len){(*it)->clear();(*it)->setStyleSheet("");v.erase(it);}else{it++;}} }void Room::on_pushexit_clicked() {this->close(); }void Room::closeEvent(QCloseEvent *ev) {Q_UNUSED(ev);while(v.size()!=0){delete v.last();v.pop_back();}emit roommsg("close"); }void Room::on_pushBarrage_clicked() {QString str = ui->lineBarrage->text();if(!str.isEmpty()){//給widget發信號,發彈幕emit barrage_send(str);//必須將this傳進去,不然就會在新的窗口中顯示QLabel *l = new QLabel(this);l->setText(str);int y =30 +rand()%370;//隨機值y在30-400之間//設置label的坐標、長寬l->adjustSize();int length = l->width();l->setGeometry(20,y,length+10,20);l->setStyleSheet("QLabel{border:2px solid rgb(0, 255, 0);}");l->show();v.push_back(l);//把label存到容器中}ui->lineBarrage->clear();//清空輸入框 }
liveroom.h
#ifndef LIVEROOM_H #define LIVEROOM_H#include <QWidget> #include <QDebug> #include <QCloseEvent> #include <QPoint> #include <QLabel> #include <QTimer>namespace Ui { class LiveRoom; }class LiveRoom : public QWidget {Q_OBJECTpublic:explicit LiveRoom(QWidget *parent = nullptr);void add_barrage(QString from,QString desc);~LiveRoom();signals:void sendlivemsg(QString);public slots:void barrage_move();private slots:void on_pushexitlive_clicked();protected:virtual void closeEvent(QCloseEvent *ev);private:Ui::LiveRoom *ui;QVector<QLabel*> v;//容器用來存放QLabelQPoint movep;//移動的位移QTimer *timer; };#endif // LIVEROOM_H
liveroom.cpp
#include "liveroom.h" #include "ui_liveroom.h"LiveRoom::LiveRoom(QWidget *parent) :QWidget(parent),ui(new Ui::LiveRoom) {ui->setupUi(this);movep.setX(1);movep.setY(0);timer = new QTimer;this->setAttribute(Qt::WA_DeleteOnClose);ui->labelvideo->setStyleSheet("QLabel{border:2px solid rgb(0, 255, 0);}");connect(timer,SIGNAL(timeout()),this,SLOT(barrage_move()));timer->start(20); }void LiveRoom::add_barrage(QString from, QString desc) {QLabel *l = new QLabel(this);l->setText(desc);int y =50 +rand()%550;//隨機值y在50-600之間//設置label的坐標、長寬l->adjustSize();int length = l->width();l->setGeometry(50,y,length+10,20);l->show();v.push_back(l);//把label存到容器中 }LiveRoom::~LiveRoom() {qDebug()<<"liveroom quit";delete ui; }void LiveRoom::barrage_move() {QVector<QLabel*>::iterator it = v.begin();for(;it!=v.end();){int len = (*it)->width();//向右移動QPoint p = (*it)->pos() + movep;(*it)->move(p);//移動到400的時候刪除創建的labelif(p.x() == 750 - len){(*it)->clear();(*it)->setStyleSheet("");v.erase(it);}else{it++;}} }void LiveRoom::on_pushexitlive_clicked() {emit sendlivemsg("close");this->close(); }void LiveRoom::closeEvent(QCloseEvent *ev) {Q_UNUSED(ev);emit sendlivemsg("close"); }
main.cpp

用來獲取隨機數

#include "widget.h" #include <QApplication> #include <time.h> #include <stdlib.h>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;srand(time(0));w.show();return a.exec(); }
widget.cpp

增加彈幕的發送和接收的處理函數

加入房間時綁定信號,用戶發送彈幕之后會發送信號給widget,widget調用線程的發送給服務器發送彈幕。

發送彈幕給服務器

tcpthread.cpp

對于服務器接收到的彈幕消息
tcp線程接收到解析之后直接發消息給widget,然后widget調用界面的彈幕添加函數即可

由于編碼的問題,對線程種的發送和接收的編碼也進行了統一,統一成了utf8

void TcpThread::onReadMsg() {if(m_TcpSocket->bytesAvailable() <= 0){// 判定連接失敗m_TcpSocket->disconnectFromHost();}while (m_TcpSocket->bytesAvailable() > 0){// 接收數據QByteArray tmpQBA;tmpQBA.clear();tmpQBA= m_TcpSocket->readAll();QString str_tcp_receive = QString::fromUtf8(tmpQBA);qDebug()<<"recv "<<str_tcp_receive;parse_msg(str_tcp_receive);qDebug()<<"read "<<str_tcp_receive; // msleep(100);} }void TcpThread::onSendTcp(QString str_info) {if((!m_TcpSocket)||m_TcpSocket->state()!=QAbstractSocket::ConnectedState)return;m_iSendData = m_TcpSocket->write(str_info.toUtf8(), str_info.toUtf8().length()+1);m_TcpSocket->flush();if (m_iSendData < 0){m_TcpSocket->disconnectFromHost();return;}msleep(100); }

然后widget接收到彈幕消息之后進行顯示
先添加信號和槽

然后添加彈幕即可

4、項目源碼


第一個是服務器剩下的都是客戶端
客戶端都一樣
是為了測試,所以用qt打開多個項目

項目源碼.

5、效果展示

測試時利用三個客戶端和一個服務器進行測試

測試一個開播兩個加入

測試發送彈幕(中文和英文)以及彈幕到右邊之后自動消失
自己發的彈幕有框,別人的彈幕沒有框

直播間之后用戶列表沒顯示,是因為還沒做

測試完成

6、總結

tcp write和read過程中,寫和讀的編碼要保持一致,并且在傳輸過程中的長度也要是轉換字符格式之后的長度

還有列表私聊、送禮物、聊天框、視頻直播幾個功能沒有寫。

這一秒不放棄,下一秒就有希望!!!!!!

總結

以上是生活随笔為你收集整理的Qt视频直播软件--项目实战(Day7)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

日韩av中文字幕在线 | 久久精品高清 | www.亚洲| 五月开心六月婷婷 | 久草在线免费看视频 | 91av电影网 | 九九热在线精品视频 | 色播五月激情综合网 | 国产成人精品久 | 五月婷婷影院 | 日本中文字幕在线免费观看 | 国内免费的中文字幕 | 日韩欧美在线免费 | 国内外激情视频 | 一区二区三区在线观看中文字幕 | 亚洲区精品视频 | 人人dvd| 久久久久欠精品国产毛片国产毛生 | 中文字幕一区二区三区在线播放 | 97色狠狠| 中文字幕丝袜 | 国产又粗又猛又黄又爽 | 狠狠狠色丁香婷婷综合久久五月 | 一级久久精品 | 日韩在线观看视频中文字幕 | 久久精品视频国产 | 婷婷激情久久 | 丝袜美腿在线 | 中文字幕一区二区三区精华液 | 不卡的一区二区三区 | 99在线精品免费视频九九视 | 亚洲欧美va | 91成人精品一区在线播放69 | 99高清视频有精品视频 | 91精品福利在线 | 最新国产一区二区三区 | 亚洲精品资源在线观看 | aaa日本高清在线播放免费观看 | 久久国产精品99精国产 | 少妇bbbb搡bbbb搡bbbb | 久草在线久 | 超碰国产人人 | 91福利在线观看 | 摸阴视频| 一级理论片在线观看 | 免费av成人在线 | 国产精品 视频 | 91视频在线自拍 | 96av在线视频 | 国产一区二区三区四区大秀 | 中文字幕一区二区三区四区视频 | 最新一区二区三区 | 成人免费观看电影 | 国产欧美中文字幕 | 亚洲韩国一区二区三区 | 国产精品二区在线 | 在线黄色观看 | 西西大胆啪啪 | a国产精品 | 亚洲视频免费在线 | 国产在线观看地址 | 欧美激情va永久在线播放 | 91日韩国产| 成年人精品 | 精品国产99 | 四虎成人免费观看 | 久久99国产综合精品免费 | 久久天天综合网 | 亚洲 欧美 变态 国产 另类 | 精品久久久久久亚洲综合网站 | 91在线视频观看免费 | 99色人| 在线之家免费在线观看电影 | 最新国产在线观看 | 欧美日本不卡视频 | 97av视频在线 | 久久er99热精品一区二区三区 | www久久久久| 手机在线观看国产精品 | av丝袜天堂 | 色婷婷婷 | 精品高清美女精品国产区 | 一本一道久久a久久精品 | 国产一级大片在线观看 | 日韩欧美一区二区三区在线 | 欧美精品v国产精品v日韩精品 | 国产91全国探花系列在线播放 | 天天做天天爱天天爽综合网 | 999久久久久久久久6666 | 免费三级大片 | 免费观看一级 | 伊人丁香 | 黄网站色成年免费观看 | 免费福利在线 | 麻豆视频免费在线观看 | 国产精品久久久久久久久大全 | 香蕉蜜桃视频 | 久久嗨| 亚洲综合色丁香婷婷六月图片 | 亚洲香蕉视频 | 国产免码va在线观看免费 | 久久久免费精品视频 | 天天干天天搞天天射 | 又色又爽又黄高潮的免费视频 | 中文字幕国语官网在线视频 | 久久久精品网站 | 久热免费 | 91cn国产在线 | 91在线视频 | 国产精品久久久久久麻豆一区 | 国产原创在线视频 | 波多野结衣在线中文字幕 | 国产精品国产三级在线专区 | 深夜免费福利视频 | 久久久综合色 | 五月开心婷婷 | 一区二区欧美在线观看 | 五月天中文字幕mv在线 | 国产精品18久久久久久久久 | 久久国产手机看片 | 九九热re| 黄色一级大片在线免费看国产一 | 黄色一级大片在线免费看国产一 | 在线观看免费视频你懂的 | 国产精品久久二区 | 免费电影一区二区三区 | 国产不卡在线播放 | 日本精a在线观看 | 国产黄色大片 | 久久免费av电影 | 日日夜夜免费精品 | 亚洲欧美日韩国产一区二区 | 天天综合网久久综合网 | 日韩欧美在线不卡 | 91高清视频免费 | 97成人在线免费视频 | 国产a网站 | 欧美夫妻生活视频 | 91免费在线看片 | 又黄又爽的视频在线观看网站 | 亚洲乱码在线 | 91看片一区二区三区 | 国产成人精品久久 | 国产精品毛片一区二区在线 | 日韩三级在线观看 | 久久精视频| 香蕉视频免费看 | 久久综合欧美精品亚洲一区 | 国产日韩在线一区 | 久久久国产精品成人免费 | 四虎影视成人 | 亚洲综合涩 | 91精品国产一区二区三区 | 中文av一区二区 | 在线播放 亚洲 | 日韩国产精品毛片 | 人人爱爱人人 | 亚洲天天做 | 日韩成人免费在线 | 久久视频网址 | 久久a国产 | 久久久久久久免费 | 久久午夜精品视频 | 亚洲欧洲日韩在线观看 | 亚洲欧洲日韩 | 深爱五月激情五月 | 中文字幕有码在线 | 日韩欧美高清在线观看 | 亚洲国产成人久久 | 久久午夜色播影院免费高清 | 免费在线精品视频 | 久久国产精品99精国产 | 在线精品视频在线观看高清 | 亚洲综合激情 | 丁香花在线视频观看免费 | 欧美日韩久久 | 久久久精品亚洲 | 狂野欧美激情性xxxx | 天堂网一区二区三区 | 亚洲精品黄网站 | 国产精品第2页 | 亚洲欧美视频在线播放 | 国产中文字幕在线观看 | 中文字幕美女免费在线 | 亚洲精品456在线播放 | 亚洲女人天堂成人av在线 | 亚洲激情综合 | 欧美做受高潮1 | 成人一区二区三区在线 | 一区二区三区四区影院 | 国产在线播放一区二区三区 | 免费人成在线观看网站 | 精品久久久久久久久久久久 | 日韩精选在线观看 | 色婷婷激情五月 | 国产精品视频免费看 | 天天射成人| 九九久久免费视频 | 国产一级免费观看视频 | 欧美另类激情 | 天堂av在线| 西西www4444大胆在线 | 二区视频在线观看 | 99c视频在线 | 国产一二区精品 | 免费观看一级一片 | 久久免费视频4 | 中文字幕免费一区 | 在线日韩亚洲 | 国产精品com | 中文字幕视频在线播放 | 天天干天天操天天爱 | 婷婷精品视频 | 日韩精品一区在线观看 | 日本h视频在线观看 | 免费在线观看av | 亚洲欧洲精品一区二区 | 一区二区三区四区五区在线 | 97人人爽人人| 久久人人97超碰国产公开结果 | 久久视频精品在线 | 日本99精品 | 手机成人免费视频 | 色国产视频 | 在线视频福利 | 免费a v在线 | 国产精品久久久久久久电影 | 国产精品一区二区在线观看 | 国产精品久久久久久久婷婷 | 欧美经典久久 | 在线香蕉视频 | 色国产精品一区在线观看 | 丁香激情视频 | 区一区二区三在线观看 | 天天草天天| 欧美va日韩va| 日日草夜夜操 | 精品专区一区二区 | 操天天操 | 成人免费亚洲 | 国产99久久精品一区二区永久免费 | 国产精品原创av片国产免费 | 欧美久久久久久久久久久久久 | 日韩高清免费电影 | 综合久久久久 | 最近免费中文视频 | 日本中文字幕网 | 日本午夜在线亚洲.国产 | 精品一二区 | 日本久久久久久 | 日本久久久久久科技有限公司 | 丝袜少妇在线 | 久久99精品国产99久久6尤 | 日本在线成人 | 99在线观看免费视频精品观看 | 九九免费在线看完整版 | 天天干天天射天天插 | 一级a毛片高清视频 | 中文在线资源 | 美女国产| 久久人人爽人人爽人人片av免费 | 久久精品视频在线观看免费 | 成人在线播放视频 | www黄色| free. 性欧美.com | 超薄丝袜一二三区 | 在线视频一二区 | 久久av高清 | 日韩影视在线观看 | 91在线免费播放 | 91视频在线观看下载 | 久久精品在线视频 | 久久99久久99精品中文字幕 | 黄色视屏在线免费观看 | 日韩av成人 | 亚洲天天在线日亚洲洲精 | 激情动态 | 国产精品系列在线观看 | 午夜久久久久久久久 | 亚洲三级黄色 | 国产高清精品在线观看 | 一区二区三区精品在线视频 | 中文av影院 | 国产黄色高清 | 91免费试看 | 91完整版在线观看 | 国产在线精品一区 | 久久久久免费网 | 美女黄网站视频免费 | 视频一区二区在线 | 国产97色 | www.黄色小说.com | 在线观看中文av | 成人久久电影 | 97色国产 | 国产伦理一区二区三区 | 成年人在线视频观看 | 精品久久久久久国产91 | 国际精品网 | 国产精品久久久久久妇 | 丁香激情综合 | 久久久久久久免费 | 性色在线视频 | 91桃色视频 | 中文字幕高清有码 | 久久a v视频 | 狠狠操狠狠 | 久久99精品国产麻豆宅宅 | 亚洲精品美女久久久 | 国产精品一区二区久久国产 | 国产黄色一级大片 | 日韩在线视 | 久久官网 | 国产99爱| 精品亚洲免费视频 | 国产老妇av | 国内三级在线观看 | 久久久99久久 | 久久国产精品免费视频 | 91在线中文字幕 | 一本一本久久a久久精品综合 | av超碰免费在线 | 国产又粗又猛又色又黄视频 | ,久久福利影视 | 色婷婷久久久综合中文字幕 | 中文字幕资源站 | 婷婷色 亚洲 | 久久乐九色婷婷综合色狠狠182 | 美女露久久 | 国产高清在线a视频大全 | 婷婷网在线 | 色多视频在线观看 | 日本激情中文字幕 | 日韩欧美在线第一页 | 麻豆 free xxxx movies hd| 久久久久久影视 | 毛片网站免费 | 日本三级人妇 | 视频在线观看一区 | 久久99亚洲网美利坚合众国 | 日韩免费一区二区 | 成人黄色小视频 | 久久人人添人人爽添人人88v | 激情综合亚洲精品 | 超碰在97| 综合激情 | av在线电影网站 | 亚洲欧美国产日韩在线观看 | 日韩精品第一区 | 日韩欧美精品免费 | 久久精品视频免费 | 午夜精品久久久久久久99水蜜桃 | 亚洲国产精品视频 | 亚洲天堂精品视频在线观看 | 人人玩人人添人人澡超碰 | 麻豆国产露脸在线观看 | 日韩在线影视 | 成人av网站在线 | 天天色棕合合合合合合 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 色黄www小说 | 国产精品99精品久久免费 | 九九久久影视 | 成人av网站在线观看 | 成人av动漫在线观看 | 色综合天天做天天爱 | av短片在线观看 | 最新av网址在线观看 | 一区二区精品在线视频 | 国产精品成人一区 | 日韩在线网址 | 成人午夜毛片 | 久久久一本精品99久久精品 | 一级特黄aaa大片在线观看 | 国产精品一区二区久久精品爱微奶 | 国产精品欧美久久久久久 | 综合影视 | 欧美99精品| 日韩在线观看视频网站 | 91秒拍国产福利一区 | 在线www色 | 蜜臀av性久久久久av蜜臀三区 | 日韩在线免费视频观看 | 久久精品直播 | 久久 在线 | 久久超碰在线 | 黄色毛片在线看 | 免费大片黄在线 | 成年人黄色在线观看 | 在线看不卡av | 最近中文字幕免费 | 99色在线视频 | 久久午夜电影 | www.黄色片网站 | 丁香花在线观看免费完整版视频 | 日韩在线电影 | 成人h视频 | 国产午夜精品一区二区三区四区 | 亚洲精品在线资源 | 日本成人中文字幕在线观看 | 亚洲不卡在线 | 中文字幕精品视频 | 91中文字幕在线观看 | 国产成视频在线观看 | 蜜臀一区二区三区精品免费视频 | 最近中文国产在线视频 | 日韩电影在线观看一区二区三区 | 精品久久综合 | 91热这里只有精品 | 国产小视频在线免费观看 | av日韩国产 | 欧美日韩1区2区 | 射射射av| 欧洲亚洲精品 | 西西人体4444www高清视频 | 视频一区在线免费观看 | 激情丁香 | 91桃色在线免费观看 | 亚洲电影一区二区 | 亚洲欧洲久久久 | 一本一道久久a久久综合蜜桃 | 99精品在线免费 | 日韩免费视频 | 国产精品手机在线播放 | 国产黄色在线网站 | 日本特黄特色aaa大片免费 | 欧美久久久久久久久久久久 | 伊人天天干 | a视频在线 | 在线中文字幕播放 | 欧美日韩一区三区 | 月下香电影 | 日韩精品高清视频 | 激情久久综合 | av在线免费观看不卡 | 91av在线电影 | 国产精品免费一区二区 | 一区 在线 影院 | 亚洲成av人片一区二区梦乃 | 色999在线| 欧美做受高潮 | 亚洲国产欧美在线人成大黄瓜 | 国产中文字幕三区 | 久久久久国产精品免费网站 | 日日操网站 | 美女久久久久久久久久 | 夜夜操天天干, | 中文字幕 国产 一区 | 日韩免费电影 | 日韩网站免费观看 | 免费在线播放视频 | 成人在线视频免费 | 精品一区二区在线免费观看 | 久草免费在线观看视频 | 亚洲成av人影片在线观看 | 日本性生活免费看 | 天天射天天干天天爽 | 在线观看91久久久久久 | 色国产视频 | 久久99精品久久久久久三级 | 欧美日本一二三 | 狠狠色狠狠色综合日日92 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 超碰国产在线观看 | 国产视频1区2区 | 久久se视频| 国产女人40精品一区毛片视频 | 亚洲国产精品成人综合 | 日本激情中文字幕 | 久久久久久蜜桃一区二区 | 久久伊人综合 | 婷婷在线色 | 欧美视频二区 | 久久久久五月 | 国产亚洲成av人片在线观看桃 | 91福利影院在线观看 | 久久久久久久国产精品视频 | 精品国产1区二区 | 亚洲精欧美一区二区精品 | 国产精品区免费视频 | 国产精品国产三级国产专区53 | 婷婷伊人综合亚洲综合网 | 五月婷婷婷婷婷 | 久久涩视频 | 久久精品在线 | 欧美久久影院 | 狠狠色丁香婷婷综合基地 | 一区二区三区国产欧美 | 亚洲欧美在线视频免费 | 18国产精品白浆在线观看免费 | 国产成人精品久 | 亚洲 欧美 综合 在线 精品 | 久久久一本精品99久久精品 | 亚洲视频观看 | 国产小视频免费在线观看 | 日日爽日日操 | 99久久er热在这里只有精品15 | 日韩视频在线不卡 | 久久99国产精品免费网站 | 一区二区三区四区精品 | av导航福利 | 国产一区免费在线观看 | 免费在线电影网址大全 | 国产精品系列在线 | av网站地址 | 久久国产精品久久w女人spa | 成人av免费在线播放 | 国产精品欧美久久久久三级 | 欧美另类tv | 在线a人v观看视频 | 欧美做受高潮 | 九色91av | 中文字幕一区二区三区四区久久 | 右手影院亚洲欧美 | 在线直播av | 视频一区二区精品 | 深爱激情五月综合 | 久久久精品国产免费观看同学 | 亚洲激情视频 | 天天操月月操 | 日韩中文字幕一区 | 一区二区三区日韩精品 | 麻豆视频免费在线观看 | 国产视频久久久久 | 涩涩网站在线看 | 99精品视频观看 | 福利片免费看 | 亚洲乱码久久 | 丁香久久久 | 国产不卡在线 | 99热日本| www.国产在线视频 | 日韩午夜三级 | 精品在线99 | 最新日韩在线 | 中文字幕亚洲欧美日韩2019 | 在线黄色av电影 | 高清av影院 | 久久婷婷国产色一区二区三区 | 国产二区电影 | 国产精品视频全国免费观看 | 狠狠干2018 | 日韩av电影免费在线观看 | 日韩精品电影在线播放 | 日韩精品首页 | 手机av在线免费观看 | 久久夜夜夜| 亚洲黄色高清 | 日韩一级黄色片 | 久久久久久久久久网站 | 日韩欧美在线中文字幕 | 99精品国产高清在线观看 | 亚州人成在线播放 | 成人黄色大片在线免费观看 | 草久久久久久 | 精品一区二区免费视频 | 日本三级久久 | 毛片一区二区 | 欧美日韩国产精品一区二区三区 | 97日日| 日韩中文字幕视频在线观看 | 91九色最新 | 久久99久久精品 | 99久久夜色精品国产亚洲 | 大型av综合网站 | 91九色网站 | 综合色影院 | 开心色激情网 | 国产精品一区二区在线免费观看 | 天天综合网在线 | 国产亚洲欧美在线视频 | 97在线公开视频 | 日韩一区二区免费视频 | 成人午夜电影久久影院 | 久久久夜色 | 亚洲精品电影在线 | 国产夫妻av在线 | 国产午夜精品久久久久久久久久 | 国产黄在线免费观看 | 精品一区二区日韩 | 黄色.com| 在线观看中文字幕第一页 | 欧美日韩一区二区三区不卡 | 国产精品日韩欧美 | 五月激情丁香婷婷 | 国产日产精品一区二区三区四区 | 亚洲综合欧美日韩狠狠色 | 日日夜夜亚洲 | av中文字幕在线播放 | 久操视频在线观看 | 婷婷在线免费 | 国产精品久久久久永久免费 | 亚洲第一香蕉视频 | 久久爱992xxoo| 韩国av免费在线 | 三级av片 | 99热国产在线观看 | 岛国av在线不卡 | 色999五月色| 精品国产福利在线 | 免费在线观看日韩 | 久久视频在线观看中文字幕 | 欧美日韩一区二区三区视频 | 天天天天天天干 | 在线观看成人小视频 | 久久免费福利视频 | 国产99久久九九精品 | 久久av福利 | 成人午夜精品久久久久久久3d | 精品视频资源站 | 午夜精品久久久久久久99 | 五月天丁香亚洲 | 超碰免费久久 | 狠狠色狠狠综合久久 | 成人在线播放免费观看 | 天天激情 | 国内成人精品2018免费看 | 色姑娘综合天天 | 久久再线视频 | 男女靠逼app| 亚洲另类在线视频 | 在线免费观看国产精品 | 欧美午夜激情网 | 91免费网址 | a级国产乱理论片在线观看 特级毛片在线观看 | 在线免费观看国产视频 | 久久久噜噜噜久久久 | 特级a老妇做爰全过程 | 天天夜夜狠狠操 | 在线黄色免费av | 中文字幕xxxx | 欧美日韩久久不卡 | 亚洲精品中文字幕在线 | 久久久久久久久亚洲精品 | 91黄色小视频 | 亚洲免费精品一区二区 | 国产精品视频999 | 亚洲视频免费在线观看 | 亚洲欧洲成人 | 国产成人亚洲精品自产在线 | 99视频网址 | 国产精品系列在线观看 | 日韩中文字幕国产精品 | 亚洲片在线资源 | 久久综合婷婷综合 | 国产精品乱码久久久久 | 国产手机精品视频 | av电影在线免费观看 | 手机在线日韩视频 | 久久国产精品色av免费看 | 欧美成人中文字幕 | 亚洲精品永久免费视频 | 又色又爽又黄高潮的免费视频 | 人人狠 | 激情综合啪啪 | 欧美日韩视频精品 | 中文字幕在线观看视频网站 | 97视频免费观看2区 亚洲视屏 | 黄色99视频 | 亚洲美女精品视频 | 久久精品网| 日韩在线观看你懂得 | 91在线看网站 | 天堂在线一区二区 | 一区二区三区在线影院 | 免费看一级特黄a大片 | 在线视频观看成人 | 色综合欧洲 | 亚洲精品视频免费看 | 欧美日韩在线视频一区 | 欧洲激情综合 | 久久一区国产 | 国产精品久久久久久久久久ktv | 美女网站视频免费黄 | 亚洲精品乱码久久久久久写真 | 一级免费黄视频 | 国产日韩欧美综合在线 | 天天草综合 | 久久精品99国产精品亚洲最刺激 | 日韩免费在线视频观看 | 97超碰人人澡人人 | 色综合久久88色综合天天6 | 三三级黄色片之日韩 | 久草干 | 96精品高清视频在线观看软件特色 | 欧美日韩一区二区视频在线观看 | av日韩精品| 成年性视频| 亚洲 中文 在线 精品 | 在线免费视频一区 | 久章草在线观看 | 日本黄色免费网站 | 97精品久久 | 日韩免费一二三区 | 国产三级香港三韩国三级 | 99亚洲精品在线 | 欧美最新另类人妖 | 精品一区二区在线免费观看 | 久草在线免费播放 | 永久免费在线 | av片在线观看 | 久久久国产精品麻豆 | 国产高清av免费在线观看 | 在线观看视频黄色 | 日韩视频免费观看高清 | 国产精品成 | 干天天 | 中文字幕影视 | 欧美精品久久久久久久久久丰满 | 国产在线观看中文字幕 | 国产成人一区二区啪在线观看 | 超碰免费av| 国产精品一区二区三区免费看 | 黄色毛片在线看 | 在线免费av观看 | 成人在线视频在线观看 | 色激情五月 | 91精品导航 | 手机成人在线电影 | 欧美日韩免费在线观看视频 | 五月色婷 | 久久久久国产精品午夜一区 | 国产一级片网站 | 亚洲天天草 | 91入口在线观看 | 欧美性成人 | 中文字幕亚洲五码 | 在线只有精品 | 日本公妇在线观看高清 | 中国一区二区视频 | 五月天堂色 | 午夜av网站| 色噜噜日韩精品欧美一区二区 | 九九热在线精品视频 | 三级av小说 | 91激情小视频 | 三级av在线免费观看 | 色综合久久悠悠 | 97福利社| 国产精品免费一区二区三区在线观看 | 91丨九色丨蝌蚪丨对白 | www.久艹 | 婷婷国产在线 | 看全黄大色黄大片 | 97视频入口免费观看 | 色网站黄| 国色综合 | 久久久久免费精品 | 国产美女视频免费观看的网站 | 成人a级网站 | 91亚洲精品久久久蜜桃 | 婷婷亚洲综合五月天小说 | 高清不卡毛片 | 欧美精品做受xxx性少妇 | 91丨九色丨首页 | 久久精品婷婷 | 免费在线观看a v | 九九久久国产精品 | 日本视频久久久 | 在线观看视频福利 | 日本久久中文 | 久久久久福利视频 | 婷婷在线不卡 | 国产精品爽爽久久久久久蜜臀 | 色婷婷av国产精品 | 国产区在线视频 | 一区二区三区免费在线观看视频 | 久久成人免费电影 | 人人藻人人澡人人爽 | 国产粉嫩在线观看 | 久久久久久久久电影 | 国产精品福利在线观看 | 亚洲激情久久 | 一区二区三区在线视频观看58 | 久久精品一区二 | 在线亚洲午夜片av大片 | 六月丁香综合网 | 久久久久 | 国产一线二线三线性视频 | 国产视频在线观看一区 | www.夜夜爱 | 最近日本韩国中文字幕 | 中文字幕你懂的 | 一级成人网 | 亚洲黄色激情小说 | 九色porny真实丨国产18 | 久久精品3 | 最新一区二区三区 | 成人黄色大片网站 | 深夜男人影院 | 中文字幕在线免费97 | 亚洲视频分类 | 精品国产一区二区三区蜜臀 | 夜夜嗨av色一区二区不卡 | 欧美精品久久久久久久免费 | 一区二区三区在线观看中文字幕 | 99久久日韩精品免费热麻豆美女 | 国产精品 亚洲精品 | 五月天激情综合 | 免费日韩一区二区三区 | 亚洲精品久久久蜜桃直播 | 在线v| 91在线视频导航 | 国产精品av电影 | 欧美日韩精品久久久 | 成人av播放| 91精品1区 | 日韩资源在线观看 | 视频在线国产 | 国产伦精品一区二区三区照片91 | 久久综合电影 | 亚洲精品h | 中文字幕在线有码 | 国产亚洲精品成人av久久影院 | 日韩成人在线免费观看 | 免费在线播放 | 国产精品一区二区三区在线播放 | 成人午夜影院 | 中文字幕在线视频一区 | 特级黄色片免费看 | 中文字幕在线观看视频网站 | 国产精品免费久久久久 | 九九有精品 | 一区二区三区四区五区六区 | 国产高清视频免费在线观看 | 99免费看片 | 国产视频一区在线播放 | 久久久久国产精品午夜一区 | 久久精精品 | 7777精品伊人久久久大香线蕉 | 九九热精品视频在线观看 | 93久久精品日日躁夜夜躁欧美 | 中文字幕一二三区 | 高清国产一区 | 亚洲精品美女久久久久网站 | 国产成人精品一二三区 | 久久黄页| 国产91免费在线 | 欧美在线视频日韩 | 国产精品专区h在线观看 | 在线成人中文字幕 | 黄色影院在线免费观看 | 色综合久久综合中文综合网 | 国产在线999| 国产精品成人aaaaa网站 | japanesefreesex中国少妇 | 欧美另类人妖 | 91精品高清| av黄色成人 | 免费看十八岁美女 | 亚洲成人一区 | 成人免费电影 | av一区在线播放 | 91豆麻精品91久久久久久 | 婷婷五月在线视频 | 亚洲国产欧美在线人成大黄瓜 | 色婷婷五 | 午夜精品一二三区 | 欧美日韩高清国产 | 日韩在线小视频 | 正在播放一区二区 | 在线观看www91 | 亚洲欧美一区二区三区孕妇写真 | 天堂av高清 | 激情欧美一区二区三区免费看 | 久久久久国产精品视频 | 婷婷色社区 | 久草在线网址 | 国产精品免费久久 | 中文字幕日本在线 | 999国内精品永久免费视频 | 99国内精品久久久久久久 | 99免费观看视频 | 人人狠狠综合久久亚洲 | 亚洲成aⅴ人片久久青草影院 | 日韩aa视频| 久久久久久亚洲精品 | 免费视频一二三 | 五月天天色 | av7777777| 成片免费观看视频 | av网站免费线看精品 | www.婷婷com | 久久婷婷精品视频 | 国产日韩在线播放 | 五月婷婷丁香网 | 婷婷成人在线 | 欧美精品久久久久久久免费 | www激情com| 日韩一级成人av | 欧美日韩国产一区二区三区在线观看 | 狠狠色丁香婷婷综合久久片 | 99久热在线精品视频 | 中文字幕国产精品一区二区 | 免费在线观看亚洲视频 | 成人免费在线电影 | 九色视频自拍 | 成人久久18免费网站图片 | 色婷婷狠狠干 | 在线观看黄网站 | 日本视频不卡 | 丁香激情视频 | 国产精品久久久久久久婷婷 | 99久久久国产精品免费观看 | 日韩精品一区二区久久 | 韩国精品福利一区二区三区 | 成人a视频 | 亚洲国产精品va在线看 | 在线成人观看 | 国产精品久久一区二区三区不卡 | 国产婷婷久久 | 日p在线观看 | 免费黄色在线 | 91成人在线视频 | 久草视频在线观 | 最近中文字幕免费视频 | 免费瑟瑟网站 | 激情欧美在线观看 | 精品一区二区在线免费观看 | 国产精品系列在线播放 | 一区二区三区在线不卡 | 81精品国产乱码久久久久久 | 在线亚洲欧美日韩 | 久久污视频 | 国产精品美女久久久久久免费 | www.色午夜,com | 国产一区网址 | 波多野结衣综合网 | 五月婷婷久久综合 | 亚洲精品中文字幕在线 | 亚洲精品456在线播放乱码 | 日韩一区在线免费观看 | 久久中文精品视频 | 97电影在线看视频 | 欧美激情精品久久久久久 | 欧美日韩一区久久 | 日日爽日日操 | 日韩av在线小说 | 丁香六月婷婷开心婷婷网 | 国产免费中文字幕 | 久久特级毛片 | 国产一线天在线观看 | 成年人在线观看网站 | 久草网站 | 久久国产手机看片 | 亚洲国产日韩av | 亚洲黄色在线播放 | 国产一区二区三区四区在线 | 日韩av电影一区 | 国产精品欧美久久 | a爱爱视频 | www.五月天婷婷.com | 国产精品一区二区白浆 | 国产色视频网站 | 久视频在线播放 | 亚洲国产中文字幕在线视频综合 | 日本在线观看中文字幕无线观看 | 成片免费观看视频999 | 人人爽人人乐 | 91免费观看视频在线 | 在线免费国产 | 亚洲欧美日韩不卡 | 91视频xxxx| av片子在线观看 | 天天爽综合网 | 超碰在线观看av.com | 免费亚洲一区二区 | 久久久久久久看片 | 99久久久久成人国产免费 | 五月天综合色 | 亚洲视频在线视频 | 国产成人精品久久久久 | 色婷婷www | 欧美精品一二三 | 日韩在线高清免费视频 | 日本婷婷色 | 久久久久综合网 | 欧美精品久久久久久久久久白贞 | 精品国产乱码一区二区三区在线 | 999久久久久 | 99精品福利 | 新版资源中文在线观看 | 亚洲丝袜一区二区 | 久久精品久久久久电影 | 色天天综合网 | 91伊人影院 | 激情欧美一区二区三区免费看 | 91少妇精拍在线播放 | 亚洲精品中文字幕在线 | 亚洲码国产日韩欧美高潮在线播放 | 天天草天天色 | www.夜夜夜 | 日韩免费视频在线观看 | 精品福利网站 | 欧美激情精品久久久久久变态 | 久久精品一区二区三区中文字幕 | 亚洲九九 | 国产精品国产三级国产aⅴ9色 |