资源简介

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

评论

共有 条评论