Bug 485260 - MP4 recording quality is so bad that even recording a white screen is not result in pure white
Summary: MP4 recording quality is so bad that even recording a white screen is not res...
Status: CONFIRMED
Alias: None
Product: Spectacle
Classification: Applications
Component: General (other bugs)
Version First Reported In: 24.02.1
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: Noah Davis
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-04-09 04:40 UTC by Akari Marisa
Modified: 2025-12-03 19:57 UTC (History)
8 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Akari Marisa 2024-04-09 04:40:12 UTC
The VP9 encoder is fine, it has roughly around 1Mbit/s and 60fps. But the H264/mp4 only get around 400Kbit/s, the video quality is so bad that even recording a white screen is not result in pure white. I think if spectacle can  have settings for bitrate and framerate, everyone can tune around to perform better screen recording.
Comment 1 Nate Graham 2024-04-09 14:47:42 UTC
We may end up adding settings for this, but your bug report is about an issue with H244 recording  basically not working properly at all, and in such a case additional user-facing options are not the right approach; we should just fix the bug. Let's drill into that.

Can you mention your system's specs?
Comment 2 Akari Marisa 2024-04-10 03:49:42 UTC
(In reply to Nate Graham from comment #1)
> We may end up adding settings for this, but your bug report is about an
> issue with H244 recording  basically not working properly at all, and in
> such a case additional user-facing options are not the right approach; we
> should just fix the bug. Let's drill into that.
> 
> Can you mention your system's specs?

Yes, this is my system specs.

```
Operating System: openSUSE Tumbleweed 20240407
KDE Plasma Version: 6.0.3
KDE Frameworks Version: 6.0.0
Qt Version: 6.6.3
Kernel Version: 6.8.4-rc1-1-default (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 PRO 5850U with Radeon Graphics
Memory: 30.2 GiB of RAM
Graphics Processor: AMD Radeon Graphics
Manufacturer: LENOVO
Product Name: 20XHSIT022
System Version: ThinkPad X13 Gen 2a
```

And this is my spectacle app info.

```
Information for package spectacle:
----------------------------------
Repository     : Tumbleweed (OSS)
Name           : spectacle
Version        : 24.02.1-1.2
Arch           : x86_64
Vendor         : openSUSE
Installed Size : 2.1 MiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : spectacle-24.02.1-1.2.src
Upstream URL   : https://apps.kde.org/spectacle
Summary        : Screen Capture Program
Description    : 
    Spectactle is a screenshot-taking program made by KDE. It allows taking screenshots
    of screens, windows, regions of the screen, and to export them to files or other
    online services.
Provides       : [6]
    application()
    metainfo()
    application(org.kde.spectacle.desktop)
    metainfo(org.kde.spectacle.appdata.xml)
    spectacle = 24.02.1-1.2
    spectacle(x86-64) = 24.02.1-1.2
Requires       : [57]
    libstdc++.so.6()(64bit)
    libstdc++.so.6(GLIBCXX_3.4)(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libm.so.6()(64bit)
    libc.so.6(GLIBC_2.34)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libm.so.6(GLIBC_2.2.5)(64bit)
    libstdc++.so.6(GLIBCXX_3.4.14)(64bit)
    libm.so.6(GLIBC_2.38)(64bit)
    libQt6Core.so.6()(64bit)
    libQt6Core.so.6(Qt_6)(64bit)
    libQt6Core.so.6(Qt_6.6)(64bit)
    libQt6Gui.so.6()(64bit)
    libQt6Gui.so.6(Qt_6)(64bit)
    libQt6Widgets.so.6()(64bit)
    libQt6Widgets.so.6(Qt_6)(64bit)
    libKF6I18n.so.6()(64bit)
    libKF6CoreAddons.so.6()(64bit)
    libKF6ConfigCore.so.6()(64bit)
    libQt6Qml.so.6()(64bit)
    libQt6Qml.so.6(Qt_6)(64bit)
    libQt6DBus.so.6()(64bit)
    libQt6DBus.so.6(Qt_6)(64bit)
    libKF6WidgetsAddons.so.6()(64bit)
    libxcb.so.1()(64bit)
    libKF6ConfigGui.so.6()(64bit)
    libwayland-client.so.0()(64bit)
    libKF6XmlGui.so.6()(64bit)
    libKF6ConfigWidgets.so.6()(64bit)
    libQt6Quick.so.6()(64bit)
    libQt6Quick.so.6(Qt_6)(64bit)
    libKF6KIOCore.so.6()(64bit)
    libKF6DBusAddons.so.6()(64bit)
    libQt6Gui.so.6(Qt_6.6.3_PRIVATE_API)(64bit)
    libKF6KIOWidgets.so.6()(64bit)
    libKF6KIOGui.so.6()(64bit)
    libKF6WindowSystem.so.6()(64bit)
    libKF6Service.so.6()(64bit)
    libKF6Notifications.so.6()(64bit)
    libQt6PrintSupport.so.6()(64bit)
    libQt6PrintSupport.so.6(Qt_6)(64bit)
    libKF6GuiAddons.so.6()(64bit)
    libxcb-randr.so.0()(64bit)
    libxcb-xfixes.so.0()(64bit)
    libKF6GlobalAccel.so.6()(64bit)
    libKF6JobWidgets.so.6()(64bit)
    libQt6WaylandClient.so.6()(64bit)
    libxcb-util.so.1()(64bit)
    libQt6WaylandClient.so.6(Qt_6)(64bit)
    libxcb-image.so.0()(64bit)
    libKF6Purpose.so.6()(64bit)
    libxcb-cursor.so.0()(64bit)
    libKirigamiPlatform.so.6()(64bit)
    libKF6PurposeWidgets.so.6()(64bit)
    libLayerShellQtInterface.so.6()(64bit)
    libKPipeWireRecord.so.6()(64bit)
    /bin/sh
```

The ffmpeg-6 package info, I don't know if spectacle use ffmpeg or not, but here it is.

```
Information for package ffmpeg-6:
---------------------------------
Repository     : packman
Name           : ffmpeg-6
Version        : 6.1.1-1699.5.pm.2
Arch           : x86_64
Vendor         : http://packman.links2linux.de
Installed Size : 2.5 MiB
Installed      : Yes
Status         : up-to-date
Source package : ffmpeg-6-6.1.1-1699.5.pm.2.src
Upstream URL   : https://ffmpeg.org/
Summary        : Set of libraries for working with various multimedia formats
Description    : 
    FFmpeg is a multimedia framework, able to decode, encode,
    transcode, mux, demux, stream, filter and play several formats
    that humans and machines have created.
Provides       : [6]
    ffmpeg = 6.1.1
    ffmpeg-tools = 6.1.1
    ffmpeg-6 = 6.1.1-1699.5.pm.2
    ffmpeg-6(x86-64) = 6.1.1-1699.5.pm.2
    /usr/bin/ffmpeg
    /usr/bin/ffplay
Requires       : [41]
    libc.so.6()(64bit)
    libc.so.6(GLIBC_2.34)(64bit)
    libm.so.6()(64bit)
    libc.so.6(GLIBC_2.2.5)(64bit)
    libc.so.6(GLIBC_2.4)(64bit)
    libc.so.6(GLIBC_2.14)(64bit)
    libc.so.6(GLIBC_2.3.4)(64bit)
    libm.so.6(GLIBC_2.29)(64bit)
    libc.so.6(GLIBC_2.33)(64bit)
    libm.so.6(GLIBC_2.2.5)(64bit)
    libz.so.1()(64bit)
    libc.so.6(GLIBC_2.7)(64bit)
    libc.so.6(GLIBC_2.3.2)(64bit)
    libm.so.6(GLIBC_2.35)(64bit)
    libavutil.so.58()(64bit)
    libavutil.so.58(LIBAVUTIL_58.29_SUSE)(64bit)
    libavcodec.so.60()(64bit)
    libavcodec.so.60(LIBAVCODEC_60.31_SUSE)(64bit)
    libavformat.so.60()(64bit)
    libavformat.so.60(LIBAVFORMAT_60.16_SUSE)(64bit)
    libSDL2-2.0.so.0()(64bit)
    libswscale.so.7()(64bit)
    libswresample.so.4()(64bit)
    libswresample.so.4(LIBSWRESAMPLE_4.12_SUSE)(64bit)
    libswscale.so.7(LIBSWSCALE_7.5_SUSE)(64bit)
    libpostproc.so.57()(64bit)
    libpostproc.so.57(LIBPOSTPROC_57.3_SUSE)(64bit)
    libc.so.6(GLIBC_2.10)(64bit)
    libavfilter.so.9()(64bit)
    libavfilter.so.9(LIBAVFILTER_9.12_SUSE)(64bit)
    libSDL2-2.0.so.0(SUSE_2.0.8)(64bit)
    libavdevice.so.60()(64bit)
    libavdevice.so.60(LIBAVDEVICE_60.3_SUSE)(64bit)
    (libpostproc57 = 6.1.1-1699.5.pm.2 or ffmpeg-6-mini-libs = 6.1.1-1699.5.pm.2)
    (libswresample4 = 6.1.1-1699.5.pm.2 or ffmpeg-6-mini-libs = 6.1.1-1699.5.pm.2)
    (libswscale7 = 6.1.1-1699.5.pm.2 or ffmpeg-6-mini-libs = 6.1.1-1699.5.pm.2)
    (libavfilter9 = 6.1.1-1699.5.pm.2 or ffmpeg-6-mini-libs = 6.1.1-1699.5.pm.2)
    (libavcodec60 = 6.1.1-1699.5.pm.2 or ffmpeg-6-mini-libs = 6.1.1-1699.5.pm.2)
    (libavutil58 = 6.1.1-1699.5.pm.2 or ffmpeg-6-mini-libs = 6.1.1-1699.5.pm.2)
    (libavdevice60 = 6.1.1-1699.5.pm.2 or ffmpeg-6-mini-libs = 6.1.1-1699.5.pm.2)
    (libavformat60 = 6.1.1-1699.5.pm.2 or ffmpeg-6-mini-libs = 6.1.1-1699.5.pm.2)
```
Comment 3 Eugene Shalygin 2025-07-24 09:50:04 UTC
Yes, the only option now is to record a gif and convert it into h264/265 afterwards. MP4 recording in Spectacle is practically useless, you can't even read screen text in those videos.
Comment 4 ihatemylife0025 2025-09-01 19:44:48 UTC
Can confirm that the screen recording quality in mp4 format is bad on Spectacle 6.4.4 on Fedora 42 KDE. The bitrate is 1.43 Mbit/s for my 1440p display which is way too low for h264 at that resolution. Please let us adjust the bitrate or make it higher by default
Comment 5 Mike H 2025-09-01 20:09:59 UTC
Coming from the peanut gallery, I would suggest setting by default a CRF Factor as opposed to a bit rate and if you already do this then you need to make it higher quality by default.

But yes for the Love of all that is good please allow people to change these settings.
Comment 6 caitlin 2025-12-03 19:57:21 UTC
Also from the peanut gallery. I do game dev work on Linux and often have to send visual bugs to other devs. Adding some quality control settings, or even just adding env vars that Spectacle would honor would be very nice.

As a workaround I am usign obs, but as you might imagine it gets annoying fast.