длительность и точки входа демультиплексирования конкатенации ffmpeg

длительность и точки входа демультиплексирования конкатенации ffmpeg

У меня много клипов h265, все по шесть секунд. Теперь я хочу объединить их вместе с помощью ffmpeg (предпочтительно без перекодирования), но использовать только части со второй по четвертую секунду каждого клипа. Я делаю это с помощью демультиплексора concat, но как только я указываю точку входа и длительность, мои результаты становятся довольно случайными. Он не выдает никаких ошибок и создает новые клипы, но длина и точки входа совершенно неверны.
Поскольку мои клипы h265 и довольно короткие, моим первым подозрением было, что просто нет ключевых кадров, которые он мог бы редактировать, поэтому я попробовал то же самое с клипами Quicktime Prores (внутрикадровое кодирование) – что дало мне такие же странные результаты. Поэтому мне интересно, может ли проблема быть в чем-то другом?

Вот мой код (вызов из Python):

subprocess.call(['ffmpeg', '-f', 'concat', '-safe', '0', '-i', 'concatlist.txt', '-c', 'copy', '-hide_banner', '-loglevel', 'error', output])

Это пример моего (автоматически сгенерированного) текстового файла:

file videos_squares/vt_5Hn8lze0G8A.mp4
inpoint 2.0
duration 2.0
file videos_squares/vt_J8DuC93hLq0.mp4
inpoint 2.0
duration 2.0
file videos_squares/vt_u8twUOpagZs_seg3.mp4
inpoint 2.0
duration 2.0

решение1

Чтобы ограничить длительность с помощью демультиплексора concat, установите outpoint(со значением inpoint + предполагаемая длительность).

Ключевое durationслово неудачно названо и по сути устанавливает смещение для начальной временной метки следующего клипа относительно начальной временной метки текущего клипа. Но оно не ограничивает вывод текущего клипа.

Связанный контент