【问题标题】:How to change libav decoding framerate?如何更改 libav 解码帧率?
【发布时间】:2011-11-26 22:13:58
【问题描述】:

有没有办法改变 libav 解码帧率? libav 结构中有几个变量负责获取帧速率,但据我所知,这些变量仅用于阅读目的(在解码模式下)。其中有:

AVStream.duration
AVStream.nb_frames
AVStream.r_frame_rate
AVStream.time_base

前两个告诉我帧数,后两个告诉我帧率。但似乎我不能只设置它们,否则可能不会产生适当的效果。

有什么建议吗?

【问题讨论】:

    标签: c++ decoding frame-rate libav


    【解决方案1】:

    如果我理解正确,您需要以低于编码的帧速率解码视频。最好的解决方案是在解码之前跳过帧数据包,以您需要的速率(在调用 avcodec_decode_video2() 之前)。从未尝试过,但它应该可以工作。这将节省不必要的 CPU 用于解码您不需要的帧。

    【讨论】:

    • 我不仅要能够降低帧率,还要能够提高帧率。此外,许多编解码器使用截断标志,因此可以在数据包中移动帧 - 不一定一个数据包将包含一帧。因此,跳过数据包显然可以而且肯定会导致问题。此外,视频流可以包含一些信息包(通常在流的开头),尽管有一些单独的数据流。因此,如果您想编写支持多种格式的代码,这不是最好的主意。
    猜你喜欢
    • 2015-12-30
    • 2014-02-24
    • 2023-03-10
    • 1970-01-01
    • 2014-10-15
    • 2019-06-28
    • 2014-05-30
    • 1970-01-01
    • 2021-06-05
    相关资源
    最近更新 更多