转载

如何才能拍摄出高清无码?(附源码下载!)

要想拍摄出高清无码,摄像头很关键。

摄像头有两个重要的参数,一个是分辨率,一个是帧频。

附: 设备测试demo源码下载

一.笔记本的自带摄像头的参数

如何才能拍摄出高清无码?(附源码下载!)

Size就是摄像头的分辨率,MaxFrameRate是指摄像头采集能达到的最大帧频。

当然,我这个摄像头比较low,录制高清无码肯定是不行的。

二.外接摄像头测出来的参数。

如何才能拍摄出高清无码?(附源码下载!)

附: 设备测试demo源码下载   

三.选定摄像头的分辨率和帧频来录制视频

如何才能拍摄出高清无码?(附源码下载!)  

现在选定的是1280*720,帧频为30fps。

录制得到的视频的参数信息如下:

如何才能拍摄出高清无码?(附源码下载!)

附: 视频录制demo源码下载

明明摄像头能达到30fps,为什么实际录制的是视频只有13fps呢?

三.实时查看摄像头采集的帧频值

什么方法来做到实时查看摄像头采集达到的帧频值呢?

很简单。

1.先设置一个计数器来记录采集得到的帧数。

2.创建一个轮询线程来显示帧数每秒的增量,即是fps值。

private ICapturer audioCapturer;//音频采集器         private ICapturer videoCapturer;//视频采集器         private VideoFileMaker videoFileMaker;//视频录制器         private Thread examineFrameCount;//帧数轮询线程         private int frameCount = 0;//采集得到的图片帧计数         private int deltaFrameCount = 0;//一段时间内帧数增量         private int frameRate = 30; // 采集视频的帧频         private bool sizeRevised = false;// 是否需要将图像帧的长宽裁剪为4的整数倍

视频采集事件处理方法代码:

void Form1_ImageCaptured(Bitmap img)         {  this.frameCount++;  this.DisplayVideo((Bitmap)img.Clone());  Bitmap imgRecorded = img;  if (this.sizeRevised) // 对图像进行裁剪,  MFile要求录制的视频帧的长和宽必须是4的整数倍。  {      imgRecorded = ESBasic.Helpers.ImageHelper.RoundSizeByNumber(img, 4);      img.Dispose();  }  this.videoFileMaker.AddVideoFrame(imgRecorded);  //快速释放内存             if (this.frameCount % (2 * this.frameRate) == 0)  {      this.frameCount = 0;      GC.Collect();  }         } 

轮询方法的代码:

private void SearchCount(object tag)//轮询方法   {    while (true)    {     int referenceCount = this.frameCount;     System.Threading.Thread.Sleep(1000);     this.deltaFrameCount = this.frameCount - referenceCount;     this.ShowCount();    }   } 

这样,我们就能查看摄像头采集的帧频的实时值了。

如何才能拍摄出高清无码?(附源码下载!)

总结:

摄像头标定的最大帧频,指的是峰值;而录制生成的文件的帧频,指的是均值。而且,摄像头实际能达到的采集帧频与画面的明暗和变化程度都有关。画面越明亮,画面变化程度越小,录制得到的帧频的值越大。

附:视频录制demo源码下载

附:设备测试demo源码下载

正文到此结束
Loading...