成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 前端canvas動畫如何轉(zhuǎn)成mp4視頻的方法

前端canvas動畫如何轉(zhuǎn)成mp4視頻的方法

熱門標簽:高德地圖標注錯誤怎么修改 搜狗星級酒店地圖標注 地圖標注自己去過的地方 平頂山電子地圖標注怎么修改 江蘇高頻外呼系統(tǒng)線路 洛陽市伊川縣地圖標注中心官網(wǎng) 會聲會影怎樣做地圖標注效果 電銷機器人視頻 標準智能外呼系統(tǒng)

用戶通過上傳合適尺寸的圖片,選著渲染動畫的效果和音樂,可以預覽類似幻燈片的效果,最后點擊確認生成視頻,可以放到頭條或者抖音播放。

生成視頻可能的方案

純前端的視頻編碼轉(zhuǎn)換(例如WebM Encoder Whammy)

  • 圖片地址只能是相對地址
  • 音樂不能收錄
  • 生成的視頻需要下載再上傳

將每幀圖片傳給后端實現(xiàn),由后端調(diào)用FFmpeg進行視頻轉(zhuǎn)碼

  • 截圖多的時候,base64字符串形式的圖片太大,在前端不好傳給后端
  • 在前端截圖還依賴用戶電腦性能;

最后定的方案流程

  • canvas動畫和截圖在服務器端運行,后端根據(jù)標識獲取截圖
  • 利用FFmpeg將圖片合并成視頻,并將視頻存儲在server端,并返回相應下載url
  • 前端通過請求得到視頻文件

前端canvas如何截圖

每幀圖片生成

圖片生成可以通過canvas原生接口toDataURL實現(xiàn),最終返回base64形式的圖像數(shù)據(jù)

function generatePng() {
    var canvas = document.createElement('canvas');
    let icavas = '#canvas' //渲染動畫的canvas id
    if (wrapWidth == 2) {
        icavas = '#verticalCanvas'
    }
    var canvasNode = document.querySelector(icavas)

    canvas.width = canvasNode.width;
    canvas.height = canvasNode.height;
    var ctx = canvas.getContext('2d');
    ctx.drawImage(canvasNode, 0, 0);
    var imgData = canvas.toDataURL("image/png");
    return imgData;
}

canvas動畫截圖的方法

用setInterval定時執(zhí)行圖片生成的方法,當然也可以用requestAnimationFrame

setInterval(function() {
    imgsTemp.push(generatePng())
}, 1000/60)

后端如何獲取每幀圖片

方案一:無頭瀏覽器運行前端canvas動畫js,然后js截圖

最初設(shè)想:

截圖用console.log打印出來,canvas截圖是base64格式的,一個15秒的動畫,截圖有100多張,直接導致服務器運行崩潰(被否了);

試運行方案:

截圖存儲在js變量中,動畫播放完成,在頁面中加一個標識,然后后端去取這個變量,代碼如下:

