Я никогда не смогу заставить работать решение ptQa, главным образом потому, что никогда не мог понять, что означают ошибки из фильтров или как их исправить. Мое решение кажется немного более грубым, потому что оно может оставить беспорядок, но если вы добавляете его в сценарий, очистка может быть автоматизирована. Мне также нравится этот подход, потому что если на шаге 4 что-то пойдет не так, вы закончите с шагами 1-3, поэтому восстановление после ошибок будет немного более эффективным.
Основная стратегия заключается в использовании -t
и -ss
для получения видео каждого сегмента, который вы хотите, а затем объедините все части для вашей окончательной версии.
Скажем, у вас есть 6 сегментов ABCDEF каждые 5 секунд, и вы хотите A (0-5 секунд), C (10-15 секунд) и E (20-25 секунд), и вы сделаете следующее:
ffmpeg -i abcdef.tvshow -t 5 a.tvshow -ss 10 -t 5 c.tvshow -ss 20 -t 5 e.tvshow
или
ffmpeg -i abcdef.tvshow -t 0:00:05 a.tvshow -ss 0:00:10 -t 0:00:05 c.tvshow -ss 0:00:20 -t 0:00:05 e.tvshow
Это сделает файлы a.tvshow, c.tvshow и e.tvshow. Он -t
говорит, как долго длится каждый клип, поэтому, если c составляет 30 секунд, вы можете передать 30 или 0:00:30. -ss
Вариант говорит , как далеко , чтобы пропустить в исходном видео, так что всегда относительно начала файла.
Затем, когда у вас есть куча видеофайлов, я создаю такой файл ace-files.txt
:
file 'a.tvshow'
file 'c.tvshow'
file 'e.tvshow'
Обратите внимание на «файл» в начале и имя файла после него.
Тогда команда:
ffmpeg -f concat -i ace-files.txt -c copy ace.tvshow
Это объединяет все файлы abe-files.txt
вместе, копируя их аудио и видео кодеки, и создает файл, ace.tvshow
который должен быть просто разделами a, c и e. Тогда только не забудьте удалить ace-files.txt
, a.tvshow
, c.tvshow
и e.tvshow
.
Отказ от ответственности : я понятия не имею, насколько (не) эффективно это по сравнению с другими подходами с точки зрения, ffmpeg
но для моих целей это работает лучше. Надеюсь, это кому-нибудь поможет.