一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于飛凌嵌入式OK113i網(wǎng)頁視頻監(jiān)控項(xiàng)目

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2024-01-08 22:57 ? 次閱讀

1.開發(fā)板簡介

OK113i-S開發(fā)板采用核心板+底板的結(jié)構(gòu)形式,基于全志T113-i處理器設(shè)計(jì)開發(fā),處理器為ARMCortex-A7, RISCV, HiFi4 DSP多核異構(gòu)架構(gòu),主頻1.2GHz,核心板有兩種規(guī)格,分別是512MB DDR3L內(nèi)存加8GB eMMC版本和256MB DDR3L內(nèi)存加256MB SPI Nand版本。OK113i-S開發(fā)板將核心板的功能接口資源豐富、提供多種外設(shè)接口,如網(wǎng)卡、CPU內(nèi)置音頻Codec、ADC、TF Card、LVDS、RGB、WIFI、4G等功能接口。

2.硬件開發(fā)平臺(tái)

開發(fā)平臺(tái):Linux-5.4

編譯器:arm-linux-gnueabi-gcc 7.3.1

USB攝像頭

OK113i開發(fā)板

實(shí)現(xiàn)功能:通過OK113i飛凌嵌入式開發(fā)板,采用USB設(shè)備頭,通過V4L2框架實(shí)現(xiàn)視頻圖像采集。創(chuàng)建攝像頭圖像采集線程,搭建HTTP服務(wù)器,固定端口號(hào)為8080,建立HTTP長連接,實(shí)現(xiàn)網(wǎng)頁視頻監(jiān)控。

wKgaomWcCPiAadZLADnMcr04vyA576.pngwKgaomWcCW-AQ7roAFOLMXM97TI381.png

3.功能實(shí)現(xiàn)

1.移植交叉編譯器arm-linux-gnueabi-gcc。

2.移植矢量字庫freetye。

3.初始化攝像頭,通過V4L2驅(qū)動(dòng)框架實(shí)現(xiàn)攝像頭編程;

4.創(chuàng)建攝像頭采集線程,搭建HTTP服務(wù)器,多線程處理http客戶端數(shù)據(jù)請求,建立http長連接;

5.采用互斥鎖+條件變量方式實(shí)現(xiàn)多線程間資源保護(hù),將攝像頭采集圖像實(shí)時(shí)上傳至網(wǎng)頁端;

4.矢量字庫編譯與移植

FreeType 庫是一個(gè)完全免費(fèi)(開源)的、高質(zhì)量的且可移植的字體引擎,它提供統(tǒng)一的接口來訪問多種字體格式文件,可以非常方便我們開發(fā)字體顯示相關(guān)的程序功能。它支持單色位圖、反走樣位圖的渲染。 FreeType 庫是高度模塊化的程序庫,雖然它是使用 ANSI C開發(fā),但是采用面向?qū)ο蟮乃枷?,因此?FreeType 的用戶可以靈活地對它進(jìn)行裁剪。關(guān)于freetype 的詳細(xì)信息可以參考 freetype 的官方網(wǎng)站:https://www.freetype.org/來獲取更多相關(guān)的信息。

wKgZomWcCp2AFpH8AAwzInNqcm4185.png

[wbyq@wbyq src_pack]$ tar xvf /mnt/hgfs/ubuntu/software_pack/freetype-2.4.10.tar.bz2
[wbyq@wbyq src_pack]$ cd freetype-2.4.10/
[wbyq@wbyq freetype-2.4.10]$ ./configure --prefix=$PWD/_install --host=arm-linux
[wbyq@wbyq freetype-2.4.10]$ make && make install

5.V4L2攝像頭編程

V4L2 是 Video for linux2 的簡稱,為 linux 中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng)。在 Linux 中,視頻設(shè)備是設(shè)備文件,可以像訪問普通文件一樣對其進(jìn)行讀寫,攝像頭在/dev/video*下,如果只有一個(gè)視頻設(shè)備,通常為/dev/video0。V4L2 是針對 uvc 免驅(qū) usb 設(shè)備的編程框架,主要用于采集 usb 攝像頭等,編程模式如下:

