FFmpeg с аппаратным ускорением NVIDIA GPU

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

Добрый день. Мне нужно записать звук и изображение из игры с использованием NVIDIA cuda, но я не знаю, как одновременно записывать звук с помощью ffmpeg. Я использую RTX 3050 и Windows 11 pro.

Пробую использовать команду

ffmpeg -y -fflags +genpts -init_hw_device d3d11va -filter_complex “ddagrab=0:framerate=60:video_size=3840×2160” -c:v h264_nvenc -y -f mp4 “out.mp4”

Эта команда работает отлично. Я могу получить полное 4K разрешение без пропусков кадров, но как добавить звук к видео на лету?

Мой вопрос отличается от вопроса на Запись экрана с помощью ffmpeg, потому что я использую -init_hw_device d3d11va и ddagrab, что дает большое преимущество, так как мой процессор простаивает во время работы.

start ffmpeg -y -fflags +genpts -init_hw_device d3d11va -filter_complex “ddagrab=0:framerate=60:video_size=3840×2160” -c:v h264_nvenc -y -f mp4 “out.mp4″ start ffmpeg -y -f dshow -i audio=”virtual-audio-capturer” out.wav

но были созданы два несинхронизированных файла out.mp4 и out.wav. Может быть, какой-то более опытный пользователь сможет исправить это, как вы упомянули, на one_video.mp4 на лету.

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

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

Шаги для записи видео и звука в одном файле при помощи FFmpeg с использованием NVIDIA GPU:

  1. Поддержка аппаратного ускорения: Вы уже используете -init_hw_device d3d11va и h264_nvenc, что позволяет эффективно использовать ваш GPU (RTX 3050) для кодирования видео, освобождая CPU от лишней нагрузки. Это отличный выбор для достижения высокого качества записи без пропуска кадров.

  2. Запись звука: Чтобы записать звук одновременно с видео, вам необходимо добавить подходящий аудио-вход в вашу команду FFmpeg. Использование dshow на Windows является правильным подходом для захвата звука.

  3. Пример команды:

    ffmpeg -y -fflags +genpts -init_hw_device d3d11va -filter_complex "ddagrab=0:framerate=60:video_size=3840x2160" \
    -c:v h264_nvenc -f dshow -i audio="Ваш источник аудио" \
    -c:a aac -b:a 192k -shortest -f mp4 "one_video.mp4"

    В этом примере:

    • -c:a aac -b:a 192k используется для кодирования аудио с применением кодека AAC с битрейтом 192 кбит/с, который оптимизирован для большинства игровых записей.
    • -shortest гарантирует, что видео не будет длиннее самого короткого потока из видео или аудио, что может помочь избежать проблем с синхронизацией.
  4. Поиск источника аудио: Чтобы определить правильный источник аудио для использования с -i audio="Ваш источник аудио", вы можете выполнить ffmpeg -list_devices true -f dshow -i dummy для получения списка всех доступных аудио входов.

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

Следование этим шагам позволит вам эффективно записать высококачественное видео и звук с минимальной нагрузкой на процессор, используя возможности вашей видеокарты NVIDIA и операционной системы Windows 11 Pro.

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

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