gpt4 book ai didi

ffmpeg - ffmpeg 的 "setpts"过滤器究竟是做什么的?

转载 作者:行者123 更新时间:2023-12-03 14:16:30 27 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为 on-topic对于堆栈溢出。


8 个月前关闭。


社区在 8 个月前审查了是否重新打开此问题并将其关闭:

原始关闭原因未解决






Improve this question




我一直在寻找很长一段时间,我所看到的每一个地方都好像它是显而易见的,一个常识。 ffmpeg 的“setpts”过滤器究竟做了什么?为什么要使用 setpts=PTS-STARTPTS 将其重置为零? ?谢谢。

最佳答案

PTS 代表演示时间戳。见 What is video timescale, timebase, or timestamp in ffmpeg?

setpts 过滤器评估表达式并将值分配为它正在处理的当前帧的时间戳

例如setpts=2*N+5/TB其中 N 是从 0 开始的帧索引,TB 是流的时基。假设它是 1/1000,所以每个 PTS 单位是 1 毫秒。

因此,对于每一帧,它会如下所示,

N       expression        New PTS    New PTS time
0 2*0+5/(1/1000) 5000 5.000 sec
1 2*1+5/(1/1000) 5002 5.002 sec
2 2*2+5/(1/1000) 5004 5.004 sec
...

在多个输入上工作的过滤器按时间戳同步,即在覆盖过滤器中,过滤器将在 PTS 时间 5.0 的主输入上覆盖时间戳为 5.0 的覆盖输入。如果流具有不同的起始 PTS,这可能会导致意外输出,因此会重置时间戳,以便每个流从 0 开始。当然,如果您有自定义同步,那么您将相应地修改 setpts expr。

另一个原因是当流的起始时间戳不为零时,ffmpeg 可能会在 -vsync cfr 中重复帧。模式来填补从时间戳 0 到初始时间戳的间隙。这仅在少数情况下相关。

关于ffmpeg - ffmpeg 的 "setpts"过滤器究竟是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261344/

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