zoukankan      html  css  js  c++  java
  • 求教,保存视频帧速率过大

    http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=9420

    求教,保存视频帧速率过大

    帖子由 hydeem » 2010-03-07 11:30

    以下代码可以保存视频,但但生成的视频帧速率过大,达到503帧每秒,
    *********************************************************
    int main()
    {
    CvCapture* capture=cvCaptureFromCAM(-1);
    CvVideoWriter* video=NULL;
    IplImage* frame=NULL;
    int n;
    int fps=25;
    if(!capture) //如果不能打开摄像头给出警告
    {
    printf("no capture\n");
    return -1;
    }
    else
    {
    frame=cvQueryFrame(capture); //首先取得摄像头中的一帧
    video=cvCreateVideoWriter("camera.avi",-1,fps,cvSize(frame->width,frame->height),1); //创建CvVideoWriter对象并分配空间
    //保存的文件名为camera.avi,编码要在运行程序时选择,大小就是摄像头视频的大小,帧频率是32
    if(video) //如果能创建CvVideoWriter对象则表明成功
    {
    printf("VideoWriter has created\n")
    }
    cvNamedWindow("Camera Video",1); //新建一个窗口
    while(1)
    {
    frame=cvQueryFrame(capture); //从CvCapture中获得一帧
    if(!frame)
    {
    printf("no frame\n");
    break;
    }
    n=cvWriteFrame(video,frame); //判断是否写入成功,如果返回的是1,表示写入成功
    //cout<<n<<endl;
    cvShowImage("Camera Video",frame); //显示视频内容的图片
    if(cvWaitKey(40)>0) break; //有其他键盘响应,则退出
    }
    cvReleaseVideoWriter(&video);
    cvReleaseCapture(&capture);
    cvDestroyWindow("Camera Video");
    }
    return 0;
    }
    *********************************************************************************
    以上可以从摄像头采集视频,但生成的视频帧速率过大,达到503帧每秒,请高位高手指点
    hydeem
    OpenCV幼儿园宝宝
     
    帖子: 4
    注册: 2010-02-26 20:40

    Re: 求教,保存视频帧速率过大

    帖子由 niubenbing » 2010-07-26 7:52

    对directshow的每种编码方式进行了视频采集速度测量:
    统一在Sleep(20)条件下
    编码方式一:20帧/10s 即2帧/s Cinepak Codec by Radius
    编码方式二:600帧/30s 即20帧/s 无解码器 Intel 4:2:0 Video V2.50
    编码方式三:230帧/30s 即8帧/s 有光晕 Intel Indeo(R)Video R3.2
    编码方式四:126帧/30s 即4帧/s Intel Indeo? Video 4.5
    编码方式五:396帧/30s 即13帧/s Intel IYUV code
    编码方式六:596帧/30s 即20帧/s 无解码器 Microsoft REL
    编码方式七:380帧/30s 即13帧/s 有光晕 Microsoft Video 1
    编码方式八:216帧/30s 即7帧/s Ligos Indeo? XP Video 5.2
    编码方式九:396帧/30s 即13帧/s ffdshow 
    编码方式十:600帧/30s 即20帧/s 无解码器 DVCPRO HD
    编码方式十一:590帧/30s 即20帧/s 无解码器 DVCPRO5O
    编码方式十二:420帧/30s 即14帧/s XVID MPEG-4 code
    编码方式十三:350帧/30s 即12帧/s 全帧(非压缩)

    故在创建视频写入器时的帧率设置应与你所选择的编码方式的速度基本一致,否则就
    会出现快放或者慢放的情况。
     
     

    四个字符用来表示压缩帧的codec 例如,

    CV_FOURCC('P','I','M','1') = MPEG-1 codec

    CV_FOURCC('M','J','P','G') = motion-jpeg codec


    CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec

    CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec

    CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec

    CV_FOURCC('U', '2', '6', '3') = H263 codec

    CV_FOURCC('I', '2', '6', '3') = H263I codec

    CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec

    若编码器代号为 -1,则运行时会弹出一个编码器选择框.

  • 相关阅读:
    UVALive4973 CERC2010A Ardenia
    HDU4116 Fruit Ninja (2011 Asia ChengDu Regional Contest)
    POJ1030 Rating
    HDU2471 2008 Asia Regional Hangzhou History of Languages
    UVA12304_2D Geometry 110 in 1!
    UVALive4974 CERC2010B Beasts
    2012CSU_ACM集训中期检测 简要题解
    关于ACM,2010开始的一些故事
    UVA12302 NinePoint Circle
    System.Web.HttpRequestValidationException:解决方法
  • 原文地址:https://www.cnblogs.com/daxingxing/p/2364428.html
Copyright © 2011-2022 走看看