From ae513814441ee9c884391fc1531db6c30fc3270c Mon Sep 17 00:00:00 2001 From: Jakub Budisky Date: Wed, 13 May 2026 21:58:14 +0200 Subject: [PATCH] Replace legacy vaapih264enc with vah264enc The gstreamer-vaapi plugin suite (vaapih264enc) is superseded by the va plugin (vah264enc) in gst-plugins-bad. Switch to it and update the parameters accordingly: CBR instead of VBR for lower-latency streaming, key-int-max instead of keyframe-period, and target-usage instead of quality-level. Co-Authored-By: Claude Sonnet 4.6 --- server/internal/config/capture_pipeline.go | 4 ++-- webpage/docs/configuration/capture.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/internal/config/capture_pipeline.go b/server/internal/config/capture_pipeline.go index 0c9ba3a6..492c8ca4 100644 --- a/server/internal/config/capture_pipeline.go +++ b/server/internal/config/capture_pipeline.go @@ -152,11 +152,11 @@ func NewVideoPipeline(rtpCodec codec.RTPCodec, display string, pipelineSrc strin switch hwenc { case HwEncVAAPI: - if err := gst.CheckPlugins([]string{"vaapi"}); err != nil { + if err := gst.CheckPlugins([]string{"va"}); err != nil { return "", err } - pipelineStr = fmt.Sprintf(videoSrc+"video/x-raw,format=NV12 ! vaapih264enc rate-control=vbr bitrate=%d keyframe-period=180 quality-level=7 ! video/x-h264,stream-format=byte-stream,profile=constrained-baseline"+pipelineStr, display, fps, bitrate) + pipelineStr = fmt.Sprintf(videoSrc+"video/x-raw,format=NV12 ! vah264enc rate-control=cbr bitrate=%d key-int-max=60 target-usage=7 ! h264parse config-interval=-1 ! video/x-h264,stream-format=byte-stream,profile=constrained-baseline"+pipelineStr, display, fps, bitrate) case HwEncNVENC: if err := gst.CheckPlugins([]string{"nvcodec"}); err != nil { return "", err diff --git a/webpage/docs/configuration/capture.md b/webpage/docs/configuration/capture.md index cf77b985..4ab998c5 100644 --- a/webpage/docs/configuration/capture.md +++ b/webpage/docs/configuration/capture.md @@ -322,8 +322,8 @@ Overview of available encoders for each codec is shown in the table below. The e | VP8 | [vp8enc](https://gstreamer.freedesktop.org/documentation/vpx/vp8enc.html?gi-language=c) | [vaapivp8enc](https://github.com/GStreamer/gstreamer-vaapi/blob/master/gst/vaapi/gstvaapiencode_vp8.c) | ? | | VP9 | [vp9enc](https://gstreamer.freedesktop.org/documentation/vpx/vp9enc.html?gi-language=c) | [vaapivp9enc](https://github.com/GStreamer/gstreamer-vaapi/blob/master/gst/vaapi/gstvaapiencode_vp9.c) | ? | | AV1 | [av1enc](https://gstreamer.freedesktop.org/documentation/aom/av1enc.html?gi-language=c) | ? | [nvav1enc](https://gstreamer.freedesktop.org/documentation/nvcodec/nvav1enc.html?gi-language=c) | -| H264 | [x264enc](https://gstreamer.freedesktop.org/documentation/x264/index.html?gi-language=c) | [vaapih264enc](https://gstreamer.freedesktop.org/documentation/va/vah264enc.html?gi-language=c) | [nvautogpuh264enc](https://gstreamer.freedesktop.org/documentation/nvcodec/nvautogpuh264enc.html?gi-language=c) / [nvh264enc](https://gstreamer.freedesktop.org/documentation/nvcodec/nvh264enc.html?gi-language=c) | -| H265 | [x265enc](https://gstreamer.freedesktop.org/documentation/x265/index.html?gi-language=c) | [vaapih265enc](https://gstreamer.freedesktop.org/documentation/va/vah265enc.html?gi-language=c) | [nvh265enc](https://gstreamer.freedesktop.org/documentation/nvcodec/nvh265enc.html?gi-language=c) | +| H264 | [x264enc](https://gstreamer.freedesktop.org/documentation/x264/index.html?gi-language=c) | [vah264enc](https://gstreamer.freedesktop.org/documentation/va/vah264enc.html?gi-language=c) | [nvautogpuh264enc](https://gstreamer.freedesktop.org/documentation/nvcodec/nvautogpuh264enc.html?gi-language=c) / [nvh264enc](https://gstreamer.freedesktop.org/documentation/nvcodec/nvh264enc.html?gi-language=c) | +| H265 | [x265enc](https://gstreamer.freedesktop.org/documentation/x265/index.html?gi-language=c) | [vah265enc](https://gstreamer.freedesktop.org/documentation/va/vah265enc.html?gi-language=c) | [nvh265enc](https://gstreamer.freedesktop.org/documentation/nvcodec/nvh265enc.html?gi-language=c) | ## WebRTC Audio {#audio}