色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

Linux下基于HTTP網(wǎng)頁視頻監(jiān)控

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-08-31 08:56 ? 次閱讀

Linux下基于HTTP網(wǎng)頁視頻監(jiān)控

1.HTTP簡(jiǎn)介

超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上。它指定了客戶端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。請(qǐng)求和響應(yīng)消息的頭以ASCII形式給出;而消息內(nèi)容則具有一個(gè)類似MIME的格式。這個(gè)簡(jiǎn)單模型是早期Web成功的有功之臣,因?yàn)樗归_發(fā)和部署非常地直截了當(dāng)。
HTTP的發(fā)展是由蒂姆·伯納斯-李于1989年在歐洲核子研究組織(CERN)所發(fā)起。HTTP的標(biāo)準(zhǔn)制定由萬維網(wǎng)協(xié)會(huì)(World Wide Web Consortium,W3C)和互聯(lián)網(wǎng)工程任務(wù)組(Internet Engineering Task Force,IETF)進(jìn)行協(xié)調(diào),最終發(fā)布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定義了HTTP協(xié)議中現(xiàn)今廣泛使用的一個(gè)版本——HTTP 1.1。
HTTP 是一個(gè)基于 TCP/IP 通信協(xié)議來傳遞數(shù)據(jù)( HTML 文件, 圖片文件, 查詢結(jié)果等)。工作于客戶端-服務(wù)端架構(gòu)上,默認(rèn)端口號(hào)為 80,但是你也可以改為 8080或其它端口號(hào)。HTTP協(xié)議永遠(yuǎn)都是客戶端發(fā)起請(qǐng)求,服務(wù)器回送響應(yīng)。

poYBAGMOGAqAbe4DAAJliuWhVAc526.png#pic_center

?HTTP是基于客戶/服務(wù)器模式,且面向連接的。
客戶與服務(wù)器之間的HTTP連接是一種一次性連接,它限制每次連接只處理一個(gè)請(qǐng)求,當(dāng)服務(wù)器返回本次請(qǐng)求的應(yīng)答后便立即關(guān)閉連接,下次請(qǐng)求再重新建立連接。當(dāng)然HTTP也可以設(shè)置為長連接,在HTTP / 1.1中,引入了保持活動(dòng)機(jī)制,其中連接可以重用于多個(gè)請(qǐng)求。這樣的持久性連接可以明顯減少請(qǐng)求延遲,因?yàn)樵诎l(fā)送第一個(gè)請(qǐng)求之后,客戶端不需要重新協(xié)商TCP 3-Way-Handshake連接。

HTTP是一種無狀態(tài)協(xié)議,即服務(wù)器不保留與客戶交易時(shí)的任何狀態(tài)。這就大大減輕了服務(wù)器記憶負(fù)擔(dān),從而保持較快的響應(yīng)速度。但也意味著如果后續(xù)處理需要前面的信息則必須重傳。

2.HTTP報(bào)文格式

HTTP報(bào)文是面向文本的,報(bào)文中的每一個(gè)字段都是一些ASCII碼串,每個(gè)字段的長度是不確定的。

HTTP有兩種報(bào)文:請(qǐng)求報(bào)文和響應(yīng)報(bào)文。

HTTP的請(qǐng)求報(bào)文由四部分組成:請(qǐng)求行(request line)、請(qǐng)求頭部(header)、空行和請(qǐng)求數(shù)據(jù)(request data)

pYYBAGMOGAqAA6trAABD1X2gBK4308.png#pic_center

??HTTP 響應(yīng)也由四個(gè)部分組成,分別是:狀態(tài)行、消息報(bào)頭、空行和響應(yīng)正文。

poYBAGMOGAuAVwodAAIebXO9tLs922.png#pic_center

3.HTTP請(qǐng)求方式

HTTP/1.1協(xié)議中共定義了八種方法(有時(shí)也叫“動(dòng)作”),來表明Request-URL指定的資源不同的操作方式
其中:

