Рейтинг:1

Использование ffmpeg для обрезки видео в нескольких точках

флаг cn

У меня есть видео, которое представляет собой футбольный матч. Я хотел бы сократить время перед игрой, в перерыве и, наконец, конец игры.

Общая длина клипа 1ч 51м или же 111м

В идеале разрезы и время следующие:

+------------+---------------+-------+
| Время начала | Время окончания | Продолжительность клипа |
+------------+---------------+-------+
| 1:30 | 47:30 | 47:30 |
| 53:00 | 100:00 | 47 |
+------------+---------------+-------+

Однако мое видео заканчивается на

ffmpeg -ss 00:01:30 -i Штатив_Камера.mp4 -t 00:47:30 -ss 00:53:00 -t 00:47:00 -c скопировать VideoClip.mp4
24601 avatar
флаг in
Вы рассматривали возможность использования такого инструмента, как `LosslessCut`, для выполнения этой задачи? См. [эту ссылку] (https://www.maketecheasier.com/extract-clips-video-losslesscut/?utm_source=newsletter&utm_medium=email&utm_campaign=07092020)
vanadium avatar
флаг cn
@ 24601 ffmpeg может сделать это отлично, и данная команда действительно делает это без потерь. Нужно найти правильные параметры команды, чтобы сделать это за один раз.
флаг cn
@vanadium вы правы. Я просто не знаю, когда и как! :/
llogan avatar
флаг jp
Насколько точными должны быть разрезы? Потому что если вы можете принять вырезание только по ключевым кадрам, то вы можете сделать это без перекодирования. См. [Проверка интервала ключевого кадра?] (https://stackoverflow.com/a/18088156/), чтобы увидеть частоту ключевого кадра.
флаг cn
На самом деле она не должна быть жесткой. Учитывая, что у меня много свободного времени по обе стороны от времени. Дело в том, что я не мог понять, как передать «2 разреза» одной команде FFMPEG.
andrew.46 avatar
флаг in
Некоторое направление здесь: https://superuser.com/questions/681885/how-can-i-remove-multiple-segments-from-a-video-using-ffmpeg
Рейтинг:2
флаг jp
  1. Делать ввод.txt содержащий метки времени (в секундах) для вырезания:

    файл 'input.mp4'
    точка 90
    аутпойнт 2850
    файл 'input.mp4'
    точка 3180
    аутпойнт 6000
    
  2. Бег ffmpeg объединиться с concat-демультиплексор:

    ffmpeg -f concat -i input.txt -c копировать output.mp4
    
  • Это будет потоковое копирование, поэтому повторного кодирования не происходит, что означает, что весь процесс будет быстрым, а качество будет сохранено. Однако по ключевым кадрам будут сделаны нарезки, так что это может быть недостаточно точно. Если требуется большая точность, вам придется использовать гораздо более медленный метод, такой как использование фильтров (a) trim, (a) setpts и concat, которые требуют повторного кодирования.

  • Если вы получаете рассинхронизацию аудио/видео, то получить временные метки ключевых кадров, используйте временные метки ключевых кадров в качестве указать, но прибавьте к каждому по 0,001 указать отметка времени в ввод.txt.

флаг cn
Спасибо :D Это работает отлично! Я должен спросить, это должен быть файл? Или я мог бы сделать это прямо в терминале?
llogan avatar
флаг jp
@JamieHutber Вроде того. См. [FFmpeg Wiki: Concatenate](http://trac.ffmpeg.org/wiki/Concatenate).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.