zoukankan      html  css  js  c++  java
  • 如何快速准确的判定一个视频信号的分辨率和帧率

          如果在一个设计中要对不同的视频信号进行处理,那么就要先知道这个视频信号是什么样的视频信号,如何能够快递的准确的判断出这个视频信号的的分辨率和帧率呢???以下是我个人的一点点想法,未必是最佳最快速的,如有不到之处,还请同学(行)们指导。

          在一个视频的输入像素时钟PCLK、行信号H、场信号V、数据有效信号DE都作为输入的情况下,可以很轻松的计算出分辨率:

               1、先检测到场信号的上升沿或下降沿作为一帧视频的开始。

               2、在检测到DE信号的有效的时候,根据像素时钟来计数,当本次DE信号无效的时候记录的计数值V_width 就是视频分辨率的宽度。

               3、在确定一帧开始之后,根据检测到DE有效的次数,就可以确定视频分辨率的高度V_hiegth,这里就可以知道视频的分辨率为V_width *V_hiegth.

               4、视频的帧率也是可以定的,有以下几个方法:

                      方法一:

                          在1中确定了视频的开始之后开始计时,计算1s的定时内检测到几帧数据(几个场信号V的上升沿或下降沿),那么帧率V_F就是几。当然如果你嫌1S的定时比较                    长, 也可以定时0.5S,然后计数值乘以2就可以了 ,不过这种方法不能分辨出临近的帧率比如24F和25F。

                     方法二:

                            可以快点但是不太靠谱的方法,就是根据一帧视频的时间的长短来判断视频的帧率,不过这种方法要先测量再估算,到最后准确率还不太高。

                     最后方法三,是又快又可靠的,不过有他的使用范围: 

                             比如要判定720P的帧率,720P的不同帧率的分辨率有个规律,它们的行场参数,除了行的  前肩 不同,其他的都相同,包括时钟的频率都一样,都是                               74.25M。这样我们就可以根据前肩的不同来判断不同的分辨率了。只要用系统时钟或像素输入时钟来计数就可以了。但是吧,720P的视频是视频中的特殊视频,

                     其他的大部分视频的不同的分辨率的前肩 是这样的,25帧和50帧的前肩参数是一样的,30帧和60帧的前肩的参数也是一样的,只是他们的像素时钟不一样,一半

                  后者是前者的2倍吧。这样如果我们使用像素时钟来计数,那么25帧和50帧的计数就一样了,30和60 的一样,就无法分开了。不过我们可以用系统输入时钟来计数,还               是可以分辨出的,因为50 帧 60帧的像素时钟高,他们前肩的长度就会短,是25帧 30帧的一半。这样计数结果,25帧 30帧 的计数是50帧 60帧的 计数的2倍,而25               帧 和 30帧的计数又是不一样的,所以这样就可以分开不同的帧率了。

             以上就是我判断视频分辨率和帧率的想法。如果视频输入没有PCLK H V DE信号怎么办?????????那就想办法根据视频信号得到这些信号(如加一个视频转换芯片),然后再判定。

           

  • 相关阅读:
    redis安装以及php扩展
    Linux下php安装Redis扩展
    正则验证邮箱
    常用方法
    PHPExcel说明
    冒泡排序
    CURL post请求
    PHP生成随机字符串
    PHP中的字符串函数
    PHP中的数组函数
  • 原文地址:https://www.cnblogs.com/fhyfhy/p/5373557.html
Copyright © 2011-2022 走看看