HTTP1.0定義了三種請(qǐng)求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五種請(qǐng)求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
4.HTTP狀態(tài)碼

當(dāng)瀏覽者訪問一個(gè)網(wǎng)頁時(shí),瀏覽者的瀏覽器會(huì)向網(wǎng)頁所在服務(wù)器發(fā)出請(qǐng)求。當(dāng)瀏覽器接收并顯示網(wǎng)頁前,此網(wǎng)頁所在的服務(wù)器會(huì)返回一個(gè)包含 HTTP 狀態(tài)碼的信息頭( server header)用以響應(yīng)瀏覽器的請(qǐng)求。

HTTP 狀態(tài)碼的英文為 HTTP Status Code。

下面是常見的 HTTP 狀態(tài)碼:

200 - 請(qǐng)求成功

301 - 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它 URL

404 - 請(qǐng)求的資源(網(wǎng)頁等)不存在

500 - 內(nèi)部服務(wù)器錯(cuò)誤

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

HTTP 協(xié)議底層是 TCP 協(xié)議, HTTP 本身屬于上層協(xié)議, 協(xié)議格式都是以文本格式響應(yīng)。 瀏覽器在訪問 HTTP服務(wù)器時(shí),會(huì)發(fā)送請(qǐng)求報(bào)文, HTTP 服務(wù)器解析請(qǐng)求報(bào)文,根據(jù)解析結(jié)果,給瀏覽器進(jìn)行回應(yīng)。

瀏覽器第一次訪問 HTTP 服務(wù)器時(shí),會(huì)請(qǐng)求空路徑, HTTP 服務(wù)器第一次回發(fā)的報(bào)文數(shù)據(jù)應(yīng)該是 html 文件。瀏覽器收到 html 文件之后,再根據(jù) html 文件描述符的內(nèi)容與服務(wù)器進(jìn)行后續(xù)交互。后續(xù)服務(wù)端需要根據(jù)瀏覽器請(qǐng)求響應(yīng)對(duì)應(yīng)數(shù)據(jù)即可。

5.1 搭建HTTP服務(wù)器響應(yīng)瀏覽器圖片請(qǐng)求

  • html文件

1.bmp
  • http服務(wù)器

??服務(wù)器采用多線程方式處理客戶端請(qǐng)求,http是屬于短連接狀態(tài),每次連接只處理一個(gè)請(qǐng)求,當(dāng)服務(wù)器返回本次請(qǐng)求的應(yīng)答后便立即關(guān)閉連接,下次請(qǐng)求再重新建立連接。