const pages = {
    imageZoomOut: import ('./image_zoom_inout.js'), //縮放
    imageArt: import ('./image_art.js'), //擦除
    imageGrid: import ('./image_grid.js'), //網(wǎng)格
    imageRotate: import ('./image_rotate.js'), //開合
    imageFlash: import ('./image_flash.js'), //圖文快閃
    imageVerticalArt: import ('./image_vertical_art.js'), //豎版擦除
    imageVerticalGrid: import ('./image_vertical_grid.js'), //豎版網(wǎng)格
    imageVerticalRotate: import ('./image_vertical_rotate.js'), //豎版開合
    imageVerticalFlash: import ('./image_vertical_flash.js'), //豎版圖文快閃
    imageVerticalZoomOut: import ('./image_vertical_zoom_inout.js'), //豎版縮放
    imageVertical: import ('./image_vertical.js'), //豎版通用
};
var isShow = false
var imgsBase64 = []
var imgsTemp = []
var cutInter = null
var imgsTimeLong = 0
function getQuerys(tag) {
    let queryStr = window.location.search.slice(1);
    let queryArr = queryStr.split('&');
    let query = [];
    let spec = {}
    for (let i = 0, len = queryArr.length; i < len; i++) {
        let queryItem = queryArr[i].split('=');
        let qitem = decodeURIComponent(queryItem[1])
        if (queryItem[0] == tag) {
            query.push(qitem);
        } else {
            spec[queryItem[0]] = qitem
        }
    }
    return { list: query, spec: spec };
}
var getQuery = getQuerys('images')
var effectTag = getQuery.spec.tid
var wrapWidth = getQuery.spec.templateType
let num = 0
let imgArr = []
function creatImg() {
    var images = getQuery.list
    let newImg = []
    let vh = wrapWidth == 1 ? 360 : 640
    let vw = wrapWidth == 1 ? 640 : 360
    if (effectTag.indexOf('Flash') > -1) {
        images.map(function(item, index) {
            if (11 === index || 13 === index || 16 === index) {
                var temp = new Image(vw, vh)
                temp.setAttribute('crossOrigin', 'anonymous');
                temp.src = item;
                newImg.push(temp)

            } else {
                newImg.push(item)
            }
        })
        imgArr = newImg
        renderAnimate(effectTag)
    } else {
        images.map(function(item) {
            var temp = new Image(vw, vh)
            temp.setAttribute('crossOrigin', 'anonymous');
            temp.src = item;
            temp.onload = function() {
                num++
                if (num == images.length) {
                    renderAnimate(effectTag)
                }
            }
            newImg.push(temp)
        })
        imgArr = newImg
    }
}
async function renderAnimate(page) {
    //await creatImg()
    let me = this
    const pageA = await pages[page];
    let oldDate = new Date().getTime()
    let icavas = '#canvas'
    if (wrapWidth == 2) {
        icavas = '#verticalCanvas'
    }
    let innerCanvas = document.querySelector(icavas)
    isShow = false
    pageA[page].render(null, {
        canvas: innerCanvas,
        images: imgArr
    }, function() {
        //動畫播完
        isShow = true;
        imgsTemp.push(generatePng())
        imgsBase64.push(imgsTemp)
        let now = new Date().getTime()
        window.imgsTimeLong = now - oldDate

        clearInterval(cutInter)
        document.getElementById('cutImg').innerHTML = 'done'//頁面標識
    })
    cutInter = setInterval(function() {
        imgsTemp.push(generatePng())
        if (imgsTemp.length >= 50) {
            imgsBase64.push(imgsTemp)
            imgsTemp = []
        }
    }, 130)
}
function getImgs() {
    return imgsBase64
}
function generatePng() {
    var canvas = document.createElement('canvas');
    let icavas = '#canvas'
    if (wrapWidth == 2) {
        icavas = '#verticalCanvas'
    }

    var canvasNode = document.querySelector(icavas)
    canvas.width = canvasNode.width;
    canvas.height = canvasNode.height;
    var ctx = canvas.getContext('2d');
    ctx.drawImage(canvasNode, 0, 0);
    var imgData = canvas.toDataURL("image/png");
    return imgData;
}
window.imgsBase64 = imgsBase64 //截圖存儲變量

creatImg()

試運行方案的弊端:

  • 截圖間隔130ms截一張圖片,截圖數(shù)量太少,導致生成的動畫不流暢;
  • 截圖間隔調(diào)成1秒60幀的話,動畫播放緩慢,導致生成視頻時間變長;(settimeout和setinterval的機制)
  • 圖片尺寸在640x360或者360x640,生成的動畫在手機端預覽不清晰;
  • 需求換成圖片尺寸為1280x720或者720x1280之后,原本15秒的動畫在服務器端執(zhí)行變成了70多秒
  • canvas截圖存在跨域問題,可以如下設(shè)置
var temp = new Image(vw, vh)
temp.setAttribute('crossOrigin', 'anonymous');

最終方案:在NODE端運行動畫

用node-canvas,把每幀截圖用 fs.writeFile 寫到指定的文件夾里