wKgaomWcC2OAHt_-AAKSjArmBCM337.png

攝像頭初始化示例如下:

/*

攝像頭初始化

返回值:成功返回?cái)z像頭描述符,失敗返回負(fù)數(shù)

*/

int Video_Init(struct CAMERA *camera)

{

    int video_fd;

    int i=0;

	/*1.打開設(shè)備節(jié)點(diǎn)*/

	video_fd=open(VIDEO_DEV,O_RDWR);

	if(video_fd==-1)return -1;

	/*2.設(shè)置攝像頭格式*/

	struct v4l2_format format;

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

	format.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;//視頻捕獲格式

	format.fmt.pix.width=800;

	format.fmt.pix.height=480;

	format.fmt.pix.pixelformat=V4L2_PIX_FMT_YUYV;//圖像數(shù)據(jù)格式y(tǒng)uyv

	if(ioctl(video_fd,VIDIOC_S_FMT,&format))return -2;

	printf("圖像尺寸:%d * %dn",format.fmt.pix.width,format.fmt.pix.height);

	camera->image_w=format.fmt.pix.width;

	camera->image_h=format.fmt.pix.height;

	/*3.向內(nèi)核請求緩沖區(qū)*/

	struct v4l2_requestbuffers reqbuf;

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

	reqbuf.count=4;/*緩沖區(qū)個(gè)數(shù)*/

	reqbuf.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;//視頻捕獲格式

	reqbuf.memory=V4L2_MEMORY_MMAP;/*內(nèi)存映射*/

	if(ioctl(video_fd,VIDIOC_REQBUFS,&reqbuf))return -3;

	printf("緩沖區(qū)個(gè)數(shù):%dn",reqbuf.count);

	/*4.將緩沖區(qū)映射到進(jìn)程空間*/

	struct v4l2_buffer quebuff;

	for(i=0;imamp_buff[i]=mmap(NULL,quebuff.length,PROT_READ|PROT_WRITE,MAP_SHARED,video_fd,quebuff.m.offset);

		printf("buff[%d]=%pn",i,camera->mamp_buff[i]);

		camera->mmap_size=quebuff.length;

	}

	/*5.將緩沖區(qū)添加到采集隊(duì)列*/

	for(i=0;i

6.搭建HTTP服務(wù)器

HTTP 協(xié)議是 Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(wǎng)(WWW:World WideWeb )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。

HTTP 是基于客戶端/服務(wù)端(C/S)的架構(gòu)模型,通過一個(gè)可靠的鏈接來交換信息,是一個(gè)無狀態(tài)的請求/響應(yīng)協(xié)議。一個(gè) HTTP"客戶端"是一個(gè)應(yīng)用程序(Web 瀏覽器或其他任何客戶端),通過連接到服務(wù)器達(dá)到向服務(wù)器發(fā)送一個(gè)或多個(gè) HTTP 的請求的目的。一個(gè) HTTP"服務(wù)器"同樣也是一個(gè)應(yīng)用程序通過接收客戶端的請求并向客戶端發(fā)送 HTTP 響應(yīng)數(shù)據(jù)。HTTP 使用統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifiers, URI)來傳輸數(shù)據(jù)和建立連接。

HTTP服務(wù)器創(chuàng)建示例:

/*1.創(chuàng)建網(wǎng)絡(luò)套接字*/

    sockfd=socket(AF_INET,SOCK_STREAM,0);

    if(sockfd==-1)

	 {

		 printf("創(chuàng)建socket套接字失敗n");

		 return 0;

	 }

     /*允許綁定已使用的端口號(hào)*/

	 int on = 1;

	 setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));

	 /*2.綁定端口號(hào)*/

	 struct sockaddr_in addr=

	 {

		.sin_family=AF_INET,//IPV4

		.sin_port=htons(HTTP_SERVER_PORT),//端口號(hào)

		.sin_addr.s_addr=INADDR_ANY,//本地所有IP

	 };

	 if(bind(sockfd,(struct sockaddr*)&addr,sizeof(addr)))

	 {

		 printf("綁定端口號(hào)失敗n");

		 return 0;

	 }

	 /*設(shè)置監(jiān)聽數(shù)量*/

	 listen(sockfd,100);

	 /*等待客戶端連接*/

	 struct sockaddr_in c_addr;

	 socklen_t addrlen=sizeof(c_addr);

	 int c_fd;

	 int *p;

	 while(1)

	 {

		 c_fd=accept(sockfd, (struct sockaddr *)&c_addr,&addrlen);

		 if(c_fd==-1)continue;

		 printf("%d 客戶端連接成功%s:%dn",c_fd,inet_ntoa(c_addr.sin_addr),ntohs(c_addr.sin_port));

		 p=malloc(sizeof(int));

		 *p=c_fd;

		 pthread_create(&pthid,NULL,pth_work,p);

		 pthread_detach(pthid);//設(shè)置分離屬性

	 }   