#include 
#include           /* See NOTES */
#include 
#include 
#include  /* superset of previous */
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define HTTP_PORT 8080   //HTTP服務(wù)器端口號(hào)
/*
服務(wù)端響應(yīng)客戶端請(qǐng)求

"HTTP/1.1 200 OK\r\n"
"Content-type:image/jpeg\r\n"
"Content-Length:1234\r\n"
"\r\n"

形參:c_fd  --客戶端套接字
      type  --文件類型
	  file  --要發(fā)送的文件
返回值:0成功,其它失敗
*/
int Http_SendData(int c_fd,const char *type,const char *file)
{
	int fd=open(file,O_RDONLY);//打開文件
	if(fd<0)return -1;//打開文件失敗
	struct stat statbuf;
	fstat(fd,&statbuf);
	if(statbuf.st_size<=0)
	{
		close(fd);
		return -2;
	}
	char buff[1024]={0};
	snprintf(buff,sizeof(buff),"HTTP/1.1 200 OK\r\n"
								"Content-type:%s\r\n"
								"Content-Length:%ld\r\n"
								"\r\n",type,statbuf.st_size);
	if(write(c_fd,buff,strlen(buff))!=strlen(buff))
	{
		close(fd);
		return -3;//發(fā)送數(shù)據(jù)頭失敗
	}
	/*發(fā)送文件內(nèi)容*/
	int size;
	while(1)
	{
		size=read(fd,buff,sizeof(buff));
		if(write(c_fd,buff,size)!=size)break;//發(fā)送失敗
		if(size!=sizeof(buff))break;//發(fā)送完成
	}
	close(fd);
	return 0;
}
/*線程工作函數(shù)*/
void *pth_work(void *arg)
{
	int c_fd=*(int *)arg;
	free(arg);
	char buff[1024]={0};
	int size;
	size=read(c_fd,buff,sizeof(buff)-1);
	if(size<=0)
	{
		close(c_fd);
		pthread_exit(NULL);
	}
	buff[size]='\0';
	printf("buff=%s\n",buff);
	if(strstr(buff,"GET / HTTP/1.1"))//請(qǐng)求網(wǎng)頁文件
	{
		Http_SendData(c_fd,"text/html","./html/image.html");
	}
	else if(strstr(buff,"GET /1.bmp HTTP/1.1"))
	{
		Http_SendData(c_fd,"application/x-bmp","./html/1.bmp");
	}
	else if(strstr(buff,"GET /favicon.ico HTTP/1.1"))
	{
		Http_SendData(c_fd,"image/x-icon","./html/wmp.ico");
	}
	close(c_fd);
	pthread_exit(NULL);
}
int main()
{
	 int sockfd=socket(AF_INET,SOCK_STREAM,0);
	 if(sockfd==-1)
	 {
		 printf("創(chuàng)建網(wǎng)絡(luò)套接字失敗\n");
		 return 0;
	 }
	/*允許綁定已使用的端口號(hào)*/
	int on = 1;
	setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
	/*綁定端口號(hào)*/
	struct sockaddr_in s_addr=
	{
		.sin_family=AF_INET,//IPV4
		.sin_port=htons(HTTP_PORT),
		.sin_addr.s_addr=INADDR_ANY
	};
	if(bind(sockfd,(const struct sockaddr *)&s_addr,sizeof(s_addr)))
	{
		printf("綁定端口號(hào)失敗\n");
		return 0;
	}
	/*設(shè)置監(jiān)聽數(shù)量*/
	listen(sockfd,100);
	/*等待客戶端連接*/
	struct sockaddr_in c_addr;
	socklen_t len=sizeof(c_addr);
	int c_fd;
	pthread_t pthid;
	int *p=NULL;
	while(1)
	{
		c_fd=accept(sockfd,(struct sockaddr *)&c_addr,&len);
		if(c_fd==-1)
		{
			printf("客戶端連接失敗\n");
			continue;
		}
		printf("%d連接成功,%s:%d\n",c_fd,inet_ntoa(c_addr.sin_addr),ntohs(c_addr.sin_port));
		p=malloc(4);
		*p=c_fd;
		pthread_create(&pthid,NULL,pth_work,p);
		pthread_detach(pthid);//設(shè)置為分離屬性
	}
}
pYYBAGMOGAyARmEDAA53cfGwqMI658.png#pic_center

5.2 搭建HTTP服務(wù)器實(shí)現(xiàn)攝像頭網(wǎng)頁監(jiān)控

??要實(shí)現(xiàn)網(wǎng)頁攝像頭監(jiān)控,就是服務(wù)端采集攝像頭數(shù)據(jù),通過一幀一幀圖片流方式響應(yīng)客戶端,因此客戶端和服務(wù)器直接需要建立長連接,保持活動(dòng)機(jī)制。

  • 長連接響應(yīng)格式
//建立長連接格式
	"HTTP/1.0 200 OK\r\n"
	"Server: wbyq\r\n"
	"Content-Type:multipart/x-mixed-replace;boundary=boundarydonotcross\r\n"
	"\r\n"
	"--boundarydonotcross\r\n"
