Как использовать аппаратное ускорение с FFMPEG для обрезки и конкатенации

Я запускаю FFMPEG на ноутбуке с Windows 10 (64-разрядная версия) с процессором Intel i3 (6-го поколения) и графическим процессором AMD R5 M430.

Я снял много видео в недавней поездке. В общей сложности они составляют более 100 часов. Каждое видео занимает минимум 2-3 ГБ и длится не менее 1 часа.

Мне нужно обрезать 2-4 видео, а затем объединить их в один файл. Эту операцию необходимо выполнить для всех этих видео.

Прямо сейчас я обрезаю отдельные видео, используя следующую команду:

ffmpeg.exe -i "INPUT_VIDEO" -ss START_TIME -to END_TIME -c copy "OUTPUT_VIDEO"

А затем я объединяю видео с помощью этой команды:

ffmpeg.exe -f concat -safe 0 -i VideosToBeConcatenated.txt -c copy "CONCATENATED_OUTPUT_VIDEO"

где VideosToBeConcatenated.txtсодержит имена файлов видео для объединения.

Выполнение этих команд в одном командном окне дает мне скорость в 20-25 раз. Запуск их в двух командных окнах одновременно снижает скорость до 10-12x, а также вызывает отставание / зависание моей системы.

Есть ли способ, которым я мог бы использовать свой графический процессор для ускорения этой операции? Скажем, используя Quicksync i3 или AMF/VCE R5?

Я попытался использовать -hwaccel dxva2вышеупомянутые команды следующим образом:

ffmpeg.exe -hwaccel dxva2 -i "INPUT_VIDEO" -ss START_TIME -to END_TIME -c copy "OUTPUT_VIDEO"

и

ffmpeg.exe -hwaccel dxva2 -f concat -safe 0 -i VideosToBeConcatenated.txt -c copy "CONCATENATED_OUTPUT_VIDEO"

Но прироста скорости не замечаю.

Я также установил ffmpeg.exeи cmd.exeна «Высокая производительность» в настройках AMD Switchable Graphics. Но встроенный переключаемый графический монитор предполагает, что ни один из процессов не использует dGPU.

Есть ли способ использовать свои графические процессоры (i3 Quicksync или R5 AMF/VCE) для ускорения этих операций без ущерба для качества выходного видео ?

[Редактировать:] Я пытаюсь разобраться в документации Quicksync FFMPEG , но она слишком зрелая для такого любителя, как я.

Ответы (1)

Поскольку вы используете -c copyв своих командах, декодирование, фильтрация или кодирование не происходит, поэтому аппаратное ускорение вообще не имеет значения. Основным узким местом является дисковый ввод-вывод. На обычном внутреннем жестком диске (с процессором 3-го поколения) я получаю скорость 400x, поэтому я подозреваю, что вы читаете или записываете на внешний диск. Или ваш внутренний диск может быть медленным, иметь меньший кеш. Наибольшее ускорение будет получено при записи на другой диск, а не на диск, на котором находятся входные данные, причем в идеале оба диска должны быть внутренними.