FFmpeg VAAPI H264 /HEVC encoding not supported

From: Mario Marietto <marietto2008_at_gmail.com>
Date: Sat, 06 Jan 2024 14:50:40 UTC
Hello to everyone.

I'm using FreeBSD 14.0-p3 with the latest packages and I'm trying to enable
the VAAPI H264 / HEVC encoding for obs-studio,but it says that they aren't
supported. There may be a bug somewhere ?

start-obs :

sh << EOF
env LD_LIBMAP="`nv-sglrun printenv LD_LIBMAP | grep -v libGL`" obs

root@marietto:/compat # ./start-obs
shim init

info: Using EGL/X11
info: CPU Name: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz
info: CPU Speed: 3600.00MHz
info: Physical Cores: 8, Logical Cores: 16
info: Physical Memory: 31734MB Total, 19859MB Free
info: Kernel Version: FreeBSD 14.0-RELEASE-p3
info: Distribution: FreeBSD "14.0"
info: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.21.1
info: Qt Version: 6.6.1 (runtime), 6.6.1 (compiled)
info: Portable mode: false
info: OBS 30.0.2 (freebsd)
info: ---------------------------------
info: ---------------------------------
info: audio settings reset:
samples per sec: 48000
speakers: 2
max buffering: 960 milliseconds
buffering type: dynamically increasing
info: ---------------------------------
info: Initializing OpenGL...
info: Loading up OpenGL on adapter NVIDIA Corporation NVIDIA GeForce GTX
1060 3GB/PCIe/SSE2
info: OpenGL loaded successfully, version 3.3.0 NVIDIA 535.146.02, shading
language 3.30 NVIDIA via Cg compiler

info: ---------------------------------
info: video settings reset:
base resolution: 1920x1080
output resolution: 1280x720
downscale filter: Bicubic
fps: 30/1
format: NV12
YUV mode: Rec. 709/Partial
info: NV12 texture support not available
info: P010 texture support not available
info: Audio monitoring device:
name: Default
id: default
info: ---------------------------------
info: [pipewire] No captures available
warning: v4l2loopback not installed, virtual camera disabled
info: NVENC supported

*info: FFmpeg VAAPI H264 encoding not supported info: FFmpeg VAAPI HEVC
encoding not supported*