while(1)
{
	//(1)響應(yīng)報(bào)文頭
		"Content-type:image/jpeg\r\n"
		"Content-Length:666\r\n"
		"\r\n"
		write(“向?yàn)g覽器發(fā)送報(bào)文頭數(shù)據(jù)”);
	//(2)發(fā)送主體數(shù)據(jù)
		write(“向?yàn)g覽器發(fā)送報(bào)圖像主體數(shù)據(jù)”);
	//(3)發(fā)送間隔字符串
		"\r\n"
		"--boundarydonotcross\r\n"
		write(“間隔字符串?dāng)?shù)據(jù)”);
}
  • 服務(wù)端處理流程
poYBAGMOGA2ALK7HAAHe8T6Aujw636.png#pic_center
  • 攝像頭圖像采集參考:https://blog.csdn.net/weixin_44453694/article/details/126488841
  • 攝像頭采集圖像線程
    ?? 攝像頭采集線程負(fù)責(zé)采集圖像數(shù)據(jù),當(dāng)采集到一幀圖像數(shù)據(jù)后通過廣播喚醒所有的http客戶端處理線程。
void *Camera_work(void *arg)
{
	int fd=video_info.video_fd;//攝攝像頭描述符
	printf("攝像頭采集線程,fd=%d\n",fd);
	struct v4l2_buffer v4l2buf;
	memset(&v4l2buf,0,sizeof(v4l2buf));//初始化結(jié)構(gòu)體
	v4l2buf.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;//視頻捕獲格式
	v4l2buf.memory=V4L2_MEMORY_MMAP;//內(nèi)存映射
	int rgb_size=video_info.image_w*video_info.image_h*3;//rgb數(shù)據(jù)大小
	char *rgb_buffer=malloc(rgb_size);
	char *jpg_buffer=malloc(rgb_size);
	char *buff[]={rgb_buffer,jpg_buffer};
	int jpeg_buffer_size;
	pthread_cleanup_push(pth_clean,(void *)buff);
	while(1)
	{
		/*從采集隊(duì)列中取出圖像數(shù)據(jù)*/
		if(ioctl(fd,VIDIOC_DQBUF,&v4l2buf))break;//取數(shù)據(jù)失敗
		//printf("v4l2buff[%d]=%p\n",v4l2buf.index,video_info.video_buff[v4l2buf.index]);
		//將yuv轉(zhuǎn)換為rgb
		yuv_to_rgb(video_info.video_buff[v4l2buf.index],rgb_buffer,video_info.image_w,video_info.image_h);
		//將rgb數(shù)據(jù)轉(zhuǎn)換為jpg數(shù)據(jù)格式
		jpeg_buffer_size=rgb_to_jpeg(video_info.image_w,video_info.image_h,rgb_size,rgb_buffer,jpg_buffer, 80); 
	
		/*將數(shù)據(jù)拷貝給其它線程*/
		pthread_mutex_lock(&mutex);
		jpg_size=jpeg_buffer_size;
		memcpy(jpeg_image_buffer,jpg_buffer,jpeg_buffer_size);
		pthread_cond_broadcast(&cond);//廣播喚醒所有線程
		pthread_mutex_unlock(&mutex);

		/*將緩沖區(qū)添加回采集隊(duì)列中*/
		if(ioctl(fd,VIDIOC_QBUF,&v4l2buf))break;//添加到采集隊(duì)列失敗
	}	
	pthread_cleanup_pop(1);
}
  • http客戶端處理線程
    ??http客戶端線程負(fù)責(zé)處理瀏覽器請(qǐng)求,當(dāng)攝像頭線程采集到一幀數(shù)據(jù)后,http客戶端線程將數(shù)據(jù)下發(fā)給瀏覽器。
