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.
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?
(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) ```
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.
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
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.
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.