Hi. I recently got Radeon RX 7900 XTX and I’m trying to test AV1 streaming. I’m using mesa drivers from nonfree.eu repository (amdgpu). Neither obs-studio
nor obs-studio-rc
show hardware video encoders. I installed obs-studio-amf
and it does show hardware encoders but I have 2 issues:
- The only encoders in Settings > Output > Streaming are:
- AMD HW H.264 (AVC)
- FFmpeg VAAPI H.264
- x264
There’s no AMD HW A1 or AMD HW H265.
- New hardware video encoders are available in Recording section but when I select AMD HW A1 and click Start Recording my whole PC freezes and the only thing I can do is hard reset. Before it freezes I can see a flicker of “Failed to read gpu_busy_percent” on the system status bar (
i3status-rs
GPU module that shows temperature, utilisation %, video RAM usage, etc).
Are those issues normal? Is there no support for AV1 for streaming in OBS for Linux yet and is AV1 recording in OBS for Linux unstable?
Description: Manjaro Linux 6.5.3-1-MANJARO
Release: 23.0.2
Codename: Uranos
OBS Studio: 29.1.3-1 (64 bit)
I can use AMD HW H.264 (AVC) for streaming and AMD HW H.265 (HEVC) for recording without issues. I just wanted to use the A1, since my new GPU has it and it’s supposed to be way better.
OBS log file
18:46:00.504: Using EGL/X11
18:46:00.504: CPU Name: Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz
18:46:00.504: CPU Speed: 3729.391MHz
18:46:00.504: Physical Cores: 4, Logical Cores: 4
18:46:00.504: Physical Memory: 15958MB Total, 5403MB Free
18:46:00.504: Kernel Version: Linux 6.5.3-1-MANJARO
18:46:00.504: Distribution: "Manjaro Linux" Unknown
18:46:00.504: Desktop Environment: i3 (i3)
18:46:00.504: Session Type: x11
18:46:00.504: Window System: X11.0, Vendor: The X.Org Foundation, Version: 1.21.1
18:46:00.505: Qt Version: 6.5.2 (runtime), 6.5.2 (compiled)
18:46:00.505: Portable mode: false
18:46:00.559: OBS 29.1.3-1 (linux)
18:46:00.559: ---------------------------------
18:46:00.560: ---------------------------------
18:46:00.560: audio settings reset:
18:46:00.560: samples per sec: 44100
18:46:00.560: speakers: 2
18:46:00.560: max buffering: 1044 milliseconds
18:46:00.560: buffering type: dynamically increasing
18:46:00.566: ---------------------------------
18:46:00.566: Initializing OpenGL...
18:46:00.617: Loading up OpenGL on adapter AMD AMD Radeon RX 7900 XTX (gfx1100, LLVM 16.0.6, DRM 3.54, 6.5.3-1-MANJARO)
18:46:00.617: OpenGL loaded successfully, version 4.6 (Core Profile) Mesa 23.1.7-1, shading language 4.60
18:46:00.648: ---------------------------------
18:46:00.648: video settings reset:
18:46:00.648: base resolution: 3840x2160
18:46:00.648: output resolution: 2560x1440
18:46:00.648: downscale filter: Lanczos
18:46:00.648: fps: 30/1
18:46:00.648: format: NV12
18:46:00.648: YUV mode: Rec. 709/Partial
18:46:00.648: NV12 texture support not available
18:46:00.648: P010 texture support not available
18:46:00.652: Audio monitoring device:
18:46:00.652: name: Default
18:46:00.652: id: default
18:46:00.653: ---------------------------------
18:46:00.659: Failed to load 'en-US' text for module: 'decklink-captions.so'
18:46:00.667: Failed to load 'en-US' text for module: 'decklink-output-ui.so'
18:46:00.672: A DeckLink iterator could not be created. The DeckLink drivers may not be installed
18:46:00.672: Failed to initialize module 'decklink.so'
18:46:00.683: Failed to load 'en-GB' text for module: 'frontend-tools.so'
18:46:00.823: Failed to load 'en-GB' text for module: 'linux-alsa.so'
18:46:00.830: Failed to load 'en-GB' text for module: 'linux-capture.so'
18:46:00.846: Failed to load 'en-GB' text for module: 'linux-jack.so'
18:46:00.865: Failed to load 'en-GB' text for module: 'linux-pipewire.so'
18:46:00.866: [pipewire] No captures available
18:46:00.873: Failed to load 'en-GB' text for module: 'linux-pulseaudio.so'
18:46:00.884: v4l2loopback not installed, virtual camera disabled
18:46:00.891: Failed to load 'en-GB' text for module: 'linux-vkcapture.so'
18:46:00.891: [linux-vkcapture] plugin loaded successfully (version 1.4.3)
18:46:00.902: [obs-browser]: Version 2.21.1
18:46:00.902: [obs-browser]: CEF Version 103.0.5060.134 (runtime), 103.0.0-5060-shared-textures_143.2591+g4204d54+chromium-103.0.5060.134 (compiled)
18:46:01.031: VAAPI: API version 1.20
18:46:01.033: FFmpeg VAAPI H264 encoding supported
18:46:01.039: FFmpeg VAAPI HEVC encoding supported
18:46:01.068: Failed to load 'en-GB' text for module: 'obs-vst.so'
18:46:01.084: Failed to load 'en-GB' text for module: 'obs-websocket.so'
18:46:01.084: [obs-websocket] [obs_module_load] you can haz websockets (Version: 5.2.3 | RPC Version: 1)
18:46:01.084: [obs-websocket] [obs_module_load] Qt version (compile-time): 6.5.2 | Qt version (run-time): 6.5.2
18:46:01.084: [obs-websocket] [obs_module_load] Linked ASIO Version: 102800
18:46:01.089: [obs-websocket] [obs_module_load] Module loaded.
18:46:01.104: Failed to load 'en-GB' text for module: 'rtmp-services.so'
18:46:01.111: ---------------------------------
18:46:01.111: Loaded Modules:
18:46:01.111: text-freetype2.so
18:46:01.111: rtmp-services.so
18:46:01.111: obs-x264.so
18:46:01.111: obs-websocket.so
18:46:01.111: obs-vst.so
18:46:01.111: obs-transitions.so
18:46:01.111: obs-outputs.so
18:46:01.111: obs-filters.so
18:46:01.111: obs-ffmpeg.so
18:46:01.111: obs-browser.so
18:46:01.111: linux-vkcapture.so
18:46:01.111: linux-v4l2.so
18:46:01.111: linux-pulseaudio.so
18:46:01.111: linux-pipewire.so
18:46:01.111: linux-jack.so
18:46:01.111: linux-capture.so
18:46:01.111: linux-alsa.so
18:46:01.111: image-source.so
18:46:01.111: frontend-tools.so
18:46:01.111: decklink-output-ui.so
18:46:01.111: decklink-captions.so
18:46:01.111: ---------------------------------
18:46:01.111: ==== Startup complete ===============================================
18:46:01.113: Encoder ID 'libfdk_aac' not found
18:46:01.113: Encoder ID 'libfdk_aac' not found
18:46:01.164: All scene data cleared
18:46:01.164: ------------------------------------------------
18:46:01.177: pulse-input: Server name: 'PulseAudio (on PipeWire 0.3.80) 15.0.0'
18:46:01.178: pulse-input: An error occurred while getting the source info!
18:46:01.178: [Loaded global audio device]: 'Desktop Audio'
18:46:01.178: - filter: 'Gain' (gain_filter)
18:46:01.179: pulse-input: Server name: 'PulseAudio (on PipeWire 0.3.80) 15.0.0'
18:46:01.180: pulse-input: An error occurred while getting the source info!
18:46:01.180: [Loaded global audio device]: 'Desktop Audio 2'
18:46:01.181: pulse-input: Server name: 'PulseAudio (on PipeWire 0.3.80) 15.0.0'
18:46:01.181: pulse-input: An error occurred while getting the source info!
18:46:01.184: [Loaded global audio device]: 'Mic/Aux'
18:46:01.184: - filter: 'Noise Suppression' (noise_suppress_filter)
18:46:01.184: - filter: 'Compressor' (compressor_filter)
18:46:01.185: pulse-input: Server name: 'PulseAudio (on PipeWire 0.3.80) 15.0.0'
18:46:01.186: pulse-input: An error occurred while getting the source info!
18:46:01.264: [window-capture: 'Client Window'] update settings:
18:46:01.264: title: unknown
18:46:01.264: class: unknown
18:46:01.264:
18:46:01.264: v4l2-input: Start capture from /dev/video0
18:46:01.264: v4l2-input: Input: 0
18:46:01.324: v4l2-input: Resolution: 1920x1080
18:46:01.324: v4l2-input: Pixelformat: MJPG
18:46:01.324: v4l2-input: Linesize: 0 Bytes
18:46:01.324: v4l2-input: Framerate: 30.00 fps
18:46:01.330: v4l2-input: /dev/video0: select timeout set to 166666 (5x frame periods)
18:46:01.333: Switched to scene 'Pause'
18:46:01.333: ------------------------------------------------
18:46:01.333: Loaded scenes:
18:46:01.333: - scene 'Pause':
18:46:01.333: - source: 'Please Stand By' (image_source)
18:46:01.333: - source: 'Webcam' (v4l2_input)
18:46:01.333: - filter: 'Crop/Pad' (crop_filter)
18:46:01.333: - source: 'Microphone' (pulse_input_capture)
18:46:01.333: - filter: 'Noise Suppression' (noise_suppress_filter_v2)
18:46:01.333: - filter: 'Compressor' (compressor_filter)
18:46:01.333: - scene 'Game':
18:46:01.333: - source: 'Game Capture' (vkcapture-source)
18:46:01.333: - source: 'Webcam' (v4l2_input)
18:46:01.333: - filter: 'Crop/Pad' (crop_filter)
18:46:01.333: - source: 'Microphone' (pulse_input_capture)
18:46:01.333: - filter: 'Noise Suppression' (noise_suppress_filter_v2)
18:46:01.333: - filter: 'Compressor' (compressor_filter)
18:46:01.333: - scene 'Steam':
18:46:01.333: - source: 'Client Window' (xcomposite_input)
18:46:01.333: - source: 'Webcam' (v4l2_input)
18:46:01.334: - filter: 'Crop/Pad' (crop_filter)
18:46:01.334: - source: 'Microphone' (pulse_input_capture)
18:46:01.334: - filter: 'Noise Suppression' (noise_suppress_filter_v2)
18:46:01.334: - filter: 'Compressor' (compressor_filter)
18:46:01.334: - scene 'Facecam':
18:46:01.334: - source: 'Webcam' (v4l2_input)
18:46:01.334: - filter: 'Crop/Pad' (crop_filter)
18:46:01.334: - source: 'Microphone' (pulse_input_capture)
18:46:01.334: - filter: 'Noise Suppression' (noise_suppress_filter_v2)
18:46:01.334: - filter: 'Compressor' (compressor_filter)
18:46:01.334: - filter: 'Crop/Pad' (crop_filter)
18:46:01.334: - filter: 'Scaling/Aspect Ratio' (scale_filter)
18:46:01.334: ------------------------------------------------
18:46:01.502: v4l2-input: /dev/video0: select timed out
18:46:01.502: v4l2-input: /dev/video0: failed to log status
18:46:01.669: v4l2-input: /dev/video0: select timed out
18:46:01.669: v4l2-input: /dev/video0: failed to log status
18:46:35.247: encoder 'advanced_video_stream': Scaled resolution matches output resolution, scaling disabled
18:46:35.389: [fallback-amf-av1: 'advanced_video_recording'] settings:
18:46:35.389: rate_control: CBR
18:46:35.389: bitrate: 2500
18:46:35.389: cqp: 20
18:46:35.389: keyint: 250
18:46:35.389: preset: balanced
18:46:35.389: profile: main
18:46:35.389: width: 2560
18:46:35.389: height: 1440
18:46:35.389: params: (none)
18:46:35.396: ---------------------------------
18:46:35.396: [FFmpeg libopus encoder: 'Game and commentary'] bitrate: 192, channels: 2, channel_layout: stereo
18:46:35.396:
18:46:35.396: ---------------------------------
18:46:35.396: [FFmpeg libopus encoder: 'Game'] bitrate: 192, channels: 2, channel_layout: stereo
18:46:35.396:
18:46:35.396: ---------------------------------
18:46:35.396: [FFmpeg libopus encoder: 'Commentary'] bitrate: 192, channels: 2, channel_layout: stereo
18:46:35.396:
18:46:35.396: [ffmpeg muxer: 'adv_file_output'] Using muxer settings:
18:46:35.396: movflags=frag_keyframe+empty_moov+delay_moov
18:46:35.407: ==== Recording Start ===============================================
18:46:35.408: [ffmpeg muxer: 'adv_file_output'] Writing file '/home/cg/Videos/2023-09-23.18-46-35.mp4'...
18:46:40.909: User switched to scene 'Game'
18:46:40.992: [fallback-amf-av1: 'advanced_video_recording'] amf_encode_fallback: SubmitInput timed out: AMF_INPUT_FULL
18:46:40.992: Error encoding with encoder 'advanced_video_recording'
18:46:40.994: [ffmpeg muxer: 'adv_file_output'] Output of file '/home/cg/Videos/2023-09-23.18-46-35.mp4' stopped
18:46:40.994: Output 'adv_file_output': stopping
18:46:40.994: Output 'adv_file_output': Total frames output: 0
18:46:40.994: Output 'adv_file_output': Total drawn frames: 168
18:46:40.994: ==== Recording Stop ================================================
(at the end there’s bunch of binary data that didn’t copy)