info: [obs-websocket] [obs_module_load] you can haz websockets (Version:
5.0.1 | RPC Version: 1)
info: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.6.1 |
Qt version (run-time): 6.6.1
info: [obs-websocket] [obs_module_load] Linked ASIO Version: 101201
info: [obs-websocket] [obs_module_load] Module loaded.
info: [vlc-video]: VLC 3.0.20 Vetinari found, VLC video source enabled
info: ---------------------------------
info: Loaded Modules:
info: vlc-video.so
info: text-freetype2.so
info: sndio.so
info: rtmp-services.so
info: oss-audio.so
info: obs-x264.so
info: obs-websocket.so
info: obs-webrtc.so
info: obs-transitions.so
info: obs-outputs.so
info: obs-filters.so
info: obs-ffmpeg.so
info: linux-v4l2.so
info: linux-pulseaudio.so
info: linux-pipewire.so
info: linux-jack.so
info: linux-capture.so
info: image-source.so
info: frontend-tools.so
info: ---------------------------------
info: ==== Startup complete ===============================================
info: All scene data cleared
info: ------------------------------------------------
info: Switched to scene 'Scene'
info: ------------------------------------------------
info: Loaded scenes:
info: - scene 'Scene':
info: ------------------------------------------------
info: ==== Shutting down ==================================================
info: All scene data cleared
info: ------------------------------------------------
info: [obs-websocket] [obs_module_unload] Shutting down...
error: Tried to call obs_frontend_remove_event_callback with no callbacks!
error: Tried to call obs_frontend_get_global_config with no callbacks!
error: [obs-websocket] [Config::Save] Unable to fetch OBS config!
info: [obs-websocket] [obs_module_unload] Finished shutting down.
info: [Scripting] Total detached callbacks: 0
info: Freeing OBS context data
info: == Profiler Results =============================
info: run_program_init: 663.636 ms
info: ┣OBSApp::AppInit: 3.125 ms
info: ┃ ┗OBSApp::InitLocale: 0.784 ms
info: ┗OBSApp::OBSInit: 626.884 ms
info: ┣obs_startup: 1.247 ms
info: ┗OBSBasic::OBSInit: 598.145 ms
info: ┣OBSBasic::InitBasicConfig: 0.085 ms
info: ┣OBSBasic::ResetAudio: 0.149 ms
info: ┣OBSBasic::ResetVideo: 92.565 ms
info: ┃ ┗obs_init_graphics: 92.317 ms
info: ┃ ┗shader compilation: 22.654 ms
info: ┣OBSBasic::InitOBSCallbacks: 0.005 ms
info: ┣OBSBasic::InitHotkeys: 0.022 ms
info: ┣obs_load_all_modules2: 365.069 ms
info: ┃ ┣obs_init_module(frontend-tools.so): 27.908 ms
info: ┃ ┣obs_init_module(image-source.so): 0.009 ms
info: ┃ ┣obs_init_module(linux-capture.so): 0.374 ms
info: ┃ ┣obs_init_module(linux-jack.so): 0.004 ms
info: ┃ ┣obs_init_module(linux-pipewire.so): 3.652 ms
info: ┃ ┣obs_init_module(linux-pulseaudio.so): 0.003 ms
info: ┃ ┣obs_init_module(linux-v4l2.so): 0.856 ms
info: ┃ ┣obs_init_module(obs-ffmpeg.so): 5.617 ms
info: ┃ ┃ ┗nvenc_check: 5.362 ms
info: ┃ ┣obs_init_module(obs-filters.so): 0.029 ms
info: ┃ ┣obs_init_module(obs-outputs.so): 0.007 ms
info: ┃ ┣obs_init_module(obs-transitions.so): 0.009 ms
info: ┃ ┣obs_init_module(obs-webrtc.so): 0.029 ms
info: ┃ ┣obs_init_module(obs-websocket.so): 4.649 ms
info: ┃ ┣obs_init_module(obs-x264.so): 0.003 ms
info: ┃ ┣obs_init_module(oss-audio.so): 0.004 ms
info: ┃ ┣obs_init_module(rtmp-services.so): 0.993 ms
info: ┃ ┣obs_init_module(sndio.so): 0.005 ms
info: ┃ ┣obs_init_module(text-freetype2.so): 0.035 ms
info: ┃ ┗obs_init_module(vlc-video.so): 0.635 ms
info: ┣OBSBasic::InitService: 0.773 ms
info: ┣OBSBasic::ResetOutputs: 0.509 ms
info: ┣OBSBasic::CreateHotkeys: 0.026 ms
info: ┣OBSBasic::InitPrimitives: 0.162 ms
info: ┗OBSBasic::Load: 67.014 ms
info: obs_hotkey_thread(25 ms): min=0.03 ms, median=0.17 ms, max=10.834 ms,
99th percentile=8.279 ms
, 100% below 25 ms
info: audio_thread(Audio): min=0.005 ms, median=0.036 ms, max=0.149 ms,
99th percentile=0.101 ms
info: obs_graphics_thread(33.3333 ms): min=0.084 ms, median=0.987 ms,
max=22.184 ms, 99th percentile
=22.184 ms, 100% below 33.333 ms
info: ┣tick_sources: min=0.001 ms, median=0.009 ms, max=0.658 ms, 99th
percentile=0.658 ms
info: ┣output_frame: min=0.041 ms, median=0.212 ms, max=8.411 ms, 99th
percentile=8.411 ms
info: ┃ ┗gs_context(video->graphics): min=0.04 ms, median=0.211 ms,
max=8.41 ms, 99th percentile=8.
41 ms
info: ┃ ┣render_video: min=0.02 ms, median=0.125 ms, max=8.379 ms, 99th
percentile=8.379 ms
info: ┃ ┃ ┗render_main_texture: min=0.015 ms, median=0.098 ms, max=8.356
ms, 99th percentile=8.35
6 ms
info: ┃ ┗gs_flush: min=0.003 ms, median=0.018 ms, max=7.648 ms, 99th
percentile=7.648 ms
info: ┗render_displays: min=0.009 ms, median=0.603 ms, max=22.032 ms, 99th
percentile=22.032 ms
info: =================================================
info: == Profiler Time Between Calls ==================
info: obs_hotkey_thread(25 ms): min=25.037 ms, median=25.19 ms, max=65.219
ms, 91.0569% within ±2% o
f 25 ms (0% lower, 8.94309% higher)
info: obs_graphics_thread(33.3333 ms): min=12.188 ms, median=33.322 ms,
max=52.604 ms, 78.8889% with
in ±2% of 33.333 ms (10% lower, 11.1111% higher)
info: =================================================
info: Number of memory leaks: 0

