⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c.bk

📁 Video4Linux_test.rar 接視訊的範例程式
💻 BK
字号:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include "ccvt.h"#include "v4l/v4l.h"#define DEFAULT_PALETTE VIDEO_PALETTE_YUV420P//#define DEFAULT_PALETTE VIDEO_PALETTE_RGB24v4l_device vd;int device_init(char *dev,int norm){	int i;		if(dev == NULL)	{		dev = "/dev/v4l/video0"; //set to default device	}	if(v4l_open(dev,&vd)) return -1;	if(v4l_get_channels(&vd)) return -1;		printf("test open 2\n");	if(v4l_set_norm(&vd,norm)) return -1;	if(v4l_mmap_init(&vd)) return -1;		printf("%s: initialization Ok... %s\n %d channels \n %d audios \n"					,dev,vd.capability.name,vd.capability.channels					,vd.capability.audios);	for(i=0;i<vd.capability.channels;i++)	{		printf("Channel %d: %s \n",i,vd.channel[i].name);	}		printf("v4l:mmap's address = %p\n",vd.map);	printf("v4l:mmap's buffer size = 0x%x\n",vd.mbuf.size);	printf("v4l:mmap's frames = %d(%d max)\n",vd.mbuf.frames,VIDEO_MAX_FRAME);		for(i=0; i< vd.mbuf.frames;i++)	{		printf("v4l: frames %d's offset = 0x%x\n",i,vd.mbuf.offsets[i]);	}	//printf("v4l:chanel switch to %d (%s)\n",channel,vd.channel[channel].name);	//start initialize grab	if(v4l_get_picture(&vd)) return -1;	if(v4l_set_palette(&vd,DEFAULT_PALETTE)) return -1;	printf("test open 3\n");	if(v4l_grab_init(&vd,240,320)) return -1;	if(v4l_grab_sync(&vd)) return -1;		printf("test open 4\n");		return 0;}int device_grab_frame(){	vd.frame_current = 0;	if(v4l_grab_frame(&vd,0) < 0)	return -1;	return 0;}int device_next_frame(){	vd.frame_current ^= 1;	if(v4l_grab_frame(&vd,vd.frame_current) < 0) return -1;	return 0;}int main(){	unsigned char *img;	unsigned char *img_out = malloc(320*240*3);	FILE *fp;  memset(img_out,0,sizeof(img_out));			if(device_init("/dev/v4l/video0",3) == -1)	{		perror("device_init:failed...\n");		exit(1);	}	else	{		printf("OK!\n");			//device_next_frame();		//device_grab_frame();		img = device_get_address(&vd);				printf("img address is: %p \n",img);		printf("img_out address is: %p \n",img_out);		for(int i=0;i<320;i++) printf("%d\n",*(img_out+i));		ccvt_420p_rgb24(240,320,img,img_out);				printf("ccvt_420p_rgb24 OK!\n");		fp = fopen("test.ppm","w");		fprintf(fp,"P6\n240 320\n255\n");		fwrite(img_out,240*3,320,fp);		fclose(fp);	}	exit(0);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -