<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于飛凌嵌入式OK113i網頁視頻監控項目

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

1.開發板簡介

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

2.硬件開發平臺

開發平臺:Linux-5.4

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

USB攝像頭

OK113i開發板

實現功能:通過OK113i飛凌嵌入式開發板,采用USB設備頭,通過V4L2框架實現視頻圖像采集。創建攝像頭圖像采集線程,搭建HTTP服務器,固定端口號為8080,建立HTTP長連接,實現網頁視頻監控。

wKgaomWcCPiAadZLADnMcr04vyA576.pngwKgaomWcCW-AQ7roAFOLMXM97TI381.png

3.功能實現

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

2.移植矢量字庫freetye。

3.初始化攝像頭,通過V4L2驅動框架實現攝像頭編程;

4.創建攝像頭采集線程,搭建HTTP服務器,多線程處理http客戶端數據請求,建立http長連接;

5.采用互斥鎖+條件變量方式實現多線程間資源保護,將攝像頭采集圖像實時上傳至網頁端;

4.矢量字庫編譯與移植

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

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 中關于視頻設備的內核驅動。在 Linux 中,視頻設備是設備文件,可以像訪問普通文件一樣對其進行讀寫,攝像頭在/dev/video*下,如果只有一個視頻設備,通常為/dev/video0。V4L2 是針對 uvc 免驅 usb 設備的編程框架,主要用于采集 usb 攝像頭等,編程模式如下:

wKgaomWcC2OAHt_-AAKSjArmBCM337.png

攝像頭初始化示例如下:

/*

攝像頭初始化

返回值:成功返回攝像頭描述符,失敗返回負數

*/

int Video_Init(struct CAMERA *camera)

{

    int video_fd;

    int i=0;

	/*1.打開設備節點*/

	video_fd=open(VIDEO_DEV,O_RDWR);

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

	/*2.設置攝像頭格式*/

	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;//圖像數據格式yuyv

	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.向內核請求緩沖區*/

	struct v4l2_requestbuffers reqbuf;

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

	reqbuf.count=4;/*緩沖區個數*/

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

	reqbuf.memory=V4L2_MEMORY_MMAP;/*內存映射*/

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

	printf("緩沖區個數:%dn",reqbuf.count);

	/*4.將緩沖區映射到進程空間*/

	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.將緩沖區添加到采集隊列*/

	for(i=0;i

6.搭建HTTP服務器

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

HTTP 是基于客戶端/服務端(C/S)的架構模型,通過一個可靠的鏈接來交換信息,是一個無狀態的請求/響應協議。一個 HTTP"客戶端"是一個應用程序(Web 瀏覽器或其他任何客戶端),通過連接到服務器達到向服務器發送一個或多個 HTTP 的請求的目的。一個 HTTP"服務器"同樣也是一個應用程序通過接收客戶端的請求并向客戶端發送 HTTP 響應數據。HTTP 使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。

HTTP服務器創建示例:

/*1.創建網絡套接字*/

    sockfd=socket(AF_INET,SOCK_STREAM,0);

    if(sockfd==-1)

	 {

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

		 return 0;

	 }

     /*允許綁定已使用的端口號*/

	 int on = 1;

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

	 /*2.綁定端口號*/

	 struct sockaddr_in addr=

	 {

		.sin_family=AF_INET,//IPV4

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

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

	 };

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

	 {

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

		 return 0;

	 }

	 /*設置監聽數量*/

	 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);//設置分離屬性

	 }   

7.網頁視頻監控處理

創建攝像頭采集線程,將采集的圖像進行JPG格式編碼,挺添加時間水印信息。攝像頭處理線程如下:

/*攝像頭處理函數*/

void *pth_camera_work(void *arg)

{

    LCD_Init();//LCD初始化

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

    if(video_fd

8.運行效果

wKgaomWcDRiAQ9bcAEe1tnzB810217.png

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5001

    文章

    18414

    瀏覽量

    291508
  • 視頻監控
    +關注

    關注

    17

    文章

    1685

    瀏覽量

    64374
  • 飛凌
    +關注

    關注

    0

    文章

    132

    瀏覽量

    15992
  • V4L2
    +關注

    關注

    0

    文章

    17

    瀏覽量

    3842
收藏 人收藏

    評論

    相關推薦

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

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

    【飛OK113i-S開發板試用】基于飛嵌入式OK113i網頁視頻監控項目

    :arm-linux-gnueabi-gcc 7.3.1 USB攝像頭 OK113i開發板實現功能:通過OK113i嵌入式開發板,采用USB設備頭,通過V4L2框架實現
    發表于 01-09 11:31

    雙核Cortex-A7 CPU、64位玄鐵C906 RISC-V CPU,OK113i-S開發板開發體驗

    OK113i網頁視頻監控項目 實現功能: 通過OK113i
    發表于 01-16 10:07

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

    嵌入式OK113i-S開發板支持兩種休眠方式:freeze和mem。這兩種方式可以通過/sys/power/state文件節點進行操作,用戶可以通過在該文件節點寫入freeze或mem來觸發相應
    發表于 01-17 09:29

    于飛嵌入式

    `企業概況保定飛嵌入式技術有限公司是華智集團旗下的一家專注于ARM嵌入式核心控制系統研發、設計和生產的專業板卡制造企業。經過多年發展,公司擁有了業內一流的軟硬件研發團隊,建立了北京和保定兩大研發
    發表于 05-13 17:30

    OK210申請】基于嵌入式Linux的遠程視頻監控系統

    申請理由:貴公司,你好,我是來自福建省一所高校的電子信息工程的學生,我的項目是基于嵌入式Linux的遠程視頻監控系統,但是一直苦于尋找合適的開發板來學習Linux以及開發我的
    發表于 06-28 12:41

    OK210申請】基于飛嵌入式OK210的多媒體播放系統

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

    OK210申請】基于飛嵌入式智能家居系統飛嵌入式OK210開發板申請

    3.組員:三名,王亞玲,魏玉娟,張向前4.研發的方向為智能家居嵌入式方向5.本人自小就有對電子又很濃厚的興趣,在大學研究過微型空調的設計制作,單片機系統,嵌入式,機器人等項目項目描述:
    發表于 07-13 12:03

    OK210申請】嵌入式視頻處理

    申請理由:我是桂林電子科技大學的一名研究生,現在準備進行的研究方向是嵌入式視頻處理,需要用到嵌入式的開發板,打算OK6410和OK210都嘗
    發表于 07-17 18:48

    【實戰項目一:嵌入式視頻監控系統】【初學必學】

    網頁視頻監控系統實戰項目(驅動移植部分一)2.【創科之龍】嵌入式網頁
    發表于 07-19 18:18

    OK210申請】基于飛嵌入式智能家居系統

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

    OK210申請】基于arm嵌入式監控智能小車的設計與實現

    視頻流的讀取該項目仍在進行中真的很希望可以獲得飛ok210的開發板進行arm平臺的移植和后面項目的實現,以及對飛
    發表于 08-03 09:40

    嵌入式視頻監控的相關資料分享

    嵌入式視頻監控目前,嵌入式系統在視頻監控中的應用越來越廣泛。伴隨著網絡的強大功能,
    發表于 11-08 07:10

    分享一個不錯的基于飛嵌入式A40i實現網約車車載終端方案

    分享一個不錯的基于飛嵌入式A40i實現網約車車載終端方案
    發表于 12-27 07:18

    OK113i-C 全志T113-i開發板初體驗

    All available board: 0. ok113i Choice [ok113i]: 0 All available flash: 0. default 1. nor 2. nand
    發表于 12-14 15:33
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>