当前位置: 代码迷 >> 多媒体/流媒体开发 >> filter 间传递 视频 速率的 困惑,该怎么解决
  详细解决方案

filter 间传递 视频 速率的 困惑,该怎么解决

热度:8536   发布时间:2013-02-26 00:00:00.0
filter 间传递 视频 速率的 困惑
按我的理解 ,播放 速率 是由时间戳 确定的,如 fillbuffer里 的SetTime 函数,然后 提交过滤器 根据 时间 播放,

那么 如果 我现在 从网络收到的 数据 快了, 或慢了 ,怎么 进行 控制呢? 如果 快了,那不是 sample的内存 会一直
增加, 

我想说的是 怎么 可以 自动控制 速率,比我 我缓存 多了,就放得 快点, 缓存 没了,就放得 慢一点

------解决方案--------------------------------------------------------
那就是SetRate修改播放速率了,这样看起来也不正常了啊,
------解决方案--------------------------------------------------------
IMediaSeeking::SetRate
------解决方案--------------------------------------------------------
setrate 用起来方便些,它的实现应该也是靠调用settime来完成的。
------解决方案--------------------------------------------------------
这很正常,fillbuffer 的 调用受制于是否有空闲的缓冲,缓冲数是有限的,当所有的缓冲填满过后(最开始的几毫秒),只有Render完一个缓冲,才有新的空闲缓冲,Render的时间就是受settime()控制的,所以settime()最后影响到了fillBuffer的调用频率
------解决方案--------------------------------------------------------
自己调整时间戳即可,如:

以帧率 = 25fps为例,
则每帧40ms,若想播放加快,可将此时间调小,如20ms等。
  相关解决方案