『漫游』酷论坛>『影音数码技术学习交流』>BitrateCurve正式版发布了

BitrateCurve正式版发布了

strnghrs@2005-03-01 09:37

Version 1.00

1、同步发行简体中文、英文版本。
2、新增功能:显示码率列表、码率曲线。
3、错误修正:在计算AVI文件的时长时,由于舍入误差,有时会多计1秒,这1秒的码率为0,因此会影响统计特征量的计算。
4、错误修正:如果同时打开的两个片子播放时间不同,则短少的时间段内的码率为随机数。
5、错误修正:文件打开对话框重定位后,底部空白太多。

下载:
http://stronghorse.yeah.net

自从发布这个软件后,我再也没有在漫游见人讨论过1P、2P、nP。其实我本人非常想知道,各位使用后的结果和心得体会。
引用

maomao333@2005-03-01 10:47

很不错的统计软件,支持!

请教一下strnghrs:

1.从AVI文件的"idx1"能读到每个包长时间?

2.RMVB中的每个包(package)的一般大小是多少,对应的时间戳所指时间段有多长?如果包长和时间都比较大,所计算的误差是不是大?
引用

strnghrs@2005-03-01 17:11

引用
最初由 maomao333 发布
很不错的统计软件,支持!

请教一下strnghrs:

1.从AVI文件的"idx1"能读到每个包长时间?

2.RMVB中的每个包(package)的一般大小是多少,对应的时间戳所指时间段有多长?如果包长和时间都比较大,所计算的误差是不是大?

第一个问题比较好回答:idx1只能读到包长,没有时间,时间是按序号算出来的,为了保证精度,必须采用浮点数算。

第二个问题不是三言两语说得清。

对于RM文件来说,由于一开始就是针对网络播放,因此在RM文件结构中没有通常多媒体文件的帧(frame)概念,只有与TCP/IP对应的包(packet)概念,就象在《RealSystem G2 SDK Documentation - Chapter 5: File Format Plug-In》一文开始处的说明:

The first step in integrating your datatype into RealSystem is building a file format plug-in that converts your datatype into a stream of RealSystem packets. RealServer uses your plug-in to stream your datatype directly from its native file format. The RealSystem client then assembles the packets and displays the data through a rendering plug-in.

熟悉TCP/IP的人都知道,在网络传输时,太大的包会使传输变得不可靠,一般公认在Internet上传输的包长不宜超过1024字节,因此在该文中也有这样的说明:

A file format plug-in should generally create packets of 430 to 500 bytes for the opaque data. Staying under 500 bytes decreases the likelihood of packet fragmentation.

不过这个针对的是网络播放的情况,现在很多片子针对的都是LAN或本地观看,这种情况下可以适当增加包的长度——增加包长、减少包数,理论上可以减小最终生成的RM文件长度,但是一旦丢包,损失相对小包要大。因此正常情况下,包长都小于帧数据长度,即一帧(尤其是关键帧)可能需要多个包才能表示,但是一个包中通常不会包含多于两帧的数据。这样可以减少丢包造成的损失,也便于定位(seek)。

从我测试的片子来看,即使压片时选择针对LAN环境,一般包长最长的也就1000字节多一点,通常只有几十、几百个字节,小于一帧的数据量;至于包的时间戳差距,CBR相对稳定一些,一般几十毫秒,VBR变动比较大,最小1毫秒,最大到100多一点,平常几十毫秒。在RM文件的Media Properties Header段中,对每个流的最大包长、平均包长都有描述,用RMVB_Analyse可以看到,在以后版本的BitrateCurve中说不定也可以看到。

在我看来,BitrateCurve这种按照包的时间戳数包、计算码率的方法,对于那些跨秒的包来说,误差肯定是有的,但是影响不大。

想要尽一步减少误差,只能去研究RMVB的解码器,找到将包解码成帧的办法,技术难度要比现在数包的方法难很多,谁愿干谁干,至少我自己是不会干的。
引用

dio1888@2005-03-01 19:02

一如既往地强烈支持马健兄中^^

Version 1.00 太好用了!
引用

ccinsei@2005-03-01 21:07

谢谢楼主提供好的统计软件,尝试一下
引用

maomao333@2005-03-02 13:33

引用
最初由 strnghrs 发布

一个包中通常不会包含多于两帧的数据;VBR变动比较大,最大到100多一点


只有跨秒的包才会有误差,不过好像很难跨秒.

BitrateCurve如果再能加上MPEG-1和MPEG-2的码率分析就更好了
引用

strnghrs@2005-03-02 14:34

引用
最初由 maomao333 发布


只有跨秒的包才会有误差,不过好像很难跨秒.

BitrateCurve如果再能加上MPEG-1和MPEG-2的码率分析就更好了

这个比较麻烦,以前我也曾想过,不过一直没有找到一份好的源代码。
引用

| TOP