前段时间接触到一个流媒体客户端的工程,其中对于leaky bucket buffer的管理有些麻烦,而对于音视频的preroll时间有些迷茫,经过查证,原来。。。再次记录表示提醒^_^。
简单描述: preroll是传输速率与解码或者显示需要的数据速度不匹配而产生的buffer需求,具体解释如下:
1. MSDN
MSDN关于DShow有个preroll函数,其中这么解释的:
This method can be called before the application calls Start to begin buffering data in advance. The parameters here must be set to the same values as those that are passed to Start when it is called. If the parameters are different, Start will do rebuffering.
It is important to allow sufficient time for the prerolling (buffering data) for the reader to be completed before calling Start. When prerolling local files, 6 seconds normally is sufficient. When prerolling files over the Internet, allow more time before calling Start. If insufficient time is allowed, the effect will be a longer Start time when Start is called.
2.网站上
1)http://www.occupationalinfo.org/glossary_960.html
PREROLL The time (usually in seconds) it takes a videotape to get up to speed, i.e., the lapse time between pressing the play button and when the picture appears on the monitor for the viewing audience to see.
2)
缓冲时间(preroll)实际是在动画回放前将动画和音频调入用户缓冲区所需的一段时间。缓冲时间越长,支持的数据传输速率就越高,因为更多的信息已经输入到客户机的缓冲区中。
3.REAL
For example, if your image files add up to 200 Kilobytes, multiply 200 by 8 to get 1600 Kilobits. A presentation that lasts two minutes, for instance, uses an average of 13.3 Kilobits per second:
(200 Kilobytes x 8)/120 seconds = 13.3 Kilobits per second
If your RealPix target is 15 Kbps, your presentation should stream smoothly with bandwidth to spare.
This simple estimate assumes that all images are each about the same size and are streamed at regular intervals. You run into bandwidth problems, however, if you use a lot of images near the start of the presentation. If the presentation begins by fading four big images into four quadrants of the display window, for example, RealServer needs to download a lot of image data before the presentation can begin. This results in a lengthy preroll.
What is Preroll?
Before it delivers a RealPix presentation, RealServer looks at the image sizes and the presentation timeline. Weighing these against the bit rate set in the <head/> tag, RealServer determines how much data RealPlayer must receive before it can start to play the presentation. This ensures that once RealPlayer commences playback, it does not need to halt the presentation while it receives more data. The initial data sent before playback is the preroll. As a general rule, you want the preroll under 15 seconds, ideally under 10 seconds. For example, if a RealPix presentation streams for 60 seconds at 20 Kbps, it can deliver up to 1200 Kb of data during playback. If the RealPix presentation requires 1400 Kb of data, at least 200 Kb of data must be sent as preroll. At 20 Kbps, this equals a 10 second preroll:
(1400 Kb - 1200 Kb)/20 Kbps = 10 seconds
As mentioned above, presentation size divided by presentation length is only a rough guide to preroll length. RealServer considers when each image is introduced in the timeline when it calculates preroll. The following sections give instructions for determining preroll more accurately and for reducing bandwidth consumption.
本文地址:http://com.8s8s.com/it/it24611.htm