const {
    createCanvas,
    loadImage
} = require("canvas");
const pages = {
    imageZoomOut: require('./image_zoom_inout.js'), //縮放
    imageArt: require('./image_art.js'), //擦除
    imageGrid: require('./image_grid.js'), //網(wǎng)格
    imageRotate: require('./image_rotate.js'), //開合
    imageFlash: require('./image_flash.js'), //圖文快閃
    imageVerticalArt: require('./image_vertical_art.js'), //豎版擦除
    imageVerticalGrid: require('./image_vertical_grid.js'), //豎版網(wǎng)格
    imageVerticalRotate: require('./image_vertical_rotate.js'), //豎版開合
    imageVerticalFlash: require('./image_vertical_flash.js'), //豎版圖文快閃
    imageVerticalZoomOut: require('./image_vertical_zoom_inout.js'), //豎版縮放
    imageVertical: require('./image_vertical.js'), //豎版通用
};

const fs = require("fs");
const querystring = require('querystring');
let args = process.argv && process.argv[2]
let parse = querystring.parse(args)

let vh = parse.templateType == 1 ? 720 : 1280 //canvas 高
let vw = parse.templateType == 1 ? 1280 : 720 //canvas 寬
let imgSrcArray = parse.images //圖片數(shù)組
let effectTag = parse.tid //動畫效果

let saveImgPath = process.argv && process.argv[3]

let loadArr = []

imgSrcArray.forEach(element => {
    if (/\.(jpg|jpeg|png|JPG|PNG)$/.test(element)) {
        loadArr.push(loadImage(element))
    } else {
        loadArr.push(element)
    }
});

const canvas = createCanvas(vw, vh);
const ctx = canvas.getContext("2d");

Promise.all(loadArr)
    .then((images) => {
        //初始化動畫
        console.log('開始動畫')
        let oldDate = new Date().getTime()
        pages[effectTag].render(null, {
            canvas: canvas,
            images: images
        }, function() {
            clearInterval(interval)
            let now = new Date().getTime()
            console.log(now - oldDate, '動畫結(jié)束')
        })

        const interval = setInterval(
            (function() {
                let x = 0;
                return () => {
                    x += 1;
                    ctx.canvas.toDataURL('image/jpeg', function(err, png) {
                        if (err) {
                            console.log(err);
                            return;
                        }
                        let data = png.replace(/^data:image\/\w+;base64,/, '');
                        let buf = new Buffer(data, 'base64');
                        fs.writeFile(`${saveImgPath}${x}.jpg`, buf, {}, (err) => {
                            console.log(x, err);
                            return;
                        });
                    });
                };
            })(),
            1000 / 60
        );
    })
    .catch(e => {
        console.log(e);
    });

在iterm下執(zhí)行下面命令

node testCanvas.js 'tid=imageArt&templateType=1&images=../assets/imgs/8.png&images=../assets/imgs/6.png&images=../assets/imgs/7.png&images=../assets/imgs/6.png&images=../assets/imgs/8.png&images=../assets/imgs/7.png&images=../assets/imgs/4.png&images=../assets/imgs/6.png&images=../assets/imgs/8.png&images=../assets/imgs/7.png' './images/'

參數(shù)說明:
1)tid 是動畫名稱
2)templateType是尺寸:"1":1280*720;"2":720*1280
3) images是圖片地址
4)變量'./images/'是截圖保存的地址,

NODE環(huán)境下運行的弊端

  • 參數(shù)圖片地址只能是相對地址
  • 動畫過于復雜時,運行時間長,如下:當頁面的圖形數(shù)量達到一定時,動畫每一幀就要大量調(diào)用canvas的API,要進行大量的計算,再加上圖片體積很大,就會慢

每隔13秒循環(huán)一次下面的畫圖:   

 

   for (var A = 0; 50 > A; A++)
        p.beginPath(),
        p.globalAlpha = 1 - A / 49,
        p.save(),
        p.arc(180,320,P + 2 * A, 0, 2 * Math.PI),
        p.clip(),
        p.drawImage(x[c], 0, 0, y.width, y.height),
        p.restore(),
        p.closePath();

    for (var S = 0; 50 > S; S++)
        p.beginPath(),
        p.globalAlpha = 1 - S / 49,
        p.save(),
        p.rect(0, 0, d + P + 2 * S, g + b + 2 * S),
        p.clip(),
        p.drawImage(x[c], 0, 0, y.width, y.height),
        p.restore(),
        p.closePath();

