Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6702
Благодарности: 1574

Профиль | Отправить PM | Цитировать


Вот автоматизированное решение на базе powershell + ffmpeg.
Безо всяких выделений руками, просто надо указать путь к каталогу с файлами и расширение в двух первых переменных.
Код: Выделить весь код
# Каталог с видеофайлами
$path = "C:\temp\in\mencoder"
# Расширение видеофайлов, которые нужно склеить
$ext = 'mp4'
# Список всех файлов без уже склеенных (*-all) + индексы
$index = (dir "$path\*.$ext" -Exclude "*-all.$ext" -OutVariable allVideos |? basename -match '-0000$').basename -replace '0000$'
# Кол-во индексов
$ic = $index.count
Write-Host -fore Cyan "Нашлось индексов: $ic"
# Обработка каждого индекса
for ($c = 0;$c -lt $ic;$c++) {
    $i = $index[$c]
    try {
        Write-Host -fore Yellow "Обработка индекса `"$i`" ($($c+1) из $ic)..."
        # Текстовый список для ffmpeg
        ($allVideos |? basename -match "^$i" -OutVariable list).fullname |% {"file '$_'"} |Out-File "$path\list.txt" -Encoding default
        # Объединение файлов на основе текстового списка
        & ffmpeg -hide_banner -loglevel error -y -f concat -safe 0 -i "$path\list.txt" -c copy "$path\${i}all.$ext"
        Write-Host -fore Green "Индекс `"$i`" успешно обработан (файлов: $($list.count))"
    }
    catch {
        Write-Host -fore Red "Ошибка обработки индекса `"$i`"!"
    }
}
pause
Пример работы. Вот каталог с файлами:
Код: Выделить весь код
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          02.04.2025    12:54        7336387 aaaaa-0000.mp4
-a---          02.04.2025    12:54        5794553 aaaaa-0001.mp4
-a---          02.04.2025    12:54        5418298 aaaaa-0002.mp4
-a---          02.04.2025    12:54        6730884 aaaaa-0003.mp4
-a---          02.04.2025    12:54        3357691 aaaaa-0004.mp4
-a---          02.04.2025    12:54        2696222 aaaaa-0005.mp4
-a---          02.04.2025    12:54        2821749 aaaaa-0006.mp4
-a---          02.04.2025    12:54       11963415 aaaaa-0007.mp4
-a---          02.04.2025    12:54        4725513 aaaaa-0008.mp4
-a---          02.04.2025    12:54        3767305 aaaaa-0009.mp4
-a---          02.04.2025    12:54       10368113 aaaaa-0010.mp4
-a---          02.04.2025    12:54        4522590 aaaaa-0011.mp4
-a---          02.04.2025    12:54        3663561 aaaaa-0012.mp4
-a---          02.04.2025    12:54        3923716 aaaaa-0013.mp4
-a---          02.04.2025    12:54        9504516 aaaaa-0014.mp4
-a---          02.04.2025    12:54        2480729 aaaaa-0015.mp4
-a---          02.04.2025    12:54        7336387 bdfsj-0000.mp4
-a---          02.04.2025    12:54        5794553 bdfsj-0001.mp4
-a---          02.04.2025    12:54        5418298 bdfsj-0002.mp4
-a---          02.04.2025    12:54        6730884 bdfsj-0003.mp4
-a---          02.04.2025    12:54        3357691 bdfsj-0004.mp4
-a---          02.04.2025    12:54        2696222 bdfsj-0005.mp4
-a---          02.04.2025    12:54        2821749 bdfsj-0006.mp4
-a---          02.04.2025    12:54       11963415 bdfsj-0007.mp4
-a---          02.04.2025    12:54        7336387 fhoer-0000.mp4
-a---          02.04.2025    12:54        5794553 fhoer-0001.mp4
-a---          02.04.2025    12:54        5418298 fhoer-0002.mp4
-a---          02.04.2025    12:54        6730884 fhoer-0003.mp4
-a---          02.04.2025    12:54        3357691 fhoer-0004.mp4
-a---          02.04.2025    12:54        2696222 fhoer-0005.mp4
-a---          02.04.2025    12:54        2821749 fhoer-0006.mp4
-a---          02.04.2025    12:54       11963415 fhoer-0007.mp4
-a---          02.04.2025    12:54        4725513 fhoer-0008.mp4
-a---          02.04.2025    12:54        3767305 fhoer-0009.mp4
-a---          02.04.2025    12:54       10368113 fhoer-0010.mp4
-a---          02.04.2025    12:54        4522590 fhoer-0011.mp4
-a---          02.04.2025    12:54        3663561 fhoer-0012.mp4
-a---          02.04.2025    12:54        3923716 fhoer-0013.mp4
-a---          02.04.2025    12:54        9504516 fhoer-0014.mp4
-a---          02.04.2025    12:54        2480729 fhoer-0015.mp4
-a---          02.04.2025    12:54        5794553 geltt-0001.mp4
-a---          02.04.2025    12:54        5418298 geltt-0002.mp4
-a---          02.04.2025    12:54        6730884 geltt-0003.mp4
-a---          02.04.2025    12:54        3357691 geltt-0004.mp4
-a---          02.04.2025    12:54        2696222 geltt-0005.mp4
-a---          02.04.2025    12:54        2821749 geltt-0006.mp4
-a---          02.04.2025    12:54       11963415 geltt-0007.mp4
-a---          02.04.2025    12:54        4725513 geltt-0008.mp4
-a---          02.04.2025    12:54        3767305 geltt-0009.mp4
-a---          02.04.2025    12:54       10368113 geltt-0010.mp4
-a---          02.04.2025    12:54        4522590 geltt-0011.mp4
-a---          02.04.2025    12:54        3663561 geltt-0012.mp4
-a---          02.04.2025    12:54        3923716 geltt-0013.mp4
-a---          02.04.2025    12:54        9504516 geltt-0014.mp4
-a---          02.04.2025    12:54        2480729 geltt-0015.mp4
Запускаем скрипт. Файлы "geltt-" не были обработаны, т. к. нет файла с номером 0000:
Код: Выделить весь код
Нашлось индексов: 3
Обработка индекса "aaaaa-" (1 из 3)...
Индекс "aaaaa-" успешно обработан (файлов: 16)
Обработка индекса "bdfsj-" (2 из 3)...
Индекс "bdfsj-" успешно обработан (файлов: 8)
Обработка индекса "fhoer-" (3 из 3)...
Индекс "fhoer-" успешно обработан (файлов: 16)
Результат:
Код: Выделить весь код
dir *all.mp4

    Directory: C:\temp\in\mencoder

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          11.07.2025    10:50       88933372 aaaaa-all.mp4
-a---          11.07.2025    10:50       46050221 bdfsj-all.mp4
-a---          11.07.2025    10:50       88933372 fhoer-all.mp4

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 11-07-2025 в 21:44. Причина: забыл указать полный путь к видеофайлам

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:04, 11-07-2025 | #12