Вот кстати пример того что предложил хваленый ChatGPT как я уж не извращался с объяснением того что необходимо но даже разбивая ему задачу на очень маенкие этапы или как в ТЗ детано описывая необходимое, результат был одинаков предложенный им код не работал не в каком виде.
Это одна из вариаций того что я предлагал но суть одна даже простую задачу с построением файлов из заданной папки в один длинный он не справился.
@echo off
setlocal enabledelayedexpansion
set DIR_A=<путь к директории A>
set DIR_B=<путь к директории B>
set DIR_C=<путь к директории C>
for %%A in ("%DIR_A%\*.mp3") do (
echo Обрабатываем файл: %%~nxA
REM Определяем продолжительность файла и округляем до ближайшей половины секунды
for /f "usebackq delims=" %%B in (`sox --i -D "%%A"`) do set /a "duration=round(2*%%B)/2"
REM Ищем произвольные файлы из директории B, чья суммарная продолжительность меньше или равна
REM или чуть больше округленной продолжительности обрабатываемого файла из директории A
set background_files=
set total_duration=0
for /f "tokens=* delims=" %%B in ('dir /b "%DIR_B%\*.mp3"') do (
for /f "usebackq delims=" %%C in (`sox --i -D "%DIR_B%\%%B"`) do set /a "file_duration=round(2*%%C)/2"
set /a "new_total_duration=total_duration+file_duration"
if !new_total_duration! leq !duration! (
set background_files=!background_files! "%DIR_B%\%%B"
set total_duration=!new_total_duration!
)
)
if defined background_files (
REM Смешиваем файлы из директории B в единый фоновый трек и сохраняем во временный файл
set background_file=%DIR_C%\%%~nxA_temp_background.mp3
sox %background_files% -v -22 "%background_file%"
REM Если длина фонового трека превысила длину обрабатываемого файла из директории A,
REM обрезаем и приглушаем его
if !total_duration! gtr !duration! (
sox "%background_file%" "%background_file%" trim 0 !duration! fade t 0 !duration! 20
)
REM Смешиваем аудиокнигу из директории A и фоновый трек из директории C и сохраняем результат
set output_file=%DIR_C%\%%~nxA
sox -m -v 1 "%%A" -v 1 "%background_file%" -v 0.5 "%output_file%"
echo Создан файл: %output_file%
) else (
echo Не найдено подходящих файлов для создания фоновой музыки.
)
REM Очищаем временные файлы
del /q "%DIR_C%\%%~nxA_temp*.mp3"
)
Этот пример конечно для SOX но суть также любые предлагаемые варианты не работали ни в каком виде, я даже переименовывал файлы в 1.mp3 2… 3… предполагая что дело в экранировании пробелов и других символов, но результат не менялся список передаваемый в FFMPEG не воспринимался не в каком виде.
Вот я и решил спросить у реальных программистов.