因為Node.js 的事件循環(huán)模型,要求 Node.js 的使用必須時刻保證 Node.js 的循環(huán)能夠運轉(zhuǎn),如果出現(xiàn)非常耗時的函數(shù),那么事件循環(huán)就會陷入進去,無法及時處理其他的任務,所以導致有些動畫還是慢

后期優(yōu)化的可能

嘗試用go語言,來截圖;

重寫canvas動畫;

番外

視頻碼率

視頻碼率就是數(shù)據(jù)傳輸時單位時間傳送的數(shù)據(jù)位數(shù),一般我們用的單位是kbps即千位每秒。通俗一點的理解就是取樣率,單位時間內(nèi)取樣率越大,精度就越高,處理出來的文件就越接近原始文件。舉例來看,對于一個音頻,其碼率越高,被壓縮的比例越小,音質(zhì)損失越小,與音源的音質(zhì)越接近。

FPS 每秒傳輸幀數(shù)(Frames Per Second))

FPS是圖像領(lǐng)域中的定義,是指畫面每秒傳輸幀數(shù),通俗來講就是指動畫或視頻的畫面數(shù)。FPS是測量用于保存、顯示動態(tài)視頻的信息數(shù)量。每秒鐘幀數(shù)愈多,所顯示的動作就會愈流暢。通常,要避免動作不流暢的最低是30。例如電影以每秒24張畫面的速度播放,也就是一秒鐘內(nèi)在屏幕上連續(xù)投射出24張靜止畫面。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:松原 果洛 廣東 鄂爾多斯 阿克蘇 常德 蚌埠 廣西