void *pth_work(void *arg)
{
	int c_fd=*(int *)arg;
	free(arg);
	char buff[1024]={0};
	int size;
	size=read(c_fd,buff,sizeof(buff)-1);
	if(size<=0)
	{
		close(c_fd);
		pthread_exit(NULL);
	}
	buff[size]='\0';
	printf("buff=%s\n",buff);
	if(strstr(buff,"GET / HTTP/1.1"))//請(qǐng)求網(wǎng)頁文件
	{
		Http_SendData(c_fd,"text/html","./html/image.html");
	}
	else if(strstr(buff,"GET /1.jpg HTTP/1.1"))
	{
		Http_Content(c_fd);
	}
	else if(strstr(buff,"GET /favicon.ico HTTP/1.1"))
	{
		Http_SendData(c_fd,"image/x-icon","./html/wmp.ico");
	}
	close(c_fd);
	pthread_exit(NULL);
}
  • http建立長連接
    ??通過使用建立長連接的方式實(shí)現(xiàn)攝像頭網(wǎng)頁視頻監(jiān)控,以圖片流的方式完成畫面監(jiān)控。
/*
HTTP長連接處理客戶端請(qǐng)求
"HTTP/1.0 200 OK\r\n"
"Server: wbyq\r\n"
"Content-Type:multipart/x-mixed-replace;boundary=boundarydonotcross\r\n"
"\r\n"
"--boundarydonotcross\r\n"
*/
int Http_Content(int c_fd)
{
	char buff[1024]={0};
	/*建立長連接*/
	snprintf(buff,sizeof(buff),"HTTP/1.0 200 OK\r\n"
								"Server: wbyq\r\n"
								"Content-Type:multipart/x-mixed-replace;boundary=boundarydonotcross\r\n"
								"\r\n"
								"--boundarydonotcross\r\n");
	if(write(c_fd,buff,strlen(buff))!=strlen(buff))return -1;//發(fā)送報(bào)文頭失敗
	int jpe_image_size;//保存jpeg圖像大小
	char *image_jpeg=malloc(video_info.image_w*video_info.image_h*3);//保存jpeg圖像數(shù)據(jù)
	while(1)
	{
		/*
			(1)響應(yīng)報(bào)文頭
			"Content-type:image/jpeg\r\n"
			"Content-Length:666\r\n"
			"\r\n"
		*/
		pthread_mutex_lock(&mutex);//互斥鎖上鎖
		pthread_cond_wait(&cond,&mutex);//等待條件變量產(chǎn)生
		jpe_image_size=jpg_size;
		memcpy(image_jpeg,jpeg_image_buffer,jpe_image_size);
		pthread_mutex_unlock(&mutex);//互斥鎖上鎖
		snprintf(buff,sizeof(buff),	"Content-type:image/jpeg\r\n"
									"Content-Length:%d\r\n"
									"\r\n",jpe_image_size);
		if(write(c_fd,buff,strlen(buff))!=strlen(buff))
		{
			free(image_jpeg);//釋放空間
			return -2;//響應(yīng)報(bào)文頭失敗
		}
		/*發(fā)送jpg圖像數(shù)據(jù)*/
		if(write(c_fd,image_jpeg,jpe_image_size)!=jpe_image_size)
		{
			free(image_jpeg);//釋放空間
			return -3;//發(fā)送圖像數(shù)據(jù)失敗
		}
		/*
			(3)發(fā)送間隔字符串
			"\r\n"
			"--boundarydonotcross\r\n"
		*/
		strcpy(buff,"\r\n--boundarydonotcross\r\n");
		if(write(c_fd,buff,strlen(buff))!=strlen(buff))
		{
			free(image_jpeg);//釋放空間
			break;//發(fā)送間隔符失敗
		}		
	}	
	return -4;//發(fā)送圖像數(shù)據(jù)失敗
}
  • 運(yùn)行效果
