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

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

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

附:设备测试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源码下载

时间: 2024-10-10 20:34:04

如何才能拍摄出高清无码?(附源码下载!)的相关文章

高清实时视频对讲SDK源码

AnyChat SDKAnychat(AnyChat音视频互动开发平台)是一套跨平台的(*)即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台. AnyChat音视频互动开发平台(SDK)包含了音视频处理模块(采集.编解码).流媒体管理模块(丢包重传.抖动平滑.动态缓冲).流媒体播放模块(多路混音.音视频同步)以及P2

Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO

距离上次发布(android高仿系列)今日头条 --新闻阅读器 (二) 相关的内容已经半个月了,最近利用空闲时间,把今日头条客户端完善了下.完善的功能一个一个全部实现后,就放整个源码.开发的进度就是按照一个一个功能的思路走的,所以开发一个小的功能,如果有用,就写一个专门的博客以便有人用到独立的功能可以方便使用. 这次实现的功能是很多新闻阅读器(网易,今日头条,360新闻等)以及腾讯视频等里面都会出现的频道管理功能. 下面先上这次实现功能的效果图:(注:这个效果图没有拖拽的时候移动动画,DEMO里

WPF一步步实现完全无边框自定义Window(附源码)

原文:WPF一步步实现完全无边框自定义Window(附源码) 在我们设计一个软件的时候,有很多时候我们需要按照美工的设计来重新设计整个版面,这当然包括主窗体,因为WPF为我们提供了强大的模板的特性,这就为我们自定义各种空间提供了可能性,这篇博客主要用来介绍如何自定义自己的Window,在介绍整个写作思路之前,我们来看看最终的效果. 图一 自定义窗体主界面 这里面的核心就是重写Window的Template,针对整个开发过程中出现的问题我们再来一步步去剖析,首先要看看我们定义好的样式 <Resou

Android高仿QQ消息滑动删除(附源码)

大家都应该使用过QQ吧,他的消息中可以滑动删除功能,我觉得比较有意思,所以模仿写了一个,并且修改了其滑动算法.我先贴几个简单示范图吧 其实主要用的是算法以及对ListView的把控. 一下是适配器的类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

wpf 模拟3D效果(和手机浏览图片效果相似)(附源码)

原文 wpf 模拟3D效果(和手机浏览图片效果相似)(附源码) pf的3D是一个很有意思的东西,类似于ps的效果,类似于电影动画的效果,因为动画的效果,(对于3D基础的摄像机,光源,之类不介绍,对于依赖属性也不介绍.),个人认为,依赖属性这个东西,有百分之五十是为了3D而存在.(自己写的类似于demo的东西)先上图,无图无真相这是demo的整个效果图,可以用鼠标移动,触摸屏也可以手指滑动,图片会移动,然后移动结束,会有一个回弹的判断. <Window x:Class="_3Dshow.Wi

C#编程总结(七)数据加密——附源码

C#编程总结(七)数据加密——附源码 概述 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取.阅读的目的. 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程.加密建立在对信息进行数学编码和解码的基础上.加密类型分为两种,对称加密与非对称加密,对称加密双方采用共同密钥.非对称加密,这种加密方式存在两个密钥,一个是公共密钥(对外公开),一种

Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)

原文:[原创]Matlab.NET混合编程技巧之--直接调用Matlab内置函数(附源码) 在我的上一篇文章[原创]Matlab.NET混编技巧之--找出Matlab内置函数中,已经大概的介绍了matlab内置函数在混合编程中的优点,并通过程序找出了matlab中的大部分内置函数,当然更多人关心是如何像我所说得那样,不用直接编译,就直接在C#中调用这些内置函数.本文就带你揭开这些谜团. 声明,这篇文章是需要一点点混合编程基础的,基本概念和过程要懂一点,如果能简单成功混编一个简单的计算或者绘图例子

C#版无人驾驶汽车(附源码)

一,简单问题复杂化: 100公里/1小时的速度,在日常生活中是比较常见的速度,把它转换为其它单位: 100公里/1小时 ≈ 28米/1秒 100公里/1小时 ≈ 2800厘米/秒 如果想要无人驾驶汽车达到厘米级的位移监测.探测器扫描路况时,每秒上传2800次数据给PC机.若一辆汽车有10个探测器,就意味着每秒的并发量为2.8W次/秒. 2.8W次/秒的并发量,在网站上肯定会采用分布式,缓存,读写分离,集群技术,关键还有这个数据的存储,到底用二维数据库,还是用NOSQL.这些问题是不是让你很头痛?

javaweb异常提示信息统一处理(使用springmvc,附源码)

一.前言 后台出现异常如何友好而又高效地回显到前端呢?直接将一堆的错误信息抛给用户界面,显然不合适. 先不考虑代码实现,我们希望是这样的: (1)如果是页面跳转的请求,出现异常了,我们希望跳转到一个异常显示页面,如下: 当然,这里的界面不够美观,但是理论是这样的. (2)如果是ajax请求,那么我们,希望后台将合理的错误显示返回到ajax的回调函数里面,如下: $.ajax({ type: "post", url: "<%=request.getContextPath(