1

У меня 158 папок, каждая из которых содержит 5-15 видеофайлов, каждая из которых длится несколько минут. Я хотел бы объединить все видео в одно видео в папке и удалить остальные.

Папки названы даты в определенном году , с промежутками между ними 01.11 01.12 01.13 01.14 01.18 ... 01.28 , 02.01 и т.д.), И файлы в них имеют следующие имена:

ds_AAAAA_BB_CCC_480.mp4

Первый пробел (AAAAA) - это число, одинаковое для всех файлов в этой папке. Для папки 01.11 номер 03075 , и после этого он увеличивается на единицу для каждой папки.

Второй пробел (BB) - это порядок файлов от 01 до скольких файлов в этой папке.

Третий пробел (CCC) представляет собой набор из трех букв, который варьируется в зависимости от файла и может быть проигнорирован.

Для пары примеров первым файлом в первой папке (01.11) является ds_03075_01_nws_480.mp4 . Последний (седьмой) файл в четвертой папке (01.14) - ds_03078_07_zen_480.mp4 .

В идеале я хотел бы, чтобы новые файлы находились в отдельной папке (просто чтобы было легко удалять старые файлы) и назывались в формате, таком как 01_11.mp4 , 01_12.mp4 и т.д., Но при любом соглашении об именах было бы хорошо.

У кого-нибудь есть какие-либо предложения относительно того, как это сделать?

1 ответ1

2

В последнее время я объединял (объединял) видео и нашел этот ответ очень полезным. Для начала установите ffmpeg и убедитесь, что он на вашем пути.

Вы должны составить список файлов для каждого каталога, который состоит из текстового файла в этом формате:

file `file1.mp4`
file `file2.mp4`
file `file3.mp4`

Затем вы просто запускаете ffmpeg с этим синтаксисом:

ffmpeg -f concat -i filelist.txt -c copy merged.mp4

Я создавал их вручную для нескольких файлов, но для 158 папок вам понадобится автоматизация. Подход, который я бы выбрал, вероятно, использует команду FOR в командной строке Windows. Вы можете генерировать списки файлов, используя что-то вроде:

for /r %f in (*.mp4) do echo file '%~nxf' >>%~dpf\concat.txt

Это рекурсивно (/r) сканирует файлы MP4 в текущей папке и всех подпапках и выводит (печатает) имя и расширение (это бит nx) в отдельный файл в каждой подпапке (бит dp получает букву диска и путь ). Бит >> заставляет его добавить имя файла в список, поэтому, если вы запустите его дважды, вы получите дублированный список. Поэтому удалите все файлы concat.txt перед запуском команды.

Затем вы хотите запустить ffmpeg для каждого из них. Вам понадобится что-то вроде:

for /d %f in (*) do cd %~ff & ffmpeg -f concat -i concat.txt -c copy ..\merged\%~nf.mp4

Для каждого каталога (/d) перейдите в него (cd) и (&) запустите ffmpeg, сгенерировав файл результатов, который находится в папке "объединенные" в папке верхнего уровня и назван в честь имени папки.

Не проверено, поэтому используйте на свой страх и риск. (Хотя это ничего не удалит и не перезапишет без запроса.)

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