当前位置: 首页 > news >正文

(转)视频码率,帧率和分辨率的联系与区别

视频码率,帧率和分辨率到底哪一个影响电影的清晰度 

码率:影响体积,与体积成正比:码率越大,体积越大;码率越小,体积越小。

码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。也就是取样率(并不等同与采样率,采样率的单位是Hz,表示每秒采样的次数),单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来cbr(固定码率)与vbr(可变码率), “码率”就是失真度,码率越高越清晰,反之则画面粗糙而多马赛克。

 

下面是通过一个wav文件的采样率来计算码率和文件大小,通过MediaInfo工具显示的文件信息如下:

概要

完整名称                             :audio\wav\adele-rolling_in_the_deep.wav

文件格式                             : Wave

文件大小                             : 38.3 MiB

长度                                    : 3分 47秒

平均混合码率                     : 1 411 Kbps

 

音频

ID                                         : 0

文件格式                             : PCM

格式设置,Endianness      : Little

编码设置ID                          : 1

编码设置ID/提示信息         : Microsoft

长度                                      : 3分 47秒

码率                                      : 1 411.2 Kbps

声道                                     : 2声道

采样率                                 : 44.1 KHz

位深度                                 : 16位

大小                                     : 38.3 MiB (100%)

 

1.码率计算公式:

码率=采样率 x 位深度 x 声道

所以,上面文件的码率= 44.1Khz x 16位 x 2声道 = 1411.2 Kbps

 

2.文件大小 = 码率 x 时长 = 1411.2 Kbps x (3 x 60 + 47 )s = 1411.2Kbps x 227s

 =38102.4 Kb

38102.4 Kb / 1024 Kb/M = 37.2M

近似等于mediainfo工具显示的文件大小38.3M。

注:此计算公式对未压缩的wav格式文件有效,不适用于mp3等被压缩的文件。

 

帧率:影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。

帧率就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,

 

分辨率:影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。

 

清晰度

在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。

 

带宽、帧率

例如在ADSL线路上传输图像,上行带宽只有512Kbps,但要传输4路CIF分辨率的图像。按照常规,CIF分辨率建议码率是512Kbps,那么照此计算就只能传一路,降低码率势必会影响图像质量。那么为了确保图像质量,就必须降低帧率,这样一来,即便降低码率也不会影响图像质量,但在图像的连贯性上会有影响。

 

 

avi帧率 dwScale,dwRate

转自: http://yixiangongzhu.blog.163.com/blog/static/19736320320111123111753465/

 

msdn上说dwRate/dwScale才是播放速率。   
  视频中每秒播放的帧数可能不是整数,比如可能是29.97等,   
  注意到在AVISTREAMINFO结构中,所以属性都是整型变量表示的,所以小数只能   
  用两个整数相除得到,这样就需要用两个整数(dwRate和dwScale)来得到播放速率。   
  比如速率是29.97,那么可以用dwRate=2997,dwScale=100得到   
  如果速率是29.9,那么可以用dwRate=299,dwScale=10得到

在avi文件中包含有AviMainHeader,AviStreamHeader等头部信息,其中有以下几个字段:Start、Length、Scale、Rate,有资料中介绍:

In AviMainHeader:

The dwStart and dwLength fields specify the starting time of the AVI file and the length of the file. The units are defined bydwRateand dwScale. The dwStart field is usually set to zero.

The dwScale and dwRate fields are used to specify the general time scale that the file will use. In addition to this time scale, each stream can have its own time scale. The time scale in samples per second is determined by dividing dwRate by dwScale.

In AviStreamHeader:

dwScale is used together with dwRate to specify the time scale that this stream will use.

Dividing dwRate by dwScale gives the number of samples per second.

For video streams, this rate should be the frame rate.

For audio streams, this rate should correspond to the time needed fornBlockAlign bytes of audio, which for PCM audio simply reduces to the sample rate.

 

为了理解,我们拿一个实际的avi文件来分析一下:

1.Video AviStreamHeader:Length=4500、Scale=1、Rate=25,因此此文件视频帧率为25/1=25,可得:视频时长:4500/25=180秒。这几个数字容易理解。

2.Audio AviStreamHeader:Length=2812、Scale=16000、Rate=2,初看一头雾水,反复读资料、仔细分析才明白:对于PCM audio,nBlockAlign与dwSampleSize相等,为2,及每个音频采样为两个字节,每个音频帧的大小为1024B,而dwRate/dwScale即为采样率:16000/2=8000,因此,音频时长:

(2812 * 1024 / 2) / (16000 / 2) = 179.968秒。

 

转自:http://blog.csdn.net/ameyume/article/details/7308504

相关文章:

  • LVS-DR负载均衡模式的arp_announce和arp_ignore详解
  • 轻量级web富文本框——wangEditor使用手册(2)——扩展一个“缩进”功能 demo
  • nginx相关参考博客
  • Spring MVC中jquery ajax传递view
  • Unrecognized Windows Sockets error: 0: JVM_Bind异常
  • 怎样区分直连串口线和交叉串口线?
  • Libgdx学习笔记:使用Action做定时器
  • Ruby 2.2.0发布,支持增量式垃圾收集和符号的垃圾收集
  • 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇...
  • 仿小米便签图文混排 EditText解决尾部插入文字bug
  • 前端展示用部分CSS
  • 解剖SQLSERVER 第三篇 数据类型的实现(译)
  • DB2数据库用 With语句分隔字符
  • 处理和引发事件的规范
  • 图像的边缘提取
  • ES6指北【2】—— 箭头函数
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • co模块的前端实现
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java-详解HashMap
  • Tornado学习笔记(1)
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 构建二叉树进行数值数组的去重及优化
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 微信小程序:实现悬浮返回和分享按钮
  • 项目管理碎碎念系列之一:干系人管理
  • # 计算机视觉入门
  • #pragam once 和 #ifndef 预编译头
  • #pragma data_seg 共享数据区(转)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.proxy和$.extend
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (汇总)os模块以及shutil模块对文件的操作
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)h264中avc和flv数据的解析
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)Scala的“=”符号简介
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net MVC + EF搭建学生管理系统