7.網(wǎng)頁視頻監(jiān)控處理

創(chuàng)建攝像頭采集線程,將采集的圖像進(jìn)行JPG格式編碼,挺添加時(shí)間水印信息。攝像頭處理線程如下:

/*攝像頭處理函數(shù)*/

void *pth_camera_work(void *arg)

{

    LCD_Init();//LCD初始化

    video_fd=Video_Init(&camera);//攝像初始化

    if(video_fd

8.運(yùn)行效果

wKgaomWcDRiAQ9bcAEe1tnzB810217.png

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5125

    文章

    19438

    瀏覽量

    313051
  • 視頻監(jiān)控
    +關(guān)注

    關(guān)注

    17

    文章

    1719

    瀏覽量

    65662
  • 飛凌
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    16360
  • V4L2
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    3995
收藏 人收藏

    評論

    相關(guān)推薦

    技術(shù)帖 | 飛嵌入式T113-i開發(fā)板的休眠及喚醒操作

    嵌入式OK113i-S開發(fā)板支持兩種休眠方式:freeze和mem。本篇內(nèi)容小編會(huì)為大家介紹如何讓飛嵌入式
    的頭像 發(fā)表于 12-29 08:02 ?1510次閱讀
    技術(shù)帖 | 飛<b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>T<b class='flag-5'>113-i</b>開發(fā)板的休眠及喚醒操作

    【飛 OK113i-C 全志T113-i開發(fā)板】視頻編解碼測試

    前言本文測試OK113i-S開發(fā)板-視頻編解碼的功能OK113i-S開發(fā)板是支持視頻的編解碼的,下面是官方介紹的編解碼功能T113-i 是一
    發(fā)表于 12-25 09:41

    【飛OK113i-S開發(fā)板試用】基于飛嵌入式OK113i網(wǎng)頁視頻監(jiān)控項(xiàng)目

    :arm-linux-gnueabi-gcc 7.3.1 USB攝像頭 OK113i開發(fā)板實(shí)現(xiàn)功能:通過OK113i嵌入式開發(fā)板,采用USB設(shè)備頭,通過V4L2框架實(shí)現(xiàn)
    發(fā)表于 01-09 11:31

    雙核Cortex-A7 CPU、64位玄鐵C906 RISC-V CPU,OK113i-S開發(fā)板開發(fā)體驗(yàn)

    OK113i網(wǎng)頁視頻監(jiān)控項(xiàng)目 實(shí)現(xiàn)功能: 通過OK113i
    發(fā)表于 01-16 10:07

    嵌入式全志T113-i開發(fā)板的休眠及喚醒操作

    嵌入式OK113i-S開發(fā)板支持兩種休眠方式:freeze和mem。這兩種方式可以通過/sys/power/state文件節(jié)點(diǎn)進(jìn)行操作,用戶可以通過在該文件節(jié)點(diǎn)寫入freeze或mem來觸發(fā)相應(yīng)
    發(fā)表于 01-17 09:29

    OK210申請】基于飛嵌入式OK210的多媒體播放系統(tǒng)

    微博,http://weibo.com/2840996695/profile?topnav=1&amp;wvr=6項(xiàng)目描述:項(xiàng)目名稱:基于飛
    發(fā)表于 07-06 17:37

    OK210申請】基于飛嵌入式智能家居系統(tǒng)飛嵌入式OK210開發(fā)板申請

    3.組員:三名,王亞玲,魏玉娟,張向前4.研發(fā)的方向?yàn)橹悄芗揖?b class='flag-5'>嵌入式方向5.本人自小就有對電子又很濃厚的興趣,在大學(xué)研究過微型空調(diào)的設(shè)計(jì)制作,單片機(jī)系統(tǒng),嵌入式,機(jī)器人等項(xiàng)目項(xiàng)目描述:
    發(fā)表于 07-13 12:03

    【實(shí)戰(zhàn)項(xiàng)目一:嵌入式視頻監(jiān)控系統(tǒng)】【初學(xué)必學(xué)】

    網(wǎng)頁視頻監(jiān)控系統(tǒng)實(shí)戰(zhàn)項(xiàng)目(驅(qū)動(dòng)移植部分一)2.【創(chuàng)科之龍】嵌入式網(wǎng)頁
    發(fā)表于 07-19 18:18

    OK210申請】基于飛嵌入式智能家居系統(tǒng)

    可以用它來開發(fā)小軟件。項(xiàng)目描述:基于飛嵌入式的智能家居,通過對飛的了解,感覺選擇飛
    發(fā)表于 07-25 17:19

    OK210申請】基于arm嵌入式監(jiān)控智能小車的設(shè)計(jì)與實(shí)現(xiàn)

    視頻流的讀取該項(xiàng)目仍在進(jìn)行中真的很希望可以獲得飛ok210的開發(fā)板進(jìn)行arm平臺(tái)的移植和后面項(xiàng)目的實(shí)現(xiàn),以及對飛
    發(fā)表于 08-03 09:40

    分享一個(gè)不錯(cuò)的基于飛嵌入式A40i實(shí)現(xiàn)網(wǎng)約車車載終端方案

    分享一個(gè)不錯(cuò)的基于飛嵌入式A40i實(shí)現(xiàn)網(wǎng)約車車載終端方案
    發(fā)表于 12-27 07:18

    OK113i-C 全志T113-i開發(fā)板初體驗(yàn)

    All available board: 0. ok113i Choice [ok113i]: 0 All available flash: 0. default 1. nor 2. nand
    發(fā)表于 12-14 15:33

    嵌入式T113-i開發(fā)板的調(diào)屏方法,就是這樣簡單

    的配備為客戶提供了更加多樣的選擇。今天小編就與大家分享一下為飛嵌入式OK113i-S開發(fā)板適配LVDS屏幕的過程。
    的頭像 發(fā)表于 01-12 11:50 ?2488次閱讀
    飛<b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>T<b class='flag-5'>113-i</b>開發(fā)板的調(diào)屏方法,就是這樣簡單

    如何在飛嵌入式T113-i開發(fā)板的Buildroot中移植MQTT協(xié)議?

    嵌入式OK113i-S開發(fā)板上市一段時(shí)間以來收獲了很多關(guān)注,也成為了許多客戶項(xiàng)目選型的優(yōu)質(zhì)之選。在實(shí)際的項(xiàng)目開發(fā)中,工程師朋友們可能會(huì)需
    的頭像 發(fā)表于 01-26 08:02 ?682次閱讀
    如何在飛<b class='flag-5'>凌</b><b class='flag-5'>嵌入式</b>T<b class='flag-5'>113-i</b>開發(fā)板的Buildroot中移植MQTT協(xié)議?

    嵌入式T113-i開發(fā)板的調(diào)屏方法

    于飛嵌入式T113-i開發(fā)板的調(diào)屏問題,需要按照以下步驟進(jìn)行操作
    的頭像 發(fā)表于 01-29 16:25 ?1345次閱讀