色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 >
mjpg-streamer源碼分析
時間:2018-08-15作者:華清遠見

mjpg-streamer是一個很好的開源項目,用來做視頻服務器,使用的是v4l2的接口。前面我們說了它的移植過程,但是在某些特定的情況下這個工程不能達到我們的需求,所以我們需要對源碼進行修改,或者直接寫一個自己的視頻服務器。在修改源碼或寫自己的服務器之前我們分析下這個源碼的代碼。

這個代碼里有三個部分是我們需要掌握的內容,第一是v4l2接口,第二個是socket編程,第三個是多線程編程。

一、 v4l2接口說明

這里涉及到我們如何從攝像頭中把數據取出來,首先是封裝一個結構體用來描述攝像頭的一些信息,比如采集圖片的寬高,圖片的格式,等等。

struct vdIn {
                int fd;
                char *videodevice;
                char *status;
                char *pictName;
                struct v4l2_capability cap;
                struct v4l2_format fmt;
                struct v4l2_buffer buf;
                struct v4l2_requestbuffers rb;
                void *mem[NB_BUFFER];
                unsigned char *tmpbuffer;
                unsigned char *framebuffer;
                int isstreaming;
                int grabmethod;
                int width;
                int height;
                int fps;
                int formatIn;
                int formatOut;
                 int framesizeIn;
                int signalquit;
                int toggleAvi;
                int getPict;
                int rawFrameCapture;
                /* raw frame capture */
                unsigned int fileCounter;
                /* raw frame stream capture */
                unsigned int rfsFramesWritten;
                unsigned int rfsBytesWritten;
                /* raw stream capture */
                FILE *captureFile;
                unsigned int framesWritten;
                unsigned int bytesWritten;
                int framecount;
                int recordstart;
                int recordtime;
        };

接著是把這個結構體寫入驅動中,用來初始化攝像頭。這個操作通過ioctl完成,涉及到的命令包括VIDIOC_QUERYCAP、VIDIOC_S_FMT、VIDIOC_S_PARM、VIDIOC_REQBUFS,VIDIOC_QUERYBUF,并通過mmap完成內存的映射。

后我們通過ioct命令完成圖片的讀取,涉及到的命令包括VIDIOC_QBUF和VIDIOC_DQBUF。然后把獲得的數據寫入到文件里就是圖片,通過網絡傳輸出去連續的圖片就是視頻。

二、 socket編程

在這個程序里使用的是tcp套接字,每有一個連接請求就創建一個線程單獨和這個請求通信,這里涉及到的函數包括socket、bind、listen、accept和write。

三、 多線程編程

為了能同時響應多個客戶端的請求,這里使用了多線程編程,為每一個請求建立一個連接,每個連接就是一個線程。這里涉及到的函數包括pthread_create、pthread_detach、pthread_cond_init、pthread_cond_destroy、pthread_mutex_init、pthread_mutex_destroy。

四、 mjpg-streamer工作流程


發表評論

全國咨詢電話:400-611-6270,雙休日及節假日請致電值班手機:15010390966

在線咨詢: 曹老師QQ(3337544669), 徐老師QQ(1462495461), 劉老師 QQ(3108687497)

企業培訓洽談專線:010-82600901,院校合作洽談專線:010-82600350,在線咨詢:QQ(248856300)

Copyright 2004-2018 華清遠見教育科技集團 版權所有 ,京ICP備16055225號,京公海網安備11010802025203號

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 国产69精品久久久| 美女av一区二区三区 | 日本在线精品视频| 91欧美精品成人综合在线观看| 中文字幕精品国产| 日韩a**站在线观看| 亚洲人成五月天| 日本成人在线视频网址| 亚洲美女自拍视频| 韩日欧美一区二区| 亚洲国内精品在线| 性金发美女69hd大尺寸| 日韩久久免费视频| 欧洲成人在线观看| 色阁综合伊人av| 国产日韩欧美在线看| 九九热在线精品视频| 91中文字幕在线| 国内精品国产三级国产在线专| 亚洲欧美日韩国产精品| 2019精品视频| 久久久精品国产一区二区| 国产精品视频xxxx| 欧美午夜精品伦理| 亚洲欧美日韩天堂一区二区| 欧美一级大片在线免费观看| 国产一区二区三区网站| 日本精品免费观看| 久久久国产在线视频| 日韩av中文字幕在线免费观看| 欧美又大粗又爽又黄大片视频| 日韩在线欧美在线国产在线| 91精品国产综合久久男男| 久久久久国产精品免费| 一本大道香蕉久在线播放29| 国产剧情日韩欧美| 欧美一区二区三区…… | 久久精品国产精品亚洲| 97超级碰碰碰久久久| 日韩精品中文字幕在线播放| 久久久久一本一区二区青青蜜月|