ffmpeg и vp9_qsv: ошибка при кодировании: NULL-указатель

Я пытаюсь использовать ffmpeg для кодирования VP9 в Windows 10. Мой процессор поддерживает QuickSync (i7 11700k). Я знаю о проблеме с несколькими мониторами и нашел способ обойти ее.[vp9_qsv] Selected ratecontrol mode is unsupportedошибка при установке битрейта и максимальной скорости.

Я использую эту командную строку:fmpeg.exe -i input.mp4 -b:v 10M -maxrate:v 10M -c:v vp9_qsv -c:a copy output.mp4

Я получаю следующую ошибку:

      ffmpeg version n4.4-80-g262a744a0a-20210720 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10-win32 (GCC) 20210408
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-shared --disable-static --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libvmaf --enable-vulkan --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-libglslang --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20210720
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2021-07-01T10:28:31.000000Z
    encoder         : HandBrake 1.0.7 2017040900
  Duration: 00:01:21.02, start: 0.000000, bitrate: 30597 kb/s
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 30430 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2021-07-01T10:28:31.000000Z
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)
    Metadata:
      creation_time   : 2021-07-01T10:28:31.000000Z
      handler_name    : Stereo
      vendor_id       : [0][0][0][0]
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> vp9 (vp9_qsv))
  Stream #0:1 -> #0:1 (copy)
[vp9_qsv @ 000001fdf9f7dcc0] Error during encoding: NULL pointer (-2)

если я поменяюсьvp9_qsvсh264_qsvилиhevc_qsvкодировка работает нормально.

Это самодельный ffmpeg из последней версии 4.4, то же самое происходит и с последней версией master.

1 ответ

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

fmpeg.exe -i input.mp4 -b:v 10M -maxrate:v 10M -c:v vp9_qsv -c:a copy output.mp4

я добавил-init_hw_device qsv=hw -filter_hw_device hwперед входным файлом и я добавил фильтр-vf hwupload=extra_hw_frames=64,format=qsv:

fmpeg.exe -init_hw_device qsv=hw -filter_hw_device hw -i input.mp4 -b:v 10M -maxrate:v 10M -c:v vp9_qsv -c:a copy -vf hwupload=extra_hw_frames=64,format=qsv output.webm

Согласно странице QSV trac ffmpeg , эти параметры используются при инициализации фильтра для использования с кодировщиками QSV, я подумал, что это может быть решением, и так оно и было. Я также заметил, что вы использовали mp4 при использовании кодека VP-X, я почти уверен, что mp4 не может содержать кодеки VP-X.

В тестовом файле я заметил, что звук не работает, я что-нибудь придумаю.

Другие вопросы по тегам