1

Я хочу присоединиться к набору видеоклипов (со звуком), используя несколько коротких переходов (в идеале кроссфейд), простым, автоматизированным и эффективным способом.

IE:

ClipA ---> ClipB --> ClipC --> ClipD
[aaaaaaaa][bbbbbbbb][cccccccc][dddddddd]
(--> indicate crossfades, not to scale!)

Чтобы уточнить:

  • по прямому, в идеале было бы включать использование «стандартные» инструментов (то есть те , которые я уже знаком с такой ffmpeg но менее известные инструменты , как melt определенно квалифицировать, и я готов исследовать новые горизонты , как MoviePy)
  • под автоматизированным я подразумеваю что-то, что может быть параметризовано и помещено в скрипт python/shell/etc
  • под эффективным я имею в виду быстрое кодирование или минимизацию перекодирования

В настоящее время я использую python и ffmpeg чтобы нарезать видеофайл уже в Matroska/h264/aac, используя параметр потокового копирования (очень быстро) на основе временных кодов в текстовом файле. Затем melt последовательно струны эти клипы один за другим с помощью короткого яркостной (склейка) переходов (очень медленно из - за повторного кодирования всей последовательности).

Мне кажется, что из этих длинных видеоклипов нужно обработать и перекодировать всего несколько секунд - сами переходы. Остальное можно скопировать. Есть ли уже существующий / интуитивный способ сделать это? Мой наивный подход состоял бы в том, чтобы дополнительно нарезать клипы на подклипы, используя melt для создания переходов и используя фильтр concat для склеивания беспорядка.

Например:

ClipA1 ClipA2 ClipB1 ClipB2 ClipB3 ClipC1 ClipC2 ClipC3 ClipD1 Clip D2
[aaaaaaa] + [a][b] + [bbbbbb] + [b][c] + [cccccc] + [c][d] + [ddddddd]
(+ indicates concat-ing of subclips; [x][y] indicates a short xfade from x to y)

Тем не менее, я не тороплюсь списывать со счетов то, что может быть дураком, поскольку я ожидаю, что связанные с melt/ffmpeg промахи касаются времени сокращений и синхронизации звука; и я не хочу пропустить разделы видео или аудио из-за размещения I-кадра или что там у вас. Плюс ко всему, у меня такое чувство, что я не первый, кто сталкивается с этим, поэтому мне любопытно, как эти умнее, чем я, решили это - мои решения имеют тенденцию к наивности, как я говорю!

Надеюсь, это было ясно. Ура за чтение и заранее спасибо!


Для контекста, я намерен превратить неотредактированное видео в прямом эфире из видеоигры в интересное / "полезное" видео; это исключает скучную загрузку, сортировку проблем с подключением и т. д. Но также можно выделить основные моменты - монтаж для демонстрации прогресса. Поскольку это то, что теоретически будет появляться каждый раз, когда появляются новые кадры, я очень заинтересован в том, чтобы сделать это наиболее эффективным (упреждающе ленивым) способом.

1 ответ1

2

У меня не было времени на его тестирование, но это должно сработать, если вы хотите использовать MoviePy:

from moviepy.editor import *

clips = [ VideoFileClip("vid1.mp4"),
          VideoFileClip("vid2.mp4"),
          VideoFileClip("vid3.mp4"), ... ]


fade_duration = 1 # 1-second fade-in for each clip
clips = [clip.crossfadein(fade_duration) for clip in clips]

final_clip = concatenate_videoclips(clips, padding = -fade_duration)

# You can write any format, in any quality.
final_clip.write_videofile("final.mp4", bitrate="5000k")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .