资源简介
1. 采集、编码、解码程序、对应的可执行程序和Makefile文件;
2. Pyuv播放器(用于XP)
3. 实验文件-yuv420p.yuv 、encode.h264、 decode.yuv
4. 相关参考文档pdf版本
代码片段和文件信息
/*
* V4L2 video capture example
*
* This program can be used and distributed without restrictions.
*/
#include
#include
#include
#include
#include /* getopt_long() */
#include /* low-level i/o */
#include
#include
#include
#include
#include
#include
#include
#include
#include /* for videodev2.h */
#include
#define CLEAR(x) memset (&(x) 0 sizeof (x))
#define IMAGE_WIDTH 320
#define IMAGE_HEIGHT 240
//static char yuv420[IMAGE_WIDTH*IMAGE_HEIGHT*3>>1];
static char yuv420p[IMAGE_WIDTH*IMAGE_HEIGHT*3>>1];
typedef enum {
IO_METHOD_READ
IO_METHOD_MMAP
IO_METHOD_USERPTR
} io_method;
struct buffer {
void * start;
size_t length;
};
FILE * fp_yuv420p;
static char * dev_name = NULL;
static io_method io = IO_METHOD_MMAP;
static int fd = -1;
struct buffer * buffers = NULL;
static unsigned int n_buffers = 0;
static void
errno_exit (const char * s)
{
fprintf (stderr “%s error %d %s\n“
s errno strerror (errno));
exit (EXIT_FAILURE);
}
static int
xioctl (int fd
int request
void * arg)
{
int r;
do r = ioctl (fd request arg);
while (-1 == r && EINTR == errno);
return r;
}
static void
process_image (const char * p)
{
//fputc (‘.‘ stdout);
//convert yuv422 to yuv420p
char *y=yuv420p;
char *u=&yuv420p[IMAGE_WIDTH*IMAGE_HEIGHT];
char *v=&yuv420p[IMAGE_WIDTH*IMAGE_HEIGHT+IMAGE_WIDTH*IMAGE_HEIGHT/4];
int i=0j=0l=0;
for(j=0;j for(i=0;i
if(j%2==0){//even line to sample U-Chriminance
if(l==1){//sample U-Chriminance
*u=p[j*IMAGE_WIDTH*2+i];
u++;
}
else if(l==3){//abandon V-Chroma
l=-1;
continue;
}
else{
*y=p[j*IMAGE_WIDTH*2+i];
++y;
}
}
else if(j%2==1){//odd lines to sample V-Chroma
if(l==1){
continue;
}
else if(l==3){
l=-1;
*v=p[j*IMAGE_WIDTH*2+i];
++v;
}
else {
*y=p[j*IMAGE_WIDTH*2+i];
++y;
}
}
}
fwrite(yuv420pIMAGE_WIDTH*IMAGE_HEIGHT*3>>11fp_yuv420p);
fflush (stdout);
/*******************************************************************
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1079826 2012-11-25 21:13 pYUV_v05_20091230.exe
目录 0 2012-12-08 18:26 摄像头采集官方程序\
文件 17122 2012-12-08 08:58 摄像头采集官方程序\offical
文件 18139 2012-12-06 21:39 摄像头采集官方程序\offical.c
文件 11520000 2012-12-08 08:59 摄像头采集官方程序\yuv420p.yuv
目录 0 2012-12-08 18:44 相关教程\
文件 197332 2012-12-08 18:43 相关教程\UbuntuCompilationGuide – FFmpeg.pdf
文件 1166407 2012-12-08 18:44 相关教程\V4L2视频采集与H.264编码源码大放送:Linux视频采集与编码(三) - 羽龍飛 - 博客频道 - CSDN.pdf
文件 1435426 2012-12-08 18:43 相关教程\V4L2采集yuv视频花屏:Linux视频采集与编码(一) - 羽龍飛 - 博客频道 - CSDN.pdf
文件 644967 2012-12-08 18:43 相关教程\YUYV编码成h.264:Linux视频采集与编码(二) - 羽龍飛 - 博客频道 - CSDN.pdf
文件 418969 2012-12-08 18:44 相关教程\使用libx264将I420编码为H.pdf
文件 490708 2012-12-08 18:44 相关教程\学习FFmpeg API – 解码视频 - bruce_hou的个人空间 - 开源中国社区.pdf
目录 0 2012-12-08 18:26 编码相关的文件\
文件 66 2012-12-06 14:48 编码相关的文件\Makefile
文件 268653 2012-12-08 09:00 编码相关的文件\encode.h264
文件 1202190 2012-12-08 18:17 编码相关的文件\x264_encoder
文件 5614 2012-12-08 18:17 编码相关的文件\x264_encoder.c
文件 11520000 2012-12-08 08:59 编码相关的文件\yuv420p.yuv
目录 0 2012-12-08 18:26 解码相关的文件\
文件 1031 2012-12-08 18:01 解码相关的文件\Makefile
文件 11520000 2012-12-08 17:59 解码相关的文件\decode.yuv
文件 2820 2012-12-08 17:59 解码相关的文件\decode_h264_zj.c
文件 268653 2012-12-08 09:00 解码相关的文件\encode.h264
评论
共有 条评论