1

Эта проблема

У меня есть папка, содержащая примерно 1000 видеофайлов .avi, которые следует разделить на фрагменты фильма длиной 1 секунда или, в качестве альтернативы, вырезать в определенной точке (например, от 7 секунд до 8 секунд) до длины 1 секунды. Эти пленочные ролики содержат движущиеся частицы, а программа, которую я использую для измерения скорости этих частиц, требует 1-секундных пленочных клипов. Начало и конец файлов .avi повреждены, поэтому я хочу взять 1-секундный клип где-то посередине. Я хочу сохранить имена файлов, так как они являются ссылками на образцы видео, которые я взял. Я работаю над Windows 7 и не имею никакого опыта программирования (кроме R), поэтому относитесь ко мне как к новичку.

Ранние испытания

Я долго пытался найти решение этой проблемы. В первый раз, когда я сделал это, я вручную вырезал около 1000 клипов с помощью Final Cut Pro. Это заняло у меня пару дней, но у меня нет доступа к программному обеспечению. Во всяком случае, я решил, что должно быть лучшее решение. Я пытался понять VirtualDub, но был ошеломлен и сдался. Теперь я искал, может ли FFmpeg быть решением. Я почти уверен, что это возможно, но я снова поражен. Я нашел этот скрипт BASH и ответ @ evilsoup на этот вопрос. Если бы мне удалось объединить эти два, это могло бы сработать. У меня так много вопросов об этом процессе, что лучше держать его сжатым:

Как объединить эти два скрипта (расщепление и петли) в FFmpeg под Windows 7?

(т.е. я могу использовать скрипт BASH под Windows? Если да, то как?)

1 ответ1

3

Вам не нужен сложный сценарий.

Этот простой цикл Bash возьмет каждый файл .avi , пропустит 5 секунд видео, вырезает из него одну секунду (-t 1) и запишет в -cut.avi . Это скопирует видео поток и откажется от аудио.

for i in *.avi; do ffmpeg -ss 5 -i "$i" -c:v copy -an -t 1 "${i%.avi}-cut.avi"; done

Вы можете заменить "${i%.avi}-cut.avi" с "output/$i" , чтобы записать выходные файлы в папку output , а не без изменения их имя.

Вы можете использовать Bash на Windows с Cygwin, но этот цикл должен быть легко переведен на родной для Windows (если кто-то знает это, не стесняйтесь редактировать этот пост).

Примечания к видео:

  • FFmpeg доступен как статическая сборка для всех основных ОС - его можно установить, просто распаковав загруженный архив.
  • Если вы хотите более точную начальную точку для резки, подумайте о том, чтобы поместить -ss позади -i "$i" .
  • Если видеофайлы повреждены в начале, и FFmpeg не может декодировать ввод, это может не сработать вообще.

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