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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

video4linux简介

發(fā)布時間:2023/12/10 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 video4linux简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Video4linux(簡稱V4L),是linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動,現(xiàn)在已有Video4linux2,還未加入linux內(nèi)核,使用需自己下載補丁。在Linux中,視頻設(shè)備是設(shè)備文件,可以像訪問普通文件一樣對其進(jìn)行讀寫,攝像頭在/dev/video0下。


2.Video4linux下視頻編程的流程
(1)打開視頻設(shè)備:
(2) 讀取設(shè)備信息
(3)更改設(shè)備當(dāng)前設(shè)置(沒必要的話可以不做)
(4)進(jìn)行視頻采集,兩種方法:
??????? a.內(nèi)存映射
??????? b.直接從設(shè)備讀取
(5)對采集的視頻進(jìn)行處理
(6)關(guān)閉視頻設(shè)備。

為程序定義的數(shù)據(jù)結(jié)構(gòu)
typedef struct v4l_struct
{
?? int fd;
?? struct video_capability capability;
?? struct video_channel channel[4];
?? struct video_picture picture;
?? struct video_window window;
?? struct video_capture capture;
?? struct video_buffer buffer;
?? struct video_mmap mmap;
?? struct video_mbuf mbuf;???
?? unsigned char *map;
?? int frame;
?? int framestat[2];
}vd;


3.Video4linux支持的數(shù)據(jù)結(jié)構(gòu)及其用途
(1) video_capability 包含設(shè)備的基本信息(設(shè)備名稱、支持的最大最小分辨率、信號源信息等),包含的分量:
?name[32]?? //設(shè)備名稱
?maxwidth ,maxheight,minwidth,minheight
?Channels //信號源個數(shù)
?type??? //是否能capture,彩色還是黑白,是否能裁剪等等。值如VID_TYPE_CAPTURE等
?
(2)video_picture 設(shè)備采集的圖象的各種屬性
?brightness 0~65535
?hue
?colour
?contrast
?whiteness
?depth // 24
?palette //VIDEO_PALETTE_RGB24

(3)video_channel???????? 關(guān)于各個信號源的屬性
??? Channel //信號源的編號
??? name
??? tuners
??? Type???? VIDEO_TYPE_TV | IDEO_TYPE_CAMERA
??? Norm制式

(4)video_window //包含關(guān)于capture area的信息
??? xx windows 中的坐標(biāo).
??? y???? x windows 中的坐標(biāo).
??? width??? The width of the image capture.
??? height?? The height of the image capture.
??? chromakey A host order RGB32 value for the chroma key.
??? flags????? Additional capture flags.
??? clips????? A list of clipping rectangles. (Set only)
??? clipcount??? The number of clipping rectangles. (Set only)
(5)video_mbuf?? //利用mmap進(jìn)行映射的幀的信息
????? size //每幀大小
????? Frames //最多支持的幀數(shù)
????? Offsets //每幀相對基址的偏移
(6)video_buffer?? 最底層對buffer的描述
????? void *baseBase physical address of the buffer
????? int heightHeight of the frame buffer
????? int widthWidth of the frame buffer
????? int depthDepth of the frame buffer
????? int bytesperlineNumber of bytes of memory between the start of two adjacent lines
?? 實際顯示的部分一般比它描述的部分小
(7)video_mmap //用于mmap

4.關(guān)鍵步驟介紹
(1)打開視頻:
Open(”/dev/video0”,vdàfd);
關(guān)閉視頻設(shè)備用close(”/dev/video0”,vdàfd);
(2)讀video_capability 中信息
ioctl(vd->fd, VIDIOCGCAP, &(vd->capability))
成功后可讀取vd->capability各分量 eg.
(3)讀video_picture中信息
ioctl(vd->fd, VIDIOCGPICT, &(vd->picture));
(4)改變video_picture中分量的值 (可以不做的)
先為分量賦新值,再調(diào)用VIDIOCSPICT
Eg.
?vd->picture.colour = 65535;
?if(ioctl(vd->fd, VIDIOCSPICT, &(vd->picture)) < 0)
?{
?perror("VIDIOCSPICT");
?return -1;
?}
(5)初始化channel (可以不做的)
?必須先做得到vd->capability中的信息
?for (i = 0; i < vd->capability.channels; i++)
??? {
?????? vd->channel[i].channel = i;
?????? if (ioctl(vd->fd, VIDIOCGCHAN, &(vd->channel[i])) < 0)
? {
????????? perror("v4l_get_channel:");
????????? return -1;
????????? }
??? }

重點:截取圖象的兩種方法
1,用mmap(內(nèi)存映射)方式截取視頻
?mmap( )系統(tǒng)調(diào)用使得進(jìn)程之間通過映射同一個普通文件實現(xiàn)共享內(nèi)存。普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以向訪問普通內(nèi)存一樣對文件進(jìn)行訪問,不必再調(diào)用read(),write()等操作。
?兩個不同進(jìn)程A、B共享內(nèi)存的意思是,同一塊物理內(nèi)存被映射到進(jìn)程A、B各自的進(jìn)程地址空間。進(jìn)程A可以即時看到進(jìn)程B對共享內(nèi)存中數(shù)據(jù)的更新,反之亦然
?采用共享內(nèi)存通信的一個顯而易見的好處是效率高,因為進(jìn)程可以直接讀寫內(nèi)存,而不需要任何數(shù)據(jù)的拷貝
(1)設(shè)置picture的屬性
(2) 初始化video_mbuf,以得到所映射的buffer的信息
ioctl(vd->fd, VIDIOCGMBUF, &(vd->mbuf))
(3)可以修改video_mmap和幀狀態(tài)的當(dāng)前設(shè)置
???? Eg.???? vd->mmap.format = VIDEO_PALETTE_RGB24
?????????????? vd->framestat[0] = vd->framestat[1] = 0; vd->frame = 0;
(4)將mmap與video_mbuf綁定
?void* mmap ( void * addr , size_t len , int prot , int flags , int fd , off_t offset )
?len //映射到調(diào)用進(jìn)程地址空間的字節(jié)數(shù),它從被映射文件開頭offset個字節(jié)開始算起
?Prot //指定共享內(nèi)存的訪問權(quán)限 PROT_READ(可讀), PROT_WRITE (可寫), PROT_EXEC (可執(zhí)行)
?flags // MAP_SHARED?? MAP_PRIVATE中必選一個 // MAP_ FIXED不推薦使用addr //共內(nèi)存享的起始地址,一般設(shè)0,表示由系統(tǒng)分配
?Mmap( ) 返回值是系統(tǒng)實際分配的起始地址
?if((vd->map = (unsigned char*)mmap(0, vd->mbuf.size, PROT_READ|PROT_WRITE, MAP_SHARED, vd->fd, 0)) < 0)
?{
?perror("v4l_mmap mmap:");
?return -1;
?}
(5)Mmap方式下真正做視頻截取的 VIDIOCMCAPTURE
ioctl(vd->fd, VIDIOCMCAPTURE, &(vd->mmap)) ;
?若調(diào)用成功,開始一幀的截取,是非阻塞的,
?是否截取完畢留給VIDIOCSYNC來判斷
(6)調(diào)用VIDIOCSYNC等待一幀截取結(jié)束
?if(ioctl(vd->fd, VIDIOCSYNC, &frame) < 0)
?{
?perror("v4l_sync:VIDIOCSYNC");
?return -1;
?}
若成功,表明一幀截取已完成。可以開始做下一次 VIDIOCMCAPTURE
?frame是當(dāng)前截取的幀的序號。

