我找了很长时间,无论我看到哪里,它都像是显而易见的东西,是常识。ffmpeg 的“setpts”过滤器究竟做了什么?为什么要使用 将其重置为零setpts=PTS-STARTPTS?谢谢。
Gya*_*yan 10
PTS 代表演示时间戳。请参阅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
...
Run Code Online (Sandbox Code Playgroud)
通过时间戳同步多个输入的过滤器,即在覆盖过滤器中,过滤器会将时间戳为 5.0 的覆盖输入覆盖在 PTS 时间为 5.0 的主输入上。如果流具有不同的起始 PTS,这可能会导致意外输出,因此将重置时间戳,以便每个流从 0 开始。当然,如果您有自定义同步,那么您将相应地修改 setpts expr。
另一个原因是,当流具有非零的起始时间戳时,ffmpeg 可能会在-vsync cfr模式中复制帧以插入从时间戳 0 到该初始时间戳的间隙。这仅在少数情况下相关。
| 归档时间: |
|
| 查看次数: |
8021 次 |
| 最近记录: |