Что именно делает фильтр "setpts" в ffmpeg? - PullRequest
0 голосов
/ 07 октября 2019

Я искал очень долгое время, и везде, куда бы я ни посмотрел, это было нечто очевидное, общеизвестное. Что именно делает фильтр "setpts" в ffmpeg? Почему вы хотите сбросить его на ноль, например, setpts = PTS-STARTPTS? Спасибо.

Ответы [ 2 ]

1 голос
/ 07 октября 2019

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
...

Фильтры, которые работают с синхронизацией нескольких входовпо метке времени, то есть в оверлейном фильтре, фильтр наложит оверлейный вход с меткой времени 5.0 на основной вход с временем PTS 5.0. Если потоки имеют разные начальные PTS, это может привести к неожиданному выводу, поэтому временные метки сбрасываются, поэтому каждый поток начинается с 0. Конечно, если вы имеете в виду пользовательскую синхронизацию, вы должны соответствующим образом изменить выражение setpts.

Другая причина состоит в том, что когда поток имеет ненулевую начальную временную метку, ffmpeg может дублировать кадры в режиме -vsync cfr, чтобы заполнить пробел от временной метки 0 до этой начальной временной метки. Это относится только к нескольким сценариям.

0 голосов
/ 08 октября 2019

При обрезке значений вы часто можете столкнуться с проблемами, когда начало больше не с 0. Поэтому при использовании флагов -ss и -t вам может потребоваться установить значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...