它能播放AVI格式的视频.但是有一次我转换过,移动进MP3里,视频清单里有它,但是一播放说:格式错误,大致好像是可以播放20针一秒的,我转换的是25阵一秒的,还有那个是什么94KBPS,我转换的68KBPS(大致是这样子)怎么回事?AVI还分好几中吗?
參考答案:你的推断没错,是码率的问题,你可以通过说明书或者售后电话确定你的MP3可以支持那些码率的avi,一般视频转换软件都有码率的设置。
一、所谓码率
对于流媒体,码率(bitrate)可以定义为:单位时间内流过的数据量,单位通常采用kb/s(千比特/秒)。
这里所谓“流过”,其实就是指codec对数据进行处理。不过一般说的恒定码率(CBR)码率、可变码率(VBR),都是针对编码后的数据流,不针对解码后的数据流。解码后的数据流码率通常为一个恒定值(例如解码后的视频码率=长×宽×色深×fps),不在本文和本软件的探讨范围之内。
码率最简单的计算公式就是:码率=文件总长度/播放时间
这个公式的物理含义是:codec在播放时间内,需要将整个文件处理完。当然这样算出来的只是一个粗略的平均数,不能反映实际码率在每一秒的变化。而且由于文件中除了音频、视频数据外,还包含其它数据,因此按上面这个公式计算出来的码率会比真正的平均码率稍大。
本软件所计算的,就是编码器压缩生成的数据流的实际码率,不仅有平均码率,还有每一秒的码率,便于对数据流量进行定量分析。
不过对于大多数普通人来说,在说到“码率”的时候,AVI和RMVB又略有不同:RMVB文件是音频、视频一起编码的,所以它的码率,通常是包含音频、视频的总码率;而AVI文件的音频、视频通常是分开压缩,最后才合成到一起,因此一般人在说到AVI的码率时,指的多半只是视频的码率。
本软件可以计算视频、音频、视频+音频的码率。输出的时候,可以选择输出全部或只输出某一种码率。
二、AVI码率计算
AVI流的码率计算基本思想是:算出fps(frames per second)值,然后顺序获取每一帧的压缩数据量,将1秒内的所有帧的压缩数据量加在一起,就是这一秒的码率。需要注意的是AVI文件的fps值通常是一个浮点数,因此会出现某一帧横跨两秒的情况(如对于fps=23.976的AVI文件来说,第24帧就从第1秒尾延续到第2秒头),计算时需要按照跨越的比例在前、后秒间进行分配。如果将fps圆整成整数,不仅计算结果不精确,而且对于播放时间比较长的片子,还可能出现最后几秒没数可算的窘况。
获取帧数据量的方式通常有3种:
1. 使用微软提供的vfw(video for windows)接口。对于视频流,这种方法是最方便的,但是音频流经常不能逐帧读取,因此不能用这种方法计算音频流的码率。
2. 使用微软提供的mmio接口,按照RIFF格式解析AVI文件。这种方法要求对AVI文件结构非常了解。
3. 使用第三方源代码,然后在需要的地方进行更改。这个应该是比较省事,也比较靠得住的一种方案。本软件就参考了guliverkli开源项目下的AviSplitter源代码。
为了省事,也为了加快读取速度,本软件直接从AVI文件的"idx1" 段读取包长度,这种方式与vfw的处理方式是一样的,不过如果AVI文件中没有索引,或索引出了问题,用本软件读取的数据也会出错。幸好常用的AVI制作、编辑软件Nandub是支持索引的,所以只要是用它合成的AVI,能够正常播放就能用本软件计算码率。
由于计算码率的时候不需要解码,因此不需要在机器上安装相应的codec。