ffmpeg — обрезка нескольких видео одновременно без перекодирования?

ffmpeg — обрезка нескольких видео одновременно без перекодирования?

У меня есть папка, в которой каждый файл mp4 требует обрезания первых 10 минут. Я использую следующее для индивидуальной обрезки, но это занимает слишком много времени, чтобы делать это по одному

ffmpeg -i "untrimmed.mp4" -ss 00:10:00 -c copy "trimmmed.mp4"

Есть ли простой способ обрезать несколько видеофайлов одновременно?

Редактировать - с тех пор я нашел обходной путь в PowerShell - пример с использованием 11 минут

Get-ChildItem -Filter *.mp4 | ForEach -Process { ffmpeg -i $_ -ss 00:11:00 -c copy ($_.BaseName + '_Trimmed.mp4')}

решение1

Эта концепция называется пакетной обработкой, а метод зависит от системы, поскольку ffmpeg сам по себе не обладает такой возможностью.

В Windows вы можете использовать , ForFilesчтобы найти файлы, соответствующие шаблону (например, *.mp4), и /Cпереключатель, чтобы запустить команду ffmpeg для результатов.

В Linux и MacOS командная строка findделает то же самое с помощью переключателя -exec.

В любом случае вы можете использовать циклы, но они слишком усложняют задачу, когда это все, что вам нужно.

Для примера Linux эта команда будет искать в текущей папке .файлы с именами, соответствующими *.mp4шаблону, затем выполнять ffmpeg для каждого результата {}, выводя eg untrimmed.mp4_trim.mp4(вы же можете с этим работать, верно?). Экранирование ;в конце закрывает -execпереключатель:

find . -iname '*.mp4' -exec ffmpeg -i '{}' -ss 00:10:00 -c copy '{}_trim.mp4' \;

Связанный контент