gpt4 book ai didi

video - FFMS2中的快速视频跳帧访问

转载 作者:行者123 更新时间:2023-12-04 22:55:58 26 4
gpt4 key购买 nike

FFMS2 提供对多个视频编解码器的帧精确访问。
但是当我们进行长距离跳帧访问时,速度很慢。

是什么实现了快速跳帧访问,或者像 VLC 这样的现有视频播放器如何实现这一点?

最佳答案

视频播放器使用合并到视频文件中的时间到文件位置索引。当您导航到某个时间码时,播放器会读取该索引,找到之前的关键帧,解码找到的关键帧和对应于请求的时间码的帧之间的所有帧,然后显示它。在大多数情况下,要获得该帧需要做很多额外的工作,这就是为什么 AviSynth 和视频处理软件中没有采用这种方案的原因。

从理论上讲,可以制作一个不需要索引的混合插件,并且将为简单的用例提供相同的准确性和大致相同的速度,但它需要为 FFMPEG 中的每种格式重写所有文件源过滤器,所以自然没有人试过了。

目前基于 Avisynth 的解决方案有:

  • FFMS2

    它首先索引整个文件并构建一个带有指向每个帧的指针的特殊缓存文件,从而可以在之后使用随机/任意帧访问。

    索引包括解码视频数据(以及可选的音频),以便从磁盘读取整个文件。这就是为什么处理大文件的过程很慢的原因。
  • AviSource/LSMASHVideoSource

    一些视频格式支持精确的帧访问,并且不需要在 AviSynth 中建立索引:
  • .AVI 通过内置 AviSource() 打开时过滤器
  • 通过 LSMASHVideoSource() 打开时的 .MP4 和 .MOV从 L-SMASH-Works 过滤
  • DirectShowSource/dss2

    使用内置的 DirectShowSource() 可以即时打开具有大部分精确寻帧(但不能保证)的文件或 dss2()DSS2mod 过滤(最初是 Haali media splitter 的一部分,您可以将其 avss.dll 作为 AviSynth 插件加载)。有很多限制。
  • 关于video - FFMS2中的快速视频跳帧访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35389831/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com