****關(guān)于雙緩沖:
?video_bmuf bmuf.frames = 2;
?一幀被處理時可以采集另一幀
?int frame; //當(dāng)前采集的是哪一幀
?int framestat[2]; //幀的狀態(tài) 沒開始采集|等待采集結(jié)束
?幀的地址由vd->map + vd->mbuf.offsets[vd->frame]得到
?采集工作結(jié)束后調(diào)用munmap取消綁定
?munmap(vd->map, vd->mbuf.size)

2,視頻截取的第二種方法:直接讀設(shè)備
關(guān)于緩沖大小,圖象等的屬性須由使用者事先設(shè)置
?調(diào)用read();
?int read (要訪問的文件描述符;指向要讀寫的信息的指針;應(yīng)該讀寫的字符數(shù));
?返回值為實際讀寫的字符數(shù)
?int len ;
?unsigned char *vd->map= (unsigned char *) malloc(vdàcapability.maxwidth*vdàcapability.maxheight );
?len = read(vdàfd,vdà vd->map,
??????????????????? vdàcapability.maxwidth*vdàcapability.maxheight*3 );

一.什么是video4linux
Video4linux2(簡稱V4L2),是linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動。在Linux中,視頻設(shè)備是設(shè)備文件,可以像訪問普通文件一樣對其進(jìn)行讀寫,攝像頭在/dev/video0下。

二、一般操作流程(視頻設(shè)備):
1. 打開設(shè)備文件。 int fd=open(”/dev/video0″,O_RDWR);
2. 取得設(shè)備的capability,看看設(shè)備具有什么功能,比如是否具有視頻輸入,或者音頻輸入輸出等。
VIDIOC_QUERYCAP,struct v4l2_capability
3. 選擇視頻輸入,一個視頻設(shè)備可以有多個視頻輸入。
VIDIOC_S_INPUT,struct v4l2_input
4. 設(shè)置視頻的制式和幀格式,制式包括PAL,NTSC,幀的格式個包括寬度和高度等。

VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format
5.
向驅(qū)動申請幀緩沖,一般不超過5個。struct v4l2_requestbuffers
6. 將申請到的幀緩沖映射到用戶空間,這樣就可以直接操作采集到的幀了,而不必去復(fù)制。
mmap
7. 將申請到的幀緩沖全部入隊列,以便存放采集到的數(shù)據(jù)
.VIDIOC_QBUF,struct v4l2_buffer
8. 開始視頻的采集。
VIDIOC_STREAMON
9. 出隊列以取得已采集數(shù)據(jù)的幀緩沖,取得原始采集數(shù)據(jù)。
VIDIOC_DQBUF
10. 將緩沖重新入隊列尾,這樣可以循環(huán)采集。
VIDIOC_QBUF
11. 停止視頻的采集。
VIDIOC_STREAMOFF
12. 關(guān)閉視頻設(shè)備。
close(fd);
三、常用的結(jié)構(gòu)體(參見/usr/include/linux/videodev2.h):

struct v4l2_requestbuffers reqbufs;//向驅(qū)動申請幀緩沖的請求,里面包含申請的個數(shù)
struct v4l2_capability cap;//這個設(shè)備的功能,比如是否是視頻輸入設(shè)備
struct v4l2_input input; //視頻輸入
struct v4l2_standard std;//視頻的制式,比如PAL,NTSC
struct v4l2_format fmt;//幀的格式,比如寬度,高度等

struct v4l2_buffer buf;//代表驅(qū)動中的一幀
v4l2_std_id stdid;//視頻制式,例如:V4L2_STD_PAL_B
struct v4l2_queryctrl query;//查詢的控制

struct v4l2_control control;//具體控制的值

下面具體說明開發(fā)流程(網(wǎng)上找的啦,也在學(xué)習(xí)么)

打開視頻設(shè)備

在V4L2中,視頻設(shè)備被看做一個文件。使用open函數(shù)打開這個設(shè)備:

//用非阻塞模式打開攝像頭設(shè)備

intcameraFd;

cameraFd= open(“/dev/video0″,O_RDWR | O_NONBLOCK, 0);

//如果用阻塞模式打開攝像頭設(shè)備,上述代碼變?yōu)?#xff1a;

//cameraFd = open(”/dev/video0″, O_RDWR, 0);

關(guān)于阻塞模式和非阻塞模式

應(yīng)用程序能夠使用阻塞模式或非阻塞模式打開視頻設(shè)備,如果使用非阻塞模式調(diào)用視頻設(shè)備,即使尚未捕獲到信息,驅(qū)動依舊會把緩存(DQBUFF)里的東西返回給應(yīng)用程序。

設(shè)定屬性及采集方式

打開視頻設(shè)備后,可以設(shè)置該視頻設(shè)備的屬性,例如裁剪、縮放等。這一步是可選的。在Linux編程中,一般使用ioctl函數(shù)來對設(shè)備的I/O通道進(jìn)行管理:

extern intioctl (int __fd,unsigned long int __request, …)__THROW;

__fd:設(shè)備的ID,例如剛才用open函數(shù)打開視頻通道后返回的cameraFd;

__request:具體的命令標(biāo)志符。

