Использование NVENC в FFmpeg
Аппаратное ускорение может значительно ускорить кодирование видео по сравнению с программными кодировщиками на базе процессора. Один из самых популярных аппаратных кодировщиков — NVENC от NVIDIA. Он доступен на большинстве современных видеокарт NVIDIA и может использоваться в FFmpeg.
🔍 Шаг 1. Проверьте доступные аппаратные ускорители
Заголовок раздела «🔍 Шаг 1. Проверьте доступные аппаратные ускорители»ffmpeg -hwaccelsИщите в списке cuda или nvdec.
🧩 Шаг 2. Проверьте доступные кодировщики
Заголовок раздела «🧩 Шаг 2. Проверьте доступные кодировщики»ffmpeg -encoders | findstr h264В выводе ищите h264_nvenc.
⚙️ Шаг 3. Проверьте параметры кодировщика
Заголовок раздела «⚙️ Шаг 3. Проверьте параметры кодировщика»ffmpeg -h encoder=h264_nvenc▶️ Шаг 4. Пример базового кодирования с NVENC
Заголовок раздела «▶️ Шаг 4. Пример базового кодирования с NVENC»ffmpeg -hwaccel cuda -i source.mp4 -c:v h264_nvenc -cq 23 -r 30 encoded.mp4-
-hwaccel cuda— включает аппаратное ускорение CUDA для декодирования. -
-c:v h264_nvenc— кодирует видео с помощью NVENC (аппаратный видеокодировщик NVIDIA). -
-cq 23— устанавливает уровень качества (похоже на-crfвx264, но шкала другая). -
-r 30— задаёт частоту кадров на выходе 30 кадров в секунду.
🚀 Продвинутый пример
Заголовок раздела «🚀 Продвинутый пример»ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i ${i} \-c:v h264_nvenc -profile:v high -level 4.0 -preset p7 \-b:v 0 -cq 23 -c:a copy ${o}-hwaccel_output_format cuda — декодирование и хранение кадров в памяти видеокарты (избегает передачи по PCIe).
-profile:v high -level 4.0 — устанавливает профиль H.264, подходящий для 1080p.
-preset p7 — один из самых медленных, но качественных пресетов NVENC.
-b:v 0 -cq 23 — используется режим постоянного качества (CQ), где cq=23 — баланс между качеством и размером файла.
-c:a copy — копирует аудиопоток без перекодирования.
ℹ️ Советы
Заголовок раздела «ℹ️ Советы»- NVENC быстрее программного кодирования на процессоре, но качество может быть немного ниже.
- Нет полноценной поддержки двухпроходного кодирования и точного контроля битрейта.
- Поддержка NVENC зависит от вашей модели видеокарты.