巨人網(wǎng)絡(luò)通訊聲明:本文標題《前端canvas動畫如何轉(zhuǎn)成mp4視頻的方法》,本文關(guān)鍵詞  前端,canvas,動畫,如何,轉(zhuǎn)成,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《前端canvas動畫如何轉(zhuǎn)成mp4視頻的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于前端canvas動畫如何轉(zhuǎn)成mp4視頻的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    魔女鞋交玉足榨精调教| 国产又黄又粗又爽| 日本www在线| 黑人精品一区二区三区| 欧美色就是色| 亚洲色图狂野欧美| 日韩国产欧美精品| 男女视频在线观看免费| 国产sm在线观看| 91亚洲精品一区二区乱码| 97久久精品视频| 四虎永久网址| 亚洲精品视频在线观看免费| 日本人妻熟妇久久久久久| 国产福利一区二区三区| 国产乱国产乱300精品| 日韩成人在线免费视频| 色悠久久久久综合先锋影音下载| 日本人妻丰满熟妇久久久久久| 国产精选一区二区三区不卡催乳| 亚洲电影小说图| 欧美肉大捧一进一出免费视频| 一区二区乱子伦在线播放| 9色在线视频网站| 国产精品欧美精品| wwwxxxx在线观看| 黑色丝袜福利片av久久| 日韩精品一区二区三区视频播放| 免费黄色在线网址| 国产成人一区二区三区电影| 国产亚洲成av人片在线观看桃| h版电影在线播放视频网站| 亚洲欧美国内爽妇网| 尤物九九久久国产精品的分类| 一区二区三区高清在线观看| 国产成+人+综合+亚洲欧美丁香花| 欧美日韩激情视频在线观看| 老牛国产精品一区的观看方式| 99re在线视频观看| 中文字幕精品无码亚| 欧美国产日韩在线视频| 一区二区视频免费| 熟女高潮一区二区三区| 亚洲一区日韩精品中文字幕| 亚洲成a人片在线www| 欧美精品一区二区三区在线四季| 日韩免费av| 国产va在线观看| 成人午夜激情视频| 色狠狠久久av五月综合| 视频在线观看国产精品| 日本丰满少妇xxxx| 在线观看免费播放网址成人| 国产亚洲色婷婷久久99精品| caopor在线| 视频区 图片区 小说区| 先锋影音欧美官网| 国产精品作爱| 污视频在线看网站| 国产91在线高潮白浆在线观看| 狠狠操狠狠色| 国产精品一色哟哟哟| 97超碰资源站| 国产粉嫩一区二区三区在线观看| 日本三级中国三级99人妇网站| 久久久久在线观看| 成人免费观看cn| 日本特黄久久久高潮| av成人福利| 高清视频在线观看三级| 国产精品久久久久久中文字| 欧美成人免费视频| 国产精品69久久久久孕妇欧美| 毛片一区二区三区| 久久精品偷拍视频| 香蕉视频在线观看黄| 91欧美在线视频| 国产手机av在线| 久久久久久穴| 66av99| 国产亚洲精品成人| 久久久中精品2020中文| 一区二区三区四区五区精品| 成人在线免费视频| 久久精品国产96久久久香蕉| 美女视频亚洲色图| 国产亚洲自拍一区| www.17c.com喷水少妇| 精品91福利视频| 做a视频在线观看| 亚洲中文字幕无码中文字| 欧美日韩综合高清一区二区| 日韩a级大片| 亚洲日韩中文字幕在线播放| 手机在线不卡av| 国内精品国语自产拍在线观看| 久久撸在线视频| 91青草视频久久| 无码人妻h动漫| 亚洲欧美综合另类| 亚洲大胆美女视频| 免费的成人av| 欧美日韩美女视频| 国产绳艺sm调教室论坛| 欧美二区在线观看| 一级网站在线观看| 麻豆蜜桃91| 日本一区二区三区电影免费观看| 在线观看免费一区| 蜜臀av亚洲一区中文字幕| 国产在线精品一区在线观看麻豆| 精品产品国产在线不卡| 国产传媒一区二区三区| 国产一区在线免费观看| 亚洲熟女毛茸茸| 91九色国产蝌蚪| aaa亚洲精品| 九色|91porny| 欧美日韩在线视频一区二区三区| 久久九九影视网| 久久久国产精彩视频美女艺术照福利| av大片免费看| 五月天av网站| 亚洲国内精品在线| 亚洲国产aⅴ精品一区二区| 日韩av黄色| 1卡2卡3卡精品视频| 精品国产成人| 美女网站一区二区| 中日韩av在线播放| 国产欧美日韩在线观看视频| 欧美绝品在线观看成人午夜影视| 国产精品老牛影院在线观看| 日韩av资源站| 亚洲免费久久| 欧美一级片在线观看| av资源免费看| 久久综合久久鬼色中文字| 禁网站在线观看免费视频| 伊人久久久久久久久久久| 中文av一区特黄| 精品剧情v国产在线观看在线| 亚洲同性同志一二三专区| 久久伊人成人网| 欧美第十八页| 国产系列电影在线播放网址| 最近中文字幕在线mv视频在线| 日韩国产欧美精品| 久久精品久久久久久国产 免费| 青草青青国产| 性感av在线播放| 国产精品久久久久久久泡妞| 久久美女高清视频| 亚洲精品不卡在线| 性色av一区二区| 四虎影视4hu4虎成人| 亚洲天堂成人在线| 一区二区三区欧美| 欧美 日韩 国产 在线| 午夜精品久久久久久| 欧美三区视频| 亚洲 欧美 视频| 欧美高清精品一区二区| 亚洲一区欧美激情| 黄色网页网址在线免费| 婷婷丁香久久五月婷婷| 日本黄视频网站| 精品国产中文字幕| 视频国产一区二区| 国产在线精品一区在线观看麻豆| 日本不卡视频在线播放| 久久久久久久久久久久久女过产乱| 精品久久久久久久久久ntr影视| 欧美一级片久久久久久久| 欧美www.| 好吊色一区二区| 一级全黄裸体片| 黄色网址网站在线观看| 国产成人av免费观看| 91久久伊人青青碰碰婷婷| 午夜精品在线播放| 在线亚洲高清视频| 亚洲综合社区| 91好色先生tv| 欧美另类极品| 国产精品爽黄69| 成人福利网站在线观看| 国产精品第四页| 在线观看欧美日本| 日韩精品在线观看免费| 亚洲国产精品久久人人爱| 性伦欧美刺激片在线观看| 国模大尺度私拍在线视频| 国产精品免费观看在线| 免费看毛片网站| 亚洲v精品v日韩v欧美v专区| 欧美国产日韩a欧美在线观看| 精品国产午夜福利在线观看| 精品欧美一区二区三区精品久久| 国产精品123| 亚洲成人二区| 色婷婷综合久久久中字幕精品久久| 高端美女服务在线视频播放| 国产精品大片wwwwww| 国产91亚洲精品| 日韩视频不卡| 欧美洲成人男女午夜视频| 日韩成人av电影在线| 亚洲一区二区三区四区五区| 亚洲欧美日韩国产精品| 水蜜桃亚洲一二三四在线| 综合色就爱涩涩涩综合婷婷| 欧美日韩乱国产| 91精品国产黑色紧身裤美女| jlzzjlzz国产精品久久| 风间由美一二三区av片| 国产偷人爽久久久久久老妇app| 看全色黄大色大片免费久久久| 一日本道久久久精品国产| 二区三区在线视频| 黄色av网址在线| 亚洲性生活大片| 中国毛片直接看| 99久久一区三区四区免费| 精品国产午夜肉伦伦影院| 欧美人xxx| 亚洲欧美一区二区三区四区五区| 91原创国产| 久久久久蜜桃| 无码人妻精品一区二区三区不卡| 久久精品人人做人人爽97| 91精品国产91久久久久久吃药| 韩国成人免费视频| 特黄视频免费观看| 免费看美女视频在线网站| 成人日韩av在线| 国产午夜一区二区| 亚洲日本天堂| 1区2区在线| 国产激情精品一区二区三区| 四虎海外影库www4hu| 国产乱码精品一区二区三区忘忧草| 天码人妻一区二区三区在线看| 一区二区三区欧美在线观看| 97人人爽人人喊人人模波多| 欧美日韩国产在线看| 免费av网站在线看| 2012中文字幕在线视频| 中文字幕在线国产精品| 日韩欧美1区| 精品免费99久久| 国产精品18久久久久久久网站| 免费看的黄色网| 国产精品久久久久一区二区三区共| 午夜国产一区二区三区| 国产精品久久二区二区| 青娱乐在线免费视频| 岛国一区二区三区| 91嫩草在线| 久久66热这里只有精品| 中文字幕第一区第二区| 在线观看91| 亚洲日本视频在线观看| 亚洲精品国产拍免费91在线| 亚洲天天影视| 美女毛片免费看| 欧美日韩国产一区二区三区不卡| 7878成人国产在线观看| 欧美成人性网| 丰满人妻中伦妇伦精品app| 最新亚洲人成网站在线观看| 97在线资源在| 国产精品3区| 欧美一级夜夜爽| 毛片网站免费哦| 国产欧美精品一区二区| 亚洲精品成人久久久998| 一级爱爱免费视频| 欧美办公室脚交xxxx| 99中文视频在线| 欧美性色aⅴ视频一区日韩精品| 国产一级久久久| 亚洲色图25p| 97精品视频在线观看自产线路二| 欧美午夜精品一区二区三区| 亚洲精品日韩久久| 99精品电影| 91丨porny丨对白| 久久人体视频| 99热超碰在线| 久久在线免费观看| 激情综合网天天干| 久久品道一品道久久精品| 午夜精品一区二区三区在线视| japanese23hdxxxx日韩| 97香蕉久久| 四色永久免费网站| 国产一区视频在线播放| 国产高潮呻吟久久| 国产精品欧美一区二区三区不卡| 99久久精品免费观看| 亚洲第一福利一区| 91精品国产综合久久精品app| 欧美大片在线观看一区二区| 先锋影音av资源在线| 国产精品v欧美精品v日韩精品| 中文字幕免费高清在线| 免费看成人吃奶视频在线| 高清不卡在线观看| av免费在线观看不卡| 尤物网站在线看| 亚洲最黄网站| 理论视频在线观看| 在线天堂中文www视软件| 熟妇高潮一区二区三区| 亚洲女同二女同志奶水| 中国特级黄色片| 免费黄色三级网站| 手机看片福利在线观看| 午夜在线精品偷拍| 亚洲青色在线| 欧美影视一区二区三区| 黄色av免费播放| 欧美一区二区不卡视频| 国产三级视频在线播放线观看| 少妇丰满尤物大尺度写真| av一级在线| 国产精品1区2区3区|