在進(jìn)行V4L2開發(fā)中,一般會用到以下的命令標(biāo)志符:

  • VIDIOC_REQBUFS:分配內(nèi)存
  • VIDIOC_QUERYBUF:把VIDIOC_REQBUFS中分配的數(shù)據(jù)緩存轉(zhuǎn)換成物理地址
  • VIDIOC_QUERYCAP:查詢驅(qū)動功能
  • VIDIOC_ENUM_FMT:獲取當(dāng)前驅(qū)動支持的視頻格式
  • VIDIOC_S_FMT:設(shè)置當(dāng)前驅(qū)動的頻捕獲格式
  • VIDIOC_G_FMT:讀取當(dāng)前驅(qū)動的頻捕獲格式
  • VIDIOC_TRY_FMT:驗證當(dāng)前驅(qū)動的顯示格式
  • VIDIOC_CROPCAP:查詢驅(qū)動的修剪能力
  • VIDIOC_S_CROP:設(shè)置視頻信號的邊框
  • VIDIOC_G_CROP:讀取視頻信號的邊框
  • VIDIOC_QBUF:把數(shù)據(jù)從緩存中讀取出來
  • VIDIOC_DQBUF:把數(shù)據(jù)放回緩存隊列
  • VIDIOC_STREAMON:開始視頻顯示函數(shù)
  • VIDIOC_STREAMOFF:結(jié)束視頻顯示函數(shù)
  • VIDIOC_QUERYSTD:檢查當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn),例如PAL或NTSC。
  • 這些IO調(diào)用,有些是必須的,有些是可選擇的。

    檢查當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn)

    在亞洲,一般使用PAL(720X576)制式的攝像頭,而歐洲一般使用NTSC(720X480),使用VIDIOC_QUERYSTD來檢測:

    v4l2_std_id std;

    do{

    ret= ioctl(fd,VIDIOC_QUERYSTD, &std);

    } while (ret == -1 && errno == EAGAIN);

    switch(std) {

    caseV4L2_STD_NTSC:

    //……

    caseV4L2_STD_PAL:

    //……

    }

    設(shè)置視頻捕獲格式

    當(dāng)檢測完視頻設(shè)備支持的標(biāo)準(zhǔn)后,還需要設(shè)定視頻捕獲格式:

    structv4l2_format??? fmt;

    memset( &fmt, 0, sizeof(fmt) );

    fmt.type= V4L2_BUF_TYPE_VIDEO_CAPTURE;

    fmt.fmt.pix.width= 720;

    fmt.fmt.pix.height= 576;

    fmt.fmt.pix.pixelformat= V4L2_PIX_FMT_YUYV;

    fmt.fmt.pix.field= V4L2_FIELD_INTERLACED;

    if(ioctl(fd,VIDIOC_S_FMT, &fmt) == -1) {

    return-1;

    }

    v4l2_format結(jié)構(gòu)體定義如下:

    structv4l2_format

    {

    enumv4l2_buf_type type;??? // 數(shù)據(jù)流類型,必須永遠(yuǎn)是//V4L2_BUF_TYPE_VIDEO_CAPTURE

    union

    {

    structv4l2_pix_format??? pix;

    structv4l2_window??????? win;

    structv4l2_vbi_format??? vbi;

    __u8??? raw_data[200];

    } fmt;

    };

    structv4l2_pix_format

    {

    __u32?????????????????? width;????????// 寬,必須是16的倍數(shù)

    __u32??????????????? ??? height;???????// 高,必須是16的倍數(shù)

    __u32?????????????????? pixelformat;??// 視頻數(shù)據(jù)存儲類型,例如是//YUV4:2:2還是RGB

    enumv4l2_field???????? field;

    __u32?????????????????? bytesperline;

    __u32?????????????????? sizeimage;

    enumv4l2_colorspace??? colorspace;

    __u32?????????????????? priv;

    };

    ?

    前言:目前正在忙于ARM平臺的Linux應(yīng)用程序的開發(fā)(其實是剛剛起步學(xué)習(xí)啦)。底層的東西不用考慮了,開發(fā)板子提供了NAND Bootloader,和Linux 2.6的源碼,而且都編譯好了。自己編譯的bootloader可以用,但是Linux編譯后,文件很大,暫且就用人家編譯的系統(tǒng),先專心寫應(yīng)用程序 吧。。

    正文:要做的任務(wù)是,把一塊板子上的攝像頭采集的圖像和聲卡采集的聲音(貌似很啰嗦哈)通過TCP/IP協(xié)議傳輸?shù)搅硪粔K板子上。第一步,先把視頻獲取并且在本地LCD上顯示。看了板子提供的文檔,視頻傳輸需要用V4L2的API。

    一.什么是video4linux
    Video4linux2(簡稱V4L2),是linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動。在Linux中,視頻設(shè)備是設(shè)備文件,可以像訪問普通文件一樣對其進(jìn)行讀寫,攝像頭在/dev/video0下。

    二、一般操作流程(視頻設(shè)備):
    1. 打開設(shè)備文件。 int fd=open(”/dev/video0″,O_RDWR);
    2. 取得設(shè)備的capability,看看設(shè)備具有什么功能,比如是否具有視頻輸入,或者音頻輸入輸出等。
    VIDIOC_QUERYCAP,struct v4l2_capability
    3. 選擇視頻輸入,一個視頻設(shè)備可以有多個視頻輸入。
    VIDIOC_S_INPUT,struct v4l2_input
    4. 設(shè)置視頻的制式和幀格式,制式包括PAL,NTSC,幀的格式個包括寬度和高度等。

    VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format
    5.
    向驅(qū)動申請幀緩沖,一般不超過5個。struct v4l2_requestbuffers
    6. 將申請到的幀緩沖映射到用戶空間,這樣就可以直接操作采集到的幀了,而不必去復(fù)制。
    mmap
    7. 將申請到的幀緩沖全部入隊列,以便存放采集到的數(shù)據(jù)
    .VIDIOC_QBUF,struct v4l2_buffer
    8. 開始視頻的采集。
    VIDIOC_STREAMON
    9. 出隊列以取得已采集數(shù)據(jù)的幀緩沖,取得原始采集數(shù)據(jù)。
    VIDIOC_DQBUF
    10. 將緩沖重新入隊列尾,這樣可以循環(huán)采集。
    VIDIOC_QBUF
    11. 停止視頻的采集。
    VIDIOC_STREAMOFF
    12. 關(guān)閉視頻設(shè)備。
    close(fd);

    三、常用的結(jié)構(gòu)體(參見/usr/include/linux/videodev2.h):

    struct v4l2_requestbuffers reqbufs;? //向驅(qū)動申請幀緩沖的請求,里面包含申請的個數(shù)
    struct v4l2_capability cap;???????????????? //這個設(shè)備的功能,比如是否是視頻輸入設(shè)備
    struct v4l2_input input;????????????????????? //視頻輸入
    struct v4l2_standard std;?????????????????? //視頻的制式,比如PAL,NTSC
    struct v4l2_format fmt;????????????????????? //幀的格式,比如寬度,高度等

    struct v4l2_buffer buf;?????????????????????? //代表驅(qū)動中的一幀
    v4l2_std_id stdid;?????????????????????????????? //視頻制式,例如:V4L2_STD_PAL_B
    struct v4l2_queryctrl query;??????????? //查詢的控制

    struct v4l2_control control;???????????? //具體控制的值

    下面具體說明開發(fā)流程(網(wǎng)上找的啦,也在學(xué)習(xí)么)

    ?

    ?

    打開視頻設(shè)備

    在V4L2中,視頻設(shè)備被看做一個文件。使用open函數(shù)打開這個設(shè)備:

    // 用非阻塞模式打開攝像頭設(shè)備

    int cameraFd;

    cameraFd = open(“/dev/video0″, O_RDWR | O_NONBLOCK, 0);

    // 如果用阻塞模式打開攝像頭設(shè)備,上述代碼變?yōu)?#xff1a;

    //cameraFd = open(”/dev/video0″, O_RDWR, 0);

    關(guān)于阻塞模式和非阻塞模式

    應(yīng)用程序能夠使用阻塞模式或非阻塞模式打開視頻設(shè)備,如果使用非阻塞模式調(diào)用視頻設(shè)備,即使尚未捕獲到信息,驅(qū)動依舊會把緩存(DQBUFF)里的東西返回給應(yīng)用程序。

    設(shè)定屬性及采集方式

    打開視頻設(shè)備后,可以設(shè)置該視頻設(shè)備的屬性,例如裁剪、縮放等。這一步是可選的。在Linux編程中,一般使用ioctl函數(shù)來對設(shè)備的I/O通道進(jìn)行管理:

    extern int ioctl (int __fd, unsigned long int __request, …) __THROW;

    __fd:設(shè)備的ID,例如剛才用open函數(shù)打開視頻通道后返回的cameraFd;

    __request:具體的命令標(biāo)志符。

    在進(jìn)行V4L2開發(fā)中,一般會用到以下的命令標(biāo)志符:

  • VIDIOC_REQBUFS分配內(nèi)存
  • VIDIOC_QUERYBUF把VIDIOC_REQBUFS中分配的數(shù)據(jù)緩存轉(zhuǎn)換成物理地址
  • VIDIOC_QUERYCAP查詢驅(qū)動功能
  • VIDIOC_ENUM_FMT獲取當(dāng)前驅(qū)動支持的視頻格式
  • VIDIOC_S_FMT設(shè)置當(dāng)前驅(qū)動的頻捕獲格式
  • VIDIOC_G_FMT讀取當(dāng)前驅(qū)動的頻捕獲格式
  • VIDIOC_TRY_FMT驗證當(dāng)前驅(qū)動的顯示格式
  • VIDIOC_CROPCAP查詢驅(qū)動的修剪能力
  • VIDIOC_S_CROP設(shè)置視頻信號的邊框
  • VIDIOC_G_CROP讀取視頻信號的邊框
  • VIDIOC_QBUF把數(shù)據(jù)從緩存中讀取出來
  • VIDIOC_DQBUF把數(shù)據(jù)放回緩存隊列
  • VIDIOC_STREAMON開始視頻顯示函數(shù)
  • VIDIOC_STREAMOFF結(jié)束視頻顯示函數(shù)
  • VIDIOC_QUERYSTD檢查當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn),例如PAL或NTSC
  • 這些IO調(diào)用,有些是必須的,有些是可選擇的。

    檢查當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn)

    在亞洲,一般使用PAL(720X576)制式的攝像頭,而歐洲一般使用NTSC(720X480)使用VIDIOC_QUERYSTD來檢測

    v4l2_std_id std;

    do {

    ret = ioctl(fd, VIDIOC_QUERYSTD, &std);

    } while (ret == -1 && errno == EAGAIN);

    switch (std) {

    case V4L2_STD_NTSC:

    //……

    case V4L2_STD_PAL:

    //……

    }

    設(shè)置視頻捕獲格式

    當(dāng)檢測完視頻設(shè)備支持的標(biāo)準(zhǔn)后,還需要設(shè)定視頻捕獲格式:

    struct v4l2_format??? fmt;

    memset ( &fmt, 0, sizeof(fmt) );

    fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

    fmt.fmt.pix.width = 720;

    fmt.fmt.pix.height = 576;

    fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;

    fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;

    if (ioctl(fd, VIDIOC_S_FMT, &fmt) == -1) {

    return -1;

    }

    v4l2_format結(jié)構(gòu)體定義如下:

    struct v4l2_format

    {

    enum v4l2_buf_type type;??? // 數(shù)據(jù)流類型,必須永遠(yuǎn)是//V4L2_BUF_TYPE_VIDEO_CAPTURE

    union

    {

    struct v4l2_pix_format??? pix;

    struct v4l2_window??????? win;

    struct v4l2_vbi_format??? vbi;

    __u8??? raw_data[200];

    } fmt;

    };

    struct v4l2_pix_format

    {

    __u32?????????????????? width;???????? // 寬,必須是16的倍數(shù)

    __u32??????????????? ??? height;??????? // 高,必須是16的倍數(shù)

    __u32?????????????????? pixelformat;?? // 視頻數(shù)據(jù)存儲類型,例如是//YUV4:2:2還是RGB

    enum v4l2_field???????? field;

    __u32?????????????????? bytesperline;

    __u32?????????????????? sizeimage;

    enum v4l2_colorspace??? colorspace;

    __u32?????????????????? priv;

    };

    分配內(nèi)存

    接下來可以為視頻捕獲分配內(nèi)存:

    struct v4l2_requestbuffers req;

    if (ioctl(fd, VIDIOC_REQBUFS, &req) == -1) {

    return -1;

    }

    v4l2_requestbuffers定義如下:

    struct v4l2_requestbuffers

    {

    __u32?????????????? count; // 緩存數(shù)量,也就是說在緩存隊列里保持多少張照片

    enum v4l2_buf_type type;?? // 數(shù)據(jù)流類型,必須永遠(yuǎn)是V4L2_BUF_TYPE_VIDEO_CAPTURE

    enum v4l2_memory??? memory; // V4L2_MEMORY_MMAP 或 V4L2_MEMORY_USERPTR

    __u32?????????????? reserved[2];

    };

    獲取并記錄緩存的物理空間

    使用VIDIOC_REQBUFS,我們獲取了req.count個緩存,下一步通過調(diào)用VIDIOC_QUERYBUF命令來獲取這些緩存的地址,然后使用mmap函數(shù)轉(zhuǎn)換成應(yīng)用程序中的絕對地址,最后把這段緩存放入緩存隊列:

    ?

    ?

    typedef struct VideoBuffer {

    void *start;

    size_t length;

    } VideoBuffer;


    VideoBuffer*????????? buffers = calloc( req.count, sizeof(*buffers) );

    //這里的 buffers可以理解為一個結(jié)構(gòu)體數(shù)組,用來存放視頻幀,一共req.count個


    struct v4l2_buffer??? buf;

    //這里的buf,只有一個,它相當(dāng)于內(nèi)核與用戶空間傳遞數(shù)據(jù)的一個中介,會被循環(huán)利用:取出、放入、取出、放入……


    for (numBufs = 0; numBufs < req.count; numBufs++) {

    memset( &buf, 0, sizeof(buf) );

    buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;

    buf.memory = V4L2_MEMORY_MMAP;

    buf.index = numBufs;? //這里要標(biāo)記索引

    // 讀取緩存,buf取出(循環(huán)利用)

    if (ioctl(fd, VIDIOC_QUERYBUF, &buf) == -1) {

    return -1;

    }

    buffers[numBufs].length = buf.length;

    // 轉(zhuǎn)換成相對地址

    buffers[numBufs].start = mmap(NULL, buf.length,

    PROT_READ | PROT_WRITE,

    MAP_SHARED,

    fd,

    buf.m.offset);


    if (buffers[numBufs].start == MAP_FAILED) {

    return -1;

    }


    // 放入緩存隊列,buf放入(循環(huán)利用)

    if (ioctl(fd, VIDIOC_QBUF, &buf) == -1) {

    return -1;

    }

    }

    關(guān)于視頻采集方式

    操作系統(tǒng)一般把系統(tǒng)使用的內(nèi)存劃分成用戶空間和內(nèi)核空間,分別由應(yīng)用程序管理和操作系統(tǒng)管理。應(yīng)用程序可以直接訪問內(nèi)存的地址,而內(nèi)核空間存放的是 供內(nèi)核訪問的代碼和數(shù)據(jù),用戶不能直接訪問。v4l2捕獲的數(shù)據(jù),最初是存放在內(nèi)核空間的,這意味著用戶不能直接訪問該段內(nèi)存,必須通過某些手段來轉(zhuǎn)換地 址。

    一共有三種視頻采集方式:使用read、write方式;內(nèi)存映射方式和用戶指針模式。

    read、write方式:在用戶空間和內(nèi)核空間不斷拷貝數(shù)據(jù),占用了大量用戶內(nèi)存空間,效率不高。

    內(nèi)存映射方式:把設(shè)備里的內(nèi)存映射到應(yīng)用程序中的內(nèi)存控件,直接處理設(shè)備內(nèi)存,這是一種有效的方式。上面的mmap函數(shù)就是使用這種方式。

    用戶指針模式:內(nèi)存片段由應(yīng)用程序自己分配。這點需要在v4l2_requestbuffers里將memory字段設(shè)置成V4L2_MEMORY_USERPTR。

    處理采集數(shù)據(jù)

    V4L2有一個數(shù)據(jù)緩存,存放req.count數(shù)量的緩存數(shù)據(jù)數(shù)據(jù)緩存采用FIFO的方式,當(dāng)應(yīng)用程序調(diào)用緩存數(shù)據(jù)時,緩存隊列將最先采集到的 視頻數(shù)據(jù)緩存送出,并重新采集一張視頻數(shù)據(jù)。這個過程需要用到兩個ioctl命令,VIDIOC_DQBUF和VIDIOC_QBUF:

    struct v4l2_buffer buf;

    memset(&buf,0,sizeof(buf));

    buf.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;

    buf.memory=V4L2_MEMORY_MMAP;

    buf.index=0;

    //讀取緩存

    if (ioctl(cameraFd, VIDIOC_DQBUF, &buf) == -1)

    {

    return -1;

    }

    //…………視頻處理算法

    //重新放入緩存隊列

    if (ioctl(cameraFd, VIDIOC_QBUF, &buf) == -1) {

    return -1;

    }

    關(guān)閉視頻設(shè)備

    使用close函數(shù)關(guān)閉一個視頻設(shè)備

    close(cameraFd)

    還需要使用munmap方法。

    ?

    附錄:標(biāo)準(zhǔn)的V4l2的API

    http://v4l.videotechnology.com/dwg/v4l2.pdf

    ?

    總結(jié)

    以上是生活随笔為你收集整理的video4linux简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    国产 在线 日韩 | 超碰个人在线 | 国产99一区视频免费 | 黄色福利网站 | 最新色站 | 最近中文字幕在线播放 | 久久国色夜色精品国产 | 国产成人av网站 | 麻豆视频免费在线播放 | 91在线小视频 | 奇米影视777四色米奇影院 | 国产丝袜网站 | 一区二区三区四区影院 | 激情综合五月天 | 17婷婷久久www | 国产一级性生活 | 国产美女在线观看 | 亚洲精品玖玖玖av在线看 | 狠狠躁天天躁 | 婷婷色网| 成年一级片 | 日日干av | 日韩在线播放av | 黄色www免费| 欧美日韩在线精品一区二区 | 亚洲精品欧洲精品 | 欧美成人手机版 | 欧美人牲| 色视频网页 | 五月婷婷色播 | 最近中文字幕免费视频 | 日韩免费福利 | 韩日成人av | 亚洲综合小说电影qvod | 国产色在线视频 | 最近中文字幕高清字幕免费mv | 日韩精品中文字幕久久臀 | 国产美腿白丝袜足在线av | 中文字幕精品一区二区精品 | 五月天六月丁香 | 丝袜精品视频 | 国产麻豆精品一区 | 亚洲高清精品在线 | 亚洲无在线 | 久久超级碰 | 久久首页| 成人网页在线免费观看 | 亚洲精品66 | 国产精品1区2区3区 久久免费视频7 | 国产精品2019 | 激情一区二区三区欧美 | 亚洲精品一区二区在线观看 | 日韩欧美精品在线视频 | 国产手机在线观看 | 久久久久久久亚洲精品 | 伊人干综合 | 色av色av色av | 综合网中文字幕 | 国内精品久久久久久久影视麻豆 | 在线91网 | 国产96在线 | 91在线视频在线观看 | 狠狠干五月天 | 91专区在线观看 | 美女网站一区 | 国产精品美女久久久网av | 91免费看黄色 | 香蕉蜜桃视频 | 一区二区三区在线免费观看 | 最新日韩在线观看视频 | 久久亚洲综合色 | 六月丁香婷婷网 | 久久爱综合 | 国产精品久久久久四虎 | 免费a网址 | 亚洲少妇激情 | 免费成人在线观看视频 | 中文成人字幕 | 国产资源| 日韩中文字幕亚洲一区二区va在线 | 久久免费公开视频 | 国产专区视频 | 日韩免费视频 | 黄色app网站在线观看 | 黄av资源 | 日韩精品视频一二三 | 国产男女免费完整视频 | 极品久久久久久久 | 日韩免费播放 | 免费aa大片 | 欧美成年黄网站色视频 | 国产精品 中文字幕 亚洲 欧美 | 国产精品网址在线观看 | 麻豆一区在线观看 | 国产一区二区在线播放视频 | 国产一区二区在线看 | 6080yy精品一区二区三区 | 久久精品美女视频网站 | 国产成人一区二区精品非洲 | 久艹视频免费观看 | av网站免费看 | 久久人人添人人爽添人人88v | 丁香婷婷在线 | 亚洲久草在线视频 | 久久国语露脸国产精品电影 | 高清久久久久久 | 久精品视频在线观看 | 国产视频 久久久 | 玖草在线观看 | 国产精品福利无圣光在线一区 | 人人搞人人干 | 亚洲 欧洲 国产 日本 综合 | 欧美少妇影院 | 天天操天天摸天天干 | 天天综合五月天 | 亚洲免费国产视频 | 91在线视频网址 | 欧美一二区在线 | 99久久99久久精品国产片 | 国产91精品一区二区 | 日韩亚洲欧美中文字幕 | 国产一级精品绿帽视频 | 91在线看黄 | 精品久久精品 | 丁香导航| 在线中文字母电影观看 | 中文字幕av免费在线观看 | 亚洲精品久久久蜜桃 | 久久国产剧场电影 | 国产99久久久欧美黑人 | 在线观看播放av | 综合久久婷婷 | 国产精品一区二区免费 | 久久综合影视 | 欧美精品久久久久久久久久丰满 | 99久免费精品视频在线观看 | av看片网| 国产精品福利在线播放 | 婷婷激情小说网 | www.色在线| 99精品视频免费看 | 国产高清视频在线观看 | 国产原创在线观看 | 国产精久久久久久妇女av | 久久avav| 久久av在线播放 | 精品亚洲欧美一区 | 黄网站色视频免费观看 | 成人av免费播放 | 九九免费精品视频在线观看 | 亚洲国产精品日韩 | 欧美91精品国产自产 | 天天天干天天射天天天操 | 精品在线播放视频 | 久久精品96 | 一区在线播放 | 毛片区 | 一区二区 精品 | 日本婷婷色 | 91九色在线 | 97超碰总站| 久久久www成人免费精品张筱雨 | 久久精品这里精品 | 国产福利91精品张津瑜 | 在线播放国产精品 | 午夜精品福利一区二区 | 国产精品久久久久999 | 免费观看国产精品视频 | 亚洲一级片免费观看 | 中文字幕视频一区 | 欧美在线aaa | 国产成人三级在线 | 在线视频电影 | 日韩免费一区二区 | 精品自拍sae8—视频 | 欧美精品二区 | 免费久久网站 | 欧美激情综合五月色丁香 | 99久久精品免费看国产 | 婷婷久久一区二区三区 | 96亚洲精品久久 | 超碰在线人人草 | 成人黄色电影在线观看 | 久久久久激情电影 | 色狠狠操 | 久草视频在 | 久久久久日本精品一区二区三区 | 亚洲电影在线看 | 亚洲一二视频 | 五月婷婷天堂 | 色视频国产直接看 | 亚洲欧洲国产精品 | 狠狠88综合久久久久综合网 | 免费看国产精品 | 激情伊人五月天 | 99在线国产 | 国产伦理久久精品久久久久_ | 国产视频在线观看一区 | 中文字幕在线播放第一页 | 国产专区第一页 | 色之综合网 | 国产精品久久久久久高潮 | 久久综合免费 | 成人精品久久 | 久久久久久久毛片 | 欧美男女爱爱视频 | 国产一级片免费观看 | www.五月婷婷| 黄免费在线观看 | 久久夜av| 91视频成人免费 | 日韩欧美一区二区在线 | 91桃色视频 | 在线91播放| 成人黄色国产 | 亚洲午夜久久久影院 | 国产高清视频在线 | 国产成人黄色 | 激情综合网天天干 | 在线视频第一页 | 三三级黄色片之日韩 | 午夜狠狠干 | 亚洲专区在线播放 | 亚洲高清色综合 | 99这里精品 | 日本女人的性生活视频 | 日韩在线观看中文字幕 | 五月天欧美精品 | 成全在线视频免费观看 | 一区二区三区四区五区在线 | 亚洲精品动漫久久久久 | 天天干天天色2020 | 欧美一级片免费在线观看 | 成年人黄色大片在线 | 欧美一级免费在线 | 日韩动漫免费观看高清完整版在线观看 | 日韩专区中文字幕 | 在线播放一区二区三区 | 超碰在线公开免费 | 国产精品久久久一区二区 | 少妇bbbb| 激情丁香月 | 日韩久久一区二区 | 免费手机黄色网址 | 激情网五月婷婷 | 欧美日韩激情视频8区 | 999亚洲国产996395 | 亚洲国产无 | 啪嗒啪嗒免费观看完整版 | 特黄特色特刺激视频免费播放 | 久久精品视频观看 | 欧美日韩大片在线观看 | 久久亚洲精品国产亚洲老地址 | 亚洲激情一区二区三区 | 国产精品男女啪啪 | 亚洲91视频 | 99久久久久久国产精品 | 91精品国产自产在线观看永久 | 欧美一区,二区 | 欧美日韩视频一区二区三区 | 天天操夜 | 亚洲精品在线二区 | 国产精品久久久久9999 | 麻豆视频免费在线播放 | 制服丝袜在线 | av一级一片 | 国产小视频在线免费观看 | 国偷自产中文字幕亚洲手机在线 | 亚洲一区视频免费观看 | 午夜少妇一区二区三区 | 欧美一二区视频 | 91在线视频观看免费 | 九九免费在线看完整版 | 日b视频在线观看网址 | 亚洲视频999 | 亚洲精品一区二区久 | 91chinesexxx| 精品国产乱码久久久久 | 日日夜夜狠狠 | av中文字幕在线看 | 日韩久久精品 | 99精品免费久久久久久久久日本 | 亚洲国产成人在线播放 | 中文在线www | 国产精品久久久久久久7电影 | 日韩在线视频免费播放 | 99久久精品免费看国产麻豆 | 欧美精品免费在线观看 | av网站地址 | 精品一区 在线 | 久久综合99 | 91精品网站在线观看 | 女人18精品一区二区三区 | 99re视频在线观看 | 四虎在线免费视频 | 超碰国产人人 | 丝袜美女视频网站 | 国产小视频免费观看 | 99r在线| 亚洲精品女人久久久 | 亚洲精品伦理在线 | 亚洲精品视频播放 | 最新在线你懂的 | 国产精品视频 | 午夜在线观看一区 | 久久人人爽人人片 | 日韩在线网 | 亚洲人人射 | 精品嫩模福利一区二区蜜臀 | 国模精品在线 | 久久免费精品一区二区三区 | 国产特黄色片 | 久久久久久久免费看 | 国产最新视频在线 | 亚洲最大成人免费网站 | 三级av在线播放 | 丁香激情五月婷婷 | 色射爱 | 天天草天天干天天射 | 97视频免费在线看 | 久久成人午夜 | 在线观看香蕉视频 | 亚洲精品午夜一区人人爽 | 天天干,天天射,天天操,天天摸 | 中文字幕精品一区久久久久 | 久草精品免费 | 国产一级片毛片 | 日本不卡一区二区三区在线观看 | 久久在线视频在线 | 成人在线免费视频观看 | 欧美日韩3p | 久久久久区 | 3d黄动漫免费看 | 18久久久久久 | 色在线免费 | 日日夜夜爱 | 天天操人| 亚洲最大激情中文字幕 | 一区二区激情 | 91精品麻豆| 国产精品亚州 | 欧美日韩精品在线观看视频 | 成人在线视频免费 | 天天射天天操天天色 | 亚洲1区在线 | 亚洲激情视频在线观看 | 天天爽夜夜爽精品视频婷婷 | 免费男女羞羞的视频网站中文字幕 | 国产黄色电影 | 香蕉免费在线 | 免费视频资源 | 久久精品日本啪啪涩涩 | 在线免费观看一区二区三区 | 天天激情综合 | 97视频入口免费观看 | 国产不卡免费 | 操操色| 在线影院 国内精品 | 蜜桃视频日韩 | 免费精品久久久 | 久久不射影院 | 国产999精品久久久久久绿帽 | 在线视频 区| 91麻豆精品国产91久久久更新时间 | 91av在线免费观看 | 亚洲黄色精品 | 中文字幕第一页在线视频 | 亚洲综合成人婷婷小说 | 久久色网站 | 国产亚洲视频在线 | 在线观看国产高清视频 | 欧美激情在线看 | 亚洲另类交 | 最新色站| 亚洲三级黄| 国产亚洲精品日韩在线tv黄 | 国产黄色片一级 | 久久婷婷精品视频 | 夜夜躁天天躁很躁波 | 亚洲天堂毛片 | 免费毛片aaaaaa | 香蕉在线视频播放网站 | 久久国产热 | 午夜久久久久久久 | 天天综合网久久 | 69亚洲视频 | 91视频 - v11av | 亚洲精品av中文字幕在线在线 | 中文视频在线看 | 色av男人的天堂免费在线 | 久久 地址 | 去看片| 成人亚洲网 | 国产综合福利在线 | 欧美一二三视频 | 亚洲一区二区高潮无套美女 | 亚洲国产丝袜在线观看 | 成人福利在线 | 九色精品免费永久在线 | 99视频99 | 欧美一二三区在线观看 | 国产在线观看中文字幕 | 91视频在线观看大全 | 国产做a爱一级久久 | 六月丁香伊人 | 特级毛片在线 | 日韩电影在线观看一区 | 亚洲婷婷在线 | 少妇啪啪av入口 | 激情偷乱人伦小说视频在线观看 | 美女黄视频免费看 | 亚洲欧美激情精品一区二区 | 97精品国产91久久久久久 | 欧美日韩一区二区在线观看 | 福利在线看片 | 欧美亚洲成人免费 | 国产二区电影 | 久久97精品 | 碰超在线97人人 | 99国产视频 | 99爱视频 | 丰满少妇对白在线偷拍 | 亚洲一区日韩精品 | 91精品成人久久 | 天天天天天天干 | 亚洲美女免费精品视频在线观看 | 色视频在线免费 | 国产午夜在线观看视频 | 婷婷丁香花五月天 | 久久99国产精品免费网站 | 国产日韩欧美自拍 | 色婷婷综合视频在线观看 | 色视频网站免费观看 | 波多野结衣精品视频 | 在线观看黄色国产 | 久久久精品 一区二区三区 国产99视频在线观看 | 亚洲在线免费视频 | 三上悠亚一区二区在线观看 | 午夜在线国产 | 欧美日韩免费一区二区 | 一区二区三区视频 | 国产精品久久久久9999吃药 | 日日碰狠狠躁久久躁综合网 | 最近av在线| 最近高清中文字幕 | 网站免费黄 | 国产91在线 | 美洲 | 91九色最新 | 久久国产99| 91精品啪在线观看国产线免费 | 日韩av在线一区二区 | 91在线视频 | 日韩一区二区三区高清免费看看 | 六月婷操 | 亚洲三级国产 | 国产一区二区三区 在线 | 中文字幕在线观看第三页 | www.狠狠操.com | 日韩在线视频网站 | 亚洲天天 | 97视频资源 | 久草在线欧美 | 国产第一页精品 | 久久五月婷婷综合 | 在线观看免费黄色 | 精品久久久久久久久久久院品网 | 久久久久免费精品视频 | 国产黄色大片免费看 | 日韩视频中文字幕在线观看 | jizz18欧美18 | 国内精品久久久久久久影视麻豆 | 欧美另类人妖 | 91免费高清观看 | 视频一区二区三区视频 | av在线播放亚洲 | 日韩美女高潮 | 日日日操操 | 精品国产一区二区在线 | 亚洲永久字幕 | 久草精品视频 | 免费精品视频在线观看 | 久久成人国产精品 | 免费看污黄网站 | 91成人观看| 国产精品k频道 | 国产二级视频 | 又黄又刺激的视频 | 精品久久久久久国产91 | 亚洲综合最新在线 | 美女视频免费一区二区 | 国产精品黄 | 成人国产一区 | 国产亚洲免费的视频看 | 亚洲一区美女视频在线观看免费 | 91麻豆.com | 手机av资源 | 亚洲综合色激情五月 | 久久色在线播放 | 69视频在线播放 | 欧美日韩亚洲在线观看 | 精品国产1区 | av黄色国产 | 亚洲综合欧美日韩狠狠色 | 久久99热精品这里久久精品 | 五月情婷婷 | 欧美天堂影院 | 亚洲国产97在线精品一区 | 亚洲视频免费在线观看 | 在线观看免费观看在线91 | 91精品久久久久久综合五月天 | 国产99久久久国产 | 国产一区影院 | 99色在线观看 | 国产一区福利在线 | www.香蕉视频 | 在线观看播放av | 香蕉视频免费在线播放 | 日日干夜夜操视频 | 日本少妇高清做爰视频 | 久操中文字幕在线观看 | 天天干天天做 | 日韩中文在线播放 | 日本久久中文字幕 | 久久精品视频在线观看 | 国产精品久久一区二区三区, | 日本精品久久久久中文字幕5 | 麻豆传媒电影在线观看 | 成人久久视频 | 亚洲国产精品99久久久久久久久 | 久草在线资源观看 | 成人 亚洲 欧美 | 日本九九视频 | 日韩欧美一区二区在线观看 | 国产精品99久久久久久久久久久久 | 九九久久免费视频 | 成人小视频免费在线观看 | 亚洲天堂在线观看完整版 | 欧美精品久久久久久久久久白贞 | 国产视频日本 | 亚洲播放一区 | 亚洲精品大片www | 91在线看黄| 97网| 日本久久久久久 | 在线观看av网站 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 在线国产日韩 | av导航福利| 国产九九精品视频 | 九九九九热精品免费视频点播观看 | 国产不卡免费视频 | 韩国一区视频 | 992tv在线成人免费观看 | 色五丁香 | 在线一级片 | 成人黄色片免费看 | 国产高清视频在线免费观看 | 久久黄页 | 98久久| 亚洲天天综合网 | 黄色一区二区在线观看 | 国产精品美女久久久久久久网站 | 亚洲天天干 | av色综合网 | 久草视频在线资源 | 91精品视频在线免费观看 | 在线观看国产中文字幕 | 国产精品久久久久久久午夜片 | 婷婷在线看 | 免费观看一级一片 | 天天操天天添天天吹 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 97av影院 | av在线短片 | www.婷婷色 | 亚洲综合色婷婷 | 亚洲国产999 | 久久福利剧场 | 亚洲精品一区二区三区在线观看 | 天天鲁一鲁摸一摸爽一爽 | 少妇高潮冒白浆 | www久久国产 | 国产精品毛片一区视频 | 亚洲视频一区二区三区在线观看 | 久久精品人人做人人综合老师 | 久草观看视频 | 免费看国产精品 | 国产传媒一区在线 | 久久精品女人毛片国产 | 中文字幕 国产专区 | 91亚色视频在线观看 | 99精品视频中文字幕 | 1000部18岁以下禁看视频 | 亚洲 欧美 变态 国产 另类 | 久久久香蕉视频 | 久久激五月天综合精品 | 日本久久成人中文字幕电影 | 在线观看播放av | 国产精品久久在线观看 | 婷婷中文字幕在线观看 | 久久五月婷婷综合 | 夜夜躁狠狠躁 | 日韩成人免费电影 | 欧美日韩视频在线观看一区二区 | 人人添人人 | 欧美日韩精品二区第二页 | 亚洲热久久 | 久久精品国产免费看久久精品 | 男女精品久久 | 91在线精品一区二区 | 91免费观看视频网站 | 亚洲四虎在线 | 久久99亚洲网美利坚合众国 | 国产你懂的在线 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 97视频在线观看视频免费视频 | 久久久精品免费看 | 波多野结衣在线播放视频 | av不卡中文字幕 | 欧美日韩亚洲国产一区 | 久久成人18免费网站 | 99爱国产精品 | 国产综合在线视频 | 中文字幕在线专区 | 国产精品一区二区果冻传媒 | 亚洲色图美腿丝袜 | 最近高清中文在线字幕在线观看 | 97人人精品 | 国际av在线 | 狠狠操狠狠干天天操 | 超碰在线97免费 | 久久免费视频1 | 四虎影视av| 美女黄频在线观看 | 国产黄色av影视 | 亚洲成人网在线 | 亚洲黄色一级大片 | 亚洲精品乱码久久久久 | 九色最新网址 | 色九九视频 | 色资源网在线观看 | 日韩视频免费观看高清完整版在线 | 天天激情天天干 | 五月开心激情 | 在线观看日本韩国电影 | 久久网页 | 色综合久久久久综合 | 一级黄色电影网站 | 国产又粗又猛又黄又爽的视频 | 亚洲人成在线电影 | 日韩一二区在线观看 | 一区二区三区高清在线观看 | www视频免费在线观看 | 精品久久1 | 亚洲伦理一区二区 | 激情网站网址 | 亚洲精品成人在线 | 亚洲第一区精品 | 国产精品一区二区白浆 | 91精品国产自产老师啪 | 中文字幕在线字幕中文 | 色av资源网 | 国产真实精品久久二三区 | 欧美在线free | 亚洲不卡在线 | 99热这里只有精品免费 | 日韩综合色 | 国产精品亚 | 精品一区电影 | 日韩丝袜在线观看 | 人人草在线视频 | 免费看国产曰批40分钟 | 超碰在线天天 | 中文字幕在线免费观看视频 | 国产精品久久久久av免费 | 亚洲最大av在线播放 | av在线看片 | 天天干,天天射,天天操,天天摸 | a级国产乱理论片在线观看 伊人宗合网 | 日韩a在线 | 综合铜03| 成人影视免费看 | 日韩理论在线播放 | 国产操在线 | 国产精品一区一区三区 | 精品主播网红福利资源观看 | 伊人天堂av | 一级黄色免费 | 中文字幕在线观看视频一区 | 99久久精品久久久久久清纯 | 91福利视频网站 | 狠狠狠色丁香综合久久天下网 | 亚洲国产精品人久久电影 | 伊人导航 | 韩国精品在线观看 | 日日夜夜噜 | 欧美午夜一区二区福利视频 | 日韩在线观看第一页 | 人人干干人人 | 成人免费中文字幕 | 91大神一区二区三区 | 天天色天天干天天色 | av色综合网 | 麻豆视传媒官网免费观看 | 国产成人一级电影 | 去看片| 婷婷免费视频 | 日本美女xx | 久久亚洲人| 国产精品成人久久 | 91禁看片 | 久久免费精品视频 | 玖玖爱免费视频 | 国内免费久久久久久久久久久 | 国产亚洲精品成人av久久影院 | 最近中文字幕国语免费高清6 | 亚色视频在线观看 | 欧美最猛性xxxx | 日本久久久久久久久久久 | 久久久精品久久日韩一区综合 | 天天摸天天干天天操天天射 | 99在线热播精品免费99热 | 久久精品99国产精品日本 | 97av在线| 五月婷婷,六月丁香 | 激情五月色播五月 | 久在线观看视频 | 亚洲视频精品在线 | 狠狠色综合网站久久久久久久 | 99国产精品久久久久久久久久 | 免费av福利 | 亚洲特级毛片 | 欧美久久久久久久久久久久 | 久久久精品国产一区二区三区 | 亚洲综合网站在线观看 | 日韩免费成人 | 日韩欧美视频在线观看免费 | 久久精品免费看 | 97在线资源 | 欧美精品久久久久a | 国产精品久久久久永久免费看 | 在线免费观看视频你懂的 | 一区二区三区韩国免费中文网站 | 欧美另类交在线观看 | 欧美日韩伦理一区 | 丁香六月久久综合狠狠色 | 日韩欧美视频一区二区三区 | 欧美性爽爽 | 日批网站在线观看 | 黄网站免费久久 | 日韩免费在线观看视频 | 国产精品6 | 国内精品美女在线观看 | 国产日韩精品一区二区三区在线 | 欧美aa级| 日韩午夜视频在线观看 | 色综合激情久久 | 成人免费在线电影 | 天天曰夜夜操 | 99久久激情 | 免费在线观看av片 | 国产精品h在线观看 | 免费av视屏 | av成人免费在线观看 | 久久精品香蕉视频 | 色婷婷亚洲综合 | 天天射色综合 | 色婷婷国产在线 | 成人午夜免费剧场 | 久久永久免费视频 | 精品 一区 在线 | 久草视频资源 | 欧美日韩一区二区久久 | 婷婷丁香六月 | 亚洲 欧洲av| 麻豆影音先锋 | 最近能播放的中文字幕 | 在线导航av | 在线观看成年人 | 久久久久这里只有精品 | 国产一区福利在线 | 国产精品日韩在线观看 | 免费视频在线观看网站 | 国产区高清在线 | 亚洲成人在线免费 | 在线成人免费av | 91九色蝌蚪国产 | 亚洲资源一区 | 久久精品网址 | 四月婷婷在线观看 | 91精品在线播放 | 久久久免费 | 亚洲综合精品在线 | 日韩欧美一级二级 | 99色免费 | 免费av观看网站 | 欧美日韩啪啪 | 伊人婷婷在线 | 亚洲午夜精品久久久久久久久久久久 | 日韩欧美区 | 日本性生活免费看 | 国内丰满少妇猛烈精品播 | 天天爱天天色 | www91在线| 欧美精品久久久久久久久久久 | 日本精品一区二区在线观看 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 日韩精品在线一区 | 成人午夜影院 | 亚洲国产精品视频 | 黄色av免费| 欧美性生活大片 | 中文字幕av日韩 | 亚洲亚洲精品在线观看 | 一级黄色免费 | 欧美激情精品久久久久久 | 日韩91精品| 91精品国产乱码久久 | 国产精品中文久久久久久久 | 免费观看一区 | 色www精品视频在线观看 | 久久久国产精品久久久 | 色妞色视频一区二区三区四区 | 国产精品资源在线 | 国产一二三四在线视频 | 中文字幕一区二区三区乱码在线 | 日韩av中文字幕在线免费观看 | 超级碰碰碰免费视频 | 精品久久久久久综合 | 99精品国产免费久久 | 亚洲专区欧美专区 | 色噜噜在线观看 | 亚洲无在线 | 欧美日韩精 | 欧美日韩免费一区 | 亚洲日韩欧美一区二区在线 | 国产精品毛片一区视频播不卡 | 黄色一级在线免费观看 | 色com| 91视频在线观看下载 | 日韩av一区二区三区 | 激情五月婷婷 | 婷婷网址 | 99精品乱码国产在线观看 | 美女av免费 | 99久久成人| 九九国产精品视频 | 国产精品高清av | 国内精品福利视频 | 国产无遮挡又黄又爽在线观看 | 在线国产中文 | 91私密视频 | 午夜精品一区二区三区免费 | 在线观看免费福利 | 精品欧美小视频在线观看 | 国产精品一区二区在线观看 | 欧美激情综合色 | 欧美日韩精品在线 | 欧美地下肉体性派对 | 亚洲精品国久久99热 | 亚洲自拍自偷 | 欧美日韩中字 | 国产最新91 | 中文字幕韩在线第一页 | 成人在线黄色 | 六月激情丁香 | 国产高清精品在线 | 99色免费视频| 99久久精品国产一区 | 日韩网站免费观看 | 国产成人精品不卡 | 久久精久久精 | 成人网色 | 天天色天天色 | www.久久爱.cn | 91在线中文 | 中文字幕在线观看视频网站 | 国产色视频一区二区三区qq号 | 香蕉影院在线播放 | 99精品久久99久久久久 | 久久久噜噜噜久久久 | 久久人人爽人人片 | 视频在线观看日韩 | 18性欧美xxxⅹ性满足 | 日韩一三区 | 欧美日韩一区二区在线观看 | 日本精品久久久一区二区三区 | 日韩欧美一区二区在线播放 | 激情动态| 国产一区二区综合 | av在线免费网 | 久精品视频免费观看2 | 久久视频国产精品免费视频在线 | 婷婷亚洲综合五月天小说 | 精品久久久久久久久久久院品网 | 欧美日韩精品免费观看视频 | 成人97视频 | 最新国产精品亚洲 | 91人人澡人人爽 | 13日本xxxxxⅹxxx20 | 中文字幕制服丝袜av久久 | 91传媒在线观看 | 人人插人人插 | 干干干操操操 | 中文字幕免费中文 | 在线观看色视频 | 欧美成人影音 | 亚洲最新视频在线播放 | 国产精品成人在线 | 丁香资源影视免费观看 | 欧美一级视频一区 | 人人艹视频 | 天天操操| 婷婷久久国产 | 一区二区高清在线 | 日本精品在线看 | 草免费视频 | 91大神精品视频在线观看 | 成人黄色电影视频 | 九九热久久免费视频 | 亚洲天堂va | 99热99热| 一区二区三区在线影院 | 国产香蕉97碰碰碰视频在线观看 | 日韩中文字幕在线不卡 | 中国一级片在线观看 | 天天操天天摸天天爽 | 高潮久久久 | 久艹视频在线观看 | 狠狠色丁香婷婷综合欧美 | 中文字幕制服丝袜av久久 | 久热久草在线 | 亚洲精品乱码久久久久久9色 | 69久久99精品久久久久婷婷 | 亚洲天堂精品 | 婷婷久操 | 在线视频专区 | 国产一区在线观看免费 | 国产高清视频免费在线观看 | 超碰人人做 | 免费av网址大全 | 久久久久久久久久久高潮一区二区 | 免费视频97| 中文在线√天堂 | 日韩欧美视频一区二区三区 | www.久草.com| 亚洲视频在线视频 | 中文字幕888 | 一区二区久久久久 | 夜夜夜夜操 | 久草在线看片 | 免费在线一区二区三区 | 日韩一二三区不卡 | 亚洲精品456在线播放第一页 | 免费三级av | 人人看97| 在线观看免费高清视频大全追剧 | 亚洲第一成网站 | 91在线影视 | 久久这里| 精品国产三级 | 黄色app网站在线观看 | 中文字幕免费在线 | 国产在线视频导航 | 国产免费三级在线观看 | 国产精品毛片一区二区三区 | 98涩涩国产露脸精品国产网 | 中国一级片在线 | 久久综合毛片 | 91在线中字 | 人人插人人看 | 日韩视频a | 国模精品一区二区三区 | 国产精品99久久久久久武松影视 | 国产一级淫片免费看 | 久草在线免| 91免费观看视频网站 | 中文字幕日韩无 | 亚洲天天综合 | 91大神免费视频 | 午夜精品视频一区 | 成人免费精品 | 99久久精品免费看国产一区二区三区 | 欧美日韩在线第一页 | 亚洲精品午夜一区人人爽 | 欧美最爽乱淫视频播放 | 日韩激情一二三区 | 福利视频精品 | 免费在线观看中文字幕 | 中文字幕国产一区 | 亚洲久久视频 | 不卡的av电影在线观看 | 精品久久久久亚洲 | 欧美9999| 国产色综合天天综合网 | 99久国产| 色综合久久五月天 | 成人免费91|