pYYBAGMOGA2ABsxxAAJjuk8OkfQ981.png#pic_center

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

    關(guān)注

    17

    文章

    1711

    瀏覽量

    65070
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11323

    瀏覽量

    209903
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    510

    瀏覽量

    31353
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于ARM的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)

    提出一種基于ARM 嵌入式開發(fā)平臺(tái)視頻監(jiān)控的實(shí)現(xiàn)方案。通過V4L2 在Linux 構(gòu)建視頻圖像采集和顯示,然后使用servfox 和spc
    發(fā)表于 11-05 01:56 ?2887次閱讀
    基于ARM的<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>系統(tǒng)的設(shè)計(jì)

    基于HTTP網(wǎng)頁服務(wù)器和UDP上位機(jī)的MJPG碼流傳輸

    本文采用的硬件板卡為飛凌嵌入式OKMX8MP-C開發(fā)板,系統(tǒng)版本Linux5.4.70+Qt5.15.0,主要介紹基于HTTP網(wǎng)頁服務(wù)器和UDP上位機(jī)的MJPG碼流傳輸。
    發(fā)表于 06-09 11:27 ?1773次閱讀

    基于嵌入式Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)研究

    基于嵌入式Linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)研究
    發(fā)表于 08-20 09:37

    【實(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)頁視頻監(jiān)控系統(tǒng)實(shí)戰(zhàn)項(xiàng)目(驅(qū)動(dòng)移
    發(fā)表于 07-19 18:18

    Linux組態(tài),快速實(shí)現(xiàn)監(jiān)控系統(tǒng)

    `基于紫金橋跨平臺(tái)跨平臺(tái)實(shí)時(shí)數(shù)據(jù)庫,可Linux系統(tǒng)快速實(shí)現(xiàn)一個(gè)監(jiān)控系統(tǒng)。1、組態(tài)流程和傳統(tǒng)windows組態(tài)差不多,所以上手很快。2、不僅軟件支持跨平臺(tái),工程也支持跨平臺(tái),windows
    發(fā)表于 12-23 15:46

    網(wǎng)頁視頻播放器代碼

    網(wǎng)頁視頻播放器代碼
    發(fā)表于 01-10 11:23 ?102次下載
    <b class='flag-5'>網(wǎng)頁</b><b class='flag-5'>視頻</b>播放器代碼

    基于嵌入式Linux視頻的網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計(jì)

    基于嵌入式Linux視頻的網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計(jì) 摘要:介紹了一種采用Browser/Server結(jié)構(gòu)、在視頻服務(wù)器上內(nèi)置一個(gè)嵌入式Web服務(wù)器、基于嵌入式
    發(fā)表于 10-13 14:39 ?730次閱讀
    基于嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>視頻</b>的網(wǎng)絡(luò)<b class='flag-5'>監(jiān)控</b>系統(tǒng)設(shè)計(jì)

    FMC視頻監(jiān)控業(yè)務(wù)與技術(shù)

    簡(jiǎn)述FMC中與視頻監(jiān)控聯(lián)系比較密切的幾種技術(shù),對(duì)FMC視頻監(jiān)控業(yè)務(wù)的發(fā)展趨勢(shì)進(jìn)行預(yù)測(cè),并對(duì)FMC
    發(fā)表于 10-10 16:33 ?30次下載
    FMC<b class='flag-5'>下</b>的<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>業(yè)務(wù)與技術(shù)

    ARM_Linux實(shí)現(xiàn)無線視頻監(jiān)控系統(tǒng)

    ARM_Linux實(shí)現(xiàn)無線視頻監(jiān)控系統(tǒng)資料
    發(fā)表于 11-18 16:35 ?3次下載

    基于ARM和Linux的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)

    基于ARM和Linux的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)(嵌入式開發(fā)板如何刷程序)-本文根據(jù)大樓電梯視頻監(jiān)控系統(tǒng)的要求,提出了一種基于嵌入式技術(shù)
    發(fā)表于 07-30 12:56 ?9次下載
    基于ARM和<b class='flag-5'>Linux</b>的嵌入式遠(yuǎn)程<b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>系統(tǒng)的設(shè)計(jì)

    基于嵌入式Linux視頻監(jiān)控系統(tǒng)畢業(yè)論文

    基于嵌入式Linux視頻監(jiān)控系統(tǒng)畢業(yè)論文(培訓(xùn)嵌入式開發(fā)軟件)-基于嵌入式Linux視頻監(jiān)控系統(tǒng)
    發(fā)表于 07-30 13:46 ?28次下載
    基于嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>系統(tǒng)畢業(yè)論文

    基于HTTP網(wǎng)頁服務(wù)器和UDP上位機(jī)的MJPG碼流傳輸

    本文采用的硬件板卡為飛凌嵌入式OKMX8MP-C開發(fā)板,系統(tǒng)版本Linux5.4.70+Qt5.15.0,主要介紹基于HTTP網(wǎng)頁服務(wù)器和UDP上位機(jī)的MJPG碼流傳輸。
    發(fā)表于 01-23 12:05 ?802次閱讀

    Linux編程_網(wǎng)頁視頻監(jiān)控項(xiàng)目

    介紹LinuxHTTP服務(wù)器搭建,完成網(wǎng)頁圖片顯示,網(wǎng)頁視頻顯示。
    的頭像 發(fā)表于 09-17 15:45 ?1159次閱讀
    <b class='flag-5'>Linux</b>編程_<b class='flag-5'>網(wǎng)頁</b><b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>項(xiàng)目

    發(fā)燒友實(shí)測(cè) | i.MX8MP 基于HTTP網(wǎng)頁服務(wù)器和UDP上位機(jī)的MJPG碼流傳輸(mjpg-steamer)

    作者|donatello1996來源|電子發(fā)燒友題圖|飛凌嵌入式本文采用的硬件板卡為飛凌嵌入式OKMX8MP-C開發(fā)板,系統(tǒng)版本Linux5.4.70+Qt5.15.0,主要介紹基于HTTP網(wǎng)頁
    的頭像 發(fā)表于 01-10 16:30 ?983次閱讀
    發(fā)燒友實(shí)測(cè) | i.MX8MP 基于<b class='flag-5'>HTTP</b><b class='flag-5'>網(wǎng)頁</b>服務(wù)器和UDP上位機(jī)的MJPG碼流傳輸(mjpg-steamer)

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

    通過OK113i飛凌嵌入式開發(fā)板,采用USB設(shè)備頭,通過V4L2框架實(shí)現(xiàn)視頻圖像采集。創(chuàng)建攝像頭圖像采集線程,搭建HTTP服務(wù)器,固定端口號(hào)為8080,建立HTTP長連接,實(shí)現(xiàn)網(wǎng)頁
    的頭像 發(fā)表于 01-08 22:57 ?1177次閱讀
    基于飛凌嵌入式OK113i<b class='flag-5'>網(wǎng)頁</b><b class='flag-5'>視頻</b><b class='flag-5'>監(jiān)控</b>項(xiàng)目
    主站蜘蛛池模板: 久久在精品线影院| 麻豆蜜桃国语精品无码视频 | 日本无码色哟哟婷婷最新网站| 久久影院中文字幕| 极品内射少妇精品无码视频| 国产香蕉视频在线播放| 国产麻豆精品人妻无码A片| 国产AV精品无码免费看| 东北女人一级毛片| 俄罗斯兽交XXXXX在线| 成人国产在线24小时播放视频| BL文高H强交| wwwwxxxxx中国| 被滋润的艳妇疯狂呻吟白洁老七| www.精品视频| 俄罗斯美女破处| 国产成人在线网站| 国产成人精品综合在线| 国产精品久久高潮呻吟无码| 国产精品无码亚洲网| 国产小伙和50岁熟女23p| 国产最新地址| 久久超碰国产精品最新| 狼人无码伊人AV啪啪| 蜜桃成熟时2在线| 欧美最猛黑人AAAAA片| 日本肉肉口番工全彩动漫| 色尼玛亚洲综合| 无人在线观看免费高清视频播放| 亚州精品视频| 一级做a爰片久久免费| 5G在线观看免费年龄确认| 99热久久久无码国产精品性麻豆 | 德国美女密密麻麻浓毛| 国产精品自在在线午夜精品| 狠狠人妻久久久久久综合九色| 九九九九九热| 免费看黄的片多多APP下载| 强姧伦久久久久久久久| 婷婷五月久久精品国产亚洲 | 国语自产一区视频|