代码之家  ›  专栏  ›  技术社区  ›  mwahab

directshow反向播放

  •  1
  • mwahab  · 技术社区  · 16 年前

    我尝试过使用IMediaSeeking::SetRate(double)方法,但这只适用于正值。当我尝试使用负值时,它会崩溃。

    救命啊!

    3 回复  |  直到 16 年前
        1
  •  6
  •   Geraint Davies    16 年前

    实际上,我不确定股票AVI demux是否支持任何格式的负利率,即使该格式不使用时间压缩。当然,大多数其他的分接滤波器将不支持负速率。因此,您可能需要一个自定义的demux过滤器来完成此操作。如果这样做,请确保使用带有索引的容器格式(例如mp4)。

        2
  •  2
  •   GraemeF    16 年前
        3
  •  1
  •   Alan    16 年前

    反复调用IMediaSeeking::SetPositions以一帧一帧地向后退,将提供反向播放。它不太可能是平滑的,但我认为这将是您在不编写多个自定义过滤器的情况下能够实现的最好结果。

    使用没有任何时间压缩的编解码器,如mjpeg或jpeg2000,将对这项技术有很大帮助。对于常规的现代编解码器,降低分辨率和比特率会有所帮助。

    您是否需要能够在任意时间对任意文件进行反向播放?如果你能预处理你的媒体文件,准备一个你可以切换到的反向版本就不难了。如果您对低级工具感到满意,Avisynth可以做到这一点。