Как я могу ускорить время обработки при использовании FFmpeg?

Вопрос или проблема

Я использую FFmpeg через пакетный файл для ремукса моих видео из .mkv в .mp4, но он продолжает делать это со скоростью 0.6x или 0.3x.

Поскольку это огромные файлы, длительностью от 1 часа до 10 часов, мне нужно, чтобы это происходило достаточно быстро, особенно так как у меня их много. Есть ли способ ускорить время обработки?

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

for %%i in (*.mkv) do ffmpeg -i "%%i" -map 0:v -vcodec libx265 -crf 24 -map 0:a "%%~ni.mp4"

Есть ли какие-нибудь параметры, чтобы сохранить самое высокое качество для аудио и видео, при этом сведя время обработки и размер файла к минимуму?

Ответ или решение

Чтобы ускорить процесс обработки видео с помощью FFmpeg, важно оптимизировать как команды, так и параметры кодека. В вашем случае задача заключается в ремаршировании видео из формата .mkv в .mp4. Давайте рассмотрим несколько подходов, которые помогут вам достичь более высокой скорости обработки, сохраняя при этом качество видео и аудио.

Оптимизация команды FFmpeg

  1. Уберите кодирование видеопотока (если это возможно):
    Поскольку вы просто ремаршируете, и если ваш оригинальный видеосигнал уже соответствует требованиям формата .mp4, стоит рассмотреть возможность копирования видеопотока без его перекодирования. Это можно сделать с помощью параметра -c copy.

    for %%i in (*.mkv) do ffmpeg -i "%%i" -c copy "%%~ni.mp4"

    Это существенно ускорит процесс, так как позволит избежать затрат времени на кодирование.

  2. Используйте аппаратное кодирование:
    Если ваше оборудование поддерживает аппаратное кодирование (например, через NVIDIA NVENC или Intel QuickSync), используйте соответствующие кодеки, что может значительно ускорить процесс обработки. Например, для NVIDIA:

    for %%i in (*.mkv) do ffmpeg -i "%%i" -c:v h264_nvenc -preset fast -b:v 5M -map 0:a "%%~ni.mp4"

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

  3. Установите подходящий уровень CRF:
    Параметр -crf (Constant Rate Factor) определяет качество выхода. Значение от 18 до 23 обычно считается хорошим компромиссом между качеством и размером файла. Вы можете экспериментировать с более высоким значением (например, -crf 26), чтобы уменьшить размер файла и повысить скорость обработки.

  4. Масштабирование и уменьшение разрешения:
    Если качество не является критичным, рассмотрите возможность уменьшения разрешения (например, с 4K на 1080p), чтобы ускорить процесс и снизить размер выходного файла:

    for %%i in (*.mkv) do ffmpeg -i "%%i" -vf "scale=1280:-1" -c:v h264_nvenc -preset fast -b:v 5M -map 0:a "%%~ni.mp4"

    Используя scale=1280:-1, вы устанавливаете ширину, а высота рассчитывается автоматически, чтобы сохранить пропорции.

  5. Параллельная обработка:
    Если ваш компьютер имеет многоядерный процессор, вы можете запустить несколько экземпляров FFmpeg в параллельных потоках, чтобы ускорить общий процесс.

    Пример запуск нескольких процессов в PowerShell:

    Get-ChildItem *.mkv | ForEach-Object { ffmpeg -i $_.FullName -c copy "$($_.BaseName).mp4" }

Итог

Для ускорения процесса работы с FFmpeg при ремаршировании видео из формата .mkv в .mp4, постарайтесь минимизировать количество операций, выполняемых по видео и аудио потокам. Попробуйте упростить процесс путем копирования потоков без перекодирования, используя аппаратное кодирование и устанавливая разумные параметры сжатия. Экспериментируйте с разрешениями и CRF, чтобы найти оптимальный баланс между качеством, размером файла и скоростью обработки.

Использование данных рекомендаций позволит вам значительно сократить время обработки, что очень важно в условиях большой загрузки видеофайлов.

Оцените материал
Добавить комментарий

Капча загружается...