* but the vaapi codecs are recognized correctly :*

# ffmpeg -codecs | grep vaapi

ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers
built with FreeBSD clang version 16.0.6 (
https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0

configuration: --prefix=/usr/local --mandir=/usr/local/man
--datadir=/usr/local/share/ffmpeg --doc
dir=/usr/local/share/doc/ffmpeg --pkgconfigdir=/usr/local/libdata/pkgconfig
--disable-static --disab
le-libcelt --enable-shared --enable-pic --enable-gpl --cc=cc --cxx=c++
--disable-alsa --disable-libo
pencore-amrnb --disable-libopencore-amrwb --enable-libaom
--disable-libaribb24 --disable-libaribcapt
ion --enable-asm --enable-libass --disable-libbs2b --disable-libcaca
--disable-libcdio --disable-lib
codec2 --enable-libdav1d --disable-libdavs2 --disable-libdc1394
--disable-debug --enable-htmlpages -
-enable-libdrm --disable-libfdk-aac --disable-libflite --enable-fontconfig
--enable-libfreetype --en
able-frei0r --disable-libfribidi --disable-gcrypt --disable-libglslang
--disable-libgme --enable-gmp
--enable-gnutls --enable-version3 --disable-libgsm --enable-libharfbuzz
--enable-iconv --disable-li
bilbc --disable-libjack --enable-libjxl --disable-libklvanc
--disable-libkvazaar --disable-ladspa --
enable-libmp3lame --enable-lcms2 --disable-liblensfun --disable-libbluray
--enable-libplacebo --disa
ble-librsvg --disable-librtmp --enable-libxml2 --disable-lv2
--disable-mbedtls --disable-libmfx --di
sable-libmodplug --disable-libmysofa --enable-network --disable-nonfree
--enable-nvenc --disable-ope
nal --disable-opencl --disable-opengl --disable-libopenh264
--disable-libopenjpeg --disable-libopenm
pt --disable-openssl --disable-libopenvino --enable-optimizations
--enable-libopus --disable-pockets
phinx --disable-libpulse --disable-librabbitmq --disable-librav1e
--disable-librist --enable-runtime
-cpudetect --disable-librubberband --disable-sdl2 --enable-libshaderc
--disable-libsmbclient --disab
le-libsnappy --disable-sndio --disable-libsoxr --disable-libspeex
--disable-libsrt --disable-libssh
--enable-libsvtav1 --disable-libtensorflow --disable-libtesseract
--disable-libtheora --disable-libt
wolame --disable-libuavs3d --enable-libv4l2 --enable-vaapi
--disable-vapoursynth --enable-vdpau --di
sable-libvidstab --enable-libvmaf --enable-libvorbis
--disable-libvo-amrwbenc --disable-libvpl --ena
ble-libvpx --enable-vulkan --enable-libwebp --enable-libx264
--enable-libx265 --disable-libxavs2 --e
nable-libxcb --disable-libxvid --disable-outdev=xv --disable-libzimg
--disable-libzmq --disable-libz
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100

DEV.L. av1 Alliance for Open Media AV1 (decoders: libdav1d libaom-av1 av1
d) (encoders: libaom-av1 libsvtav1 av1_nvenc av1_vaapi)
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264
h264_cuvid) (encoders: libx264 libx264rgb h264_nvenc h264_v4l2m2m
DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc
m hevc_cuvid) (encoders: libx265 hevc_nvenc hevc_v4l2m2m hevc_vaapi)
DEVIL. mjpeg Motion JPEG (decoders: mjpeg mjpeg_cuvid) (encoders: mjpeg
DEV.L. mpeg2video MPEG-2 video (decoders: mpeg2video mpegvideo
mpeg2_v4l2m2m mpeg2_cuvid)
(encoders: mpeg2video mpeg2_vaapi)
DEV.L. vp8 On2 VP8 (decoders: vp8 vp8_v4l2m2m libvpx vp8_cuvid) (encoders:
vp8_v4l2m2m vp8_vaapi)
DEV.L. vp9 Google VP9 (decoders: vp9 vp9_v4l2m2m libvpx-vp9 vp9_cuvid)
libvpx-vp9 vp9_vaapi)