Videos play with sound but a black picture, or do not load at all

(#793) Bug Needs triage media

Observed behaviour

Hello, I can't play videos for 2 main reasons: -I have the sound but the image stay black. -The video doesn't load at all

Reproduction steps

  1. Play a video.

Build information

Canary Desktop 2026.825.215649, Web 2026.827.3828, Linux 7.0.0-30-generic (x64), Electron 42.10.0, Chrome 148.0.7778.280, Node 24.18.1, Locale fr

Platform

macOS, Windows, Linux

7 comments

Sign in with Fluxer to comment and vote.
Comment by Hampus
HampusStaff 1 vote originally by @hampus-fluxer on GitHub
This is unreproducible without different steps to reproduce. Is anyone else you know able to reproduce this just by playing a video? Can you figure out what you have in common? Is it the same for all types of videos? Could it be that the video in question is in a specific video codec that your Linux distribution doesn't ship by default, and you need to install extra non-free packages?
Comment by @ErenayDev
RexSystem 1 vote originally by @ErenayDev on GitHub
I'm facing this same issue. I was able to load and watch the videos by re-encoding them to the VP9 format. The original video format was WebM and encoded with HEVC (I'm not entirely sure if it was HEVC and WebM. I will check again when I turn on my laptop). Also my friends couldnt load and watch the video in their side as well.
Comment by Hampus
HampusStaff 1 vote originally by @hampus-fluxer on GitHub
I'm facing this same issue. I was able to load and watch the videos by re-encoding them to the VP9 format. The original video format was WebM and encoded with HEVC (I'm not entirely sure if it was HEVC and WebM. I will check again when I turn on my laptop). Also my friends couldnt load and watch the video in their side as well.
This is good information, thanks! What's your build info? You can find it by opening User Settings > pressing on the build info at the bottom-left.
Comment by @ErenayDev
RexSystem 1 vote edited originally by @ErenayDev on GitHub
Binary: stable build 508 (3250c73), 2026-06-06 21:26:08 UTC, Electron 39.2.7, Linux 7.1.9-arch1-2 (x64), desktop stable 0.0.8 Web: stable build 508 (3250c73), 2026-06-06 21:26:08 UTC, Chrome 151.0.0.0, Linux (x86) I was wrong in my last comment. Looks like the problem is in the backend side. Because its sending only sound. Not the screen. I couldnt upload reproduce video to GitHub due to file size limit. So i uploaded it to Fluxer. But looks like theres something different. https://fluxerusercontent.com/attachments/1491534074373863039/1542589300439257088/2026-08-27_18-35-30.mp4
❯ ffprobe 2026-08-27_18-35-30.mp4
ffprobe version n9.0.1 Copyright (c) 2007-2026 the FFmpeg developers
  built with gcc 16 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-lcms2 --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan --disable-decoder=magicyuv
  libavutil      61.  1.101 / 61.  1.101
  libavcodec     63.  1.101 / 63.  1.101
  libavformat    63.  1.101 / 63.  1.101
  libavdevice    63.  1.101 / 63.  1.101
  libavfilter    12.  1.101 / 12.  1.101
  libswscale     10.  1.101 / 10.  1.101
  libswresample   7.  1.101 /  7.  1.101
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2026-08-27_18-35-30.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf62.3.100
  Duration: 00:03:24.97, start: 0.000000, bitrate: 552 kb/s
  Stream #0:0[0x1](und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, 504 kb/s, 43.23 fps, 60 tbr, 90k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc62.11.100 libx264
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 37 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
I recorded above video. then compressed it via online tools in the internet. then i uploaded it to fluxer, and it works! probably the compress site converted it to h264 (baseline version) and avc1, so it works now. the uncompressed original video ffprobe output:
❯ ffprobe 2026-08-27_18-35-30.mp4
ffprobe version n9.0.1 Copyright (c) 2007-2026 the FFmpeg developers
  built with gcc 16 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-lcms2 --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan --disable-decoder=magicyuv
  libavutil      61.  1.101 / 61.  1.101
  libavcodec     63.  1.101 / 63.  1.101
  libavformat    63.  1.101 / 63.  1.101
  libavdevice    63.  1.101 / 63.  1.101
  libavfilter    12.  1.101 / 12.  1.101
  libswscale     10.  1.101 / 10.  1.101
  libswresample   7.  1.101 /  7.  1.101
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2026-08-27_18-35-30.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf63.1.101
  Duration: 00:03:24.97, start: 0.000000, bitrate: 3678 kb/s
  Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv), 1920x1080, 3643 kb/s, 43.24 fps, 60 tbr, 90k tbn (default)
    Metadata:
      handler_name    : VideoHandler
  Stream #0:1[0x2](und): Audio: opus (Opus / 0x7375704F), 48000 Hz, stereo, fltp, 25 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Two videos i tried: The video dont working: https://fluxerusercontent.com/attachments/1491534074373863039/1542558583101587456/2026-07-12_01-31-05.mp4
❯ ffprobe 2026-07-12_01-31-05.mp4
ffprobe version n9.0.1 Copyright (c) 2007-2026 the FFmpeg developers
  built with gcc 16 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-lcms2 --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan --disable-decoder=magicyuv
  libavutil      61.  1.101 / 61.  1.101
  libavcodec     63.  1.101 / 63.  1.101
  libavformat    63.  1.101 / 63.  1.101
  libavdevice    63.  1.101 / 63.  1.101
  libavfilter    12.  1.101 / 12.  1.101
  libswscale     10.  1.101 / 10.  1.101
  libswresample   7.  1.101 /  7.  1.101
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2026-07-12_01-31-05.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf62.12.102
  Duration: 00:01:18.84, start: 0.000000, bitrate: 2232 kb/s
  Stream #0:0[0x1](und): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv), 1920x1080, 2130 kb/s, 40.61 fps, 60 tbr, 90k tbn (default)
    Metadata:
      handler_name    : VideoHandler
  Stream #0:1[0x2](und): Audio: opus (Opus / 0x7375704F), 48000 Hz, stereo, fltp, 94 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
============================ Working video (re-encoded to vp9) https://fluxerusercontent.com/attachments/1491534074373863039/1542558583101587457/2026-07-12_01-31-05.webm
❯ ffprobe 2026-07-12_01-31-05.webm
ffprobe version n9.0.1 Copyright (c) 2007-2026 the FFmpeg developers
  built with gcc 16 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-lcms2 --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan --disable-decoder=magicyuv
  libavutil      61.  1.101 / 61.  1.101
  libavcodec     63.  1.101 / 63.  1.101
  libavformat    63.  1.101 / 63.  1.101
  libavdevice    63.  1.101 / 63.  1.101
  libavfilter    12.  1.101 / 12.  1.101
  libswscale     10.  1.101 / 10.  1.101
  libswresample   7.  1.101 /  7.  1.101
Input #0, matroska,webm, from '2026-07-12_01-31-05.webm':
  Metadata:
    COMPATIBLE_BRANDS: isomiso2mp41
    MAJOR_BRAND     : isom
    MINOR_VERSION   : 512
    ENCODER         : Lavf62.12.102
  Duration: 00:01:18.86, start: 0.000000, bitrate: 615 kb/s
  Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv, progressive), 1920x1080, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn (default)
    Metadata:
      ENCODER         : Lavc62.28.102 libvpx-vp9
      HANDLER_NAME    : VideoHandler
      DURATION        : 00:01:18.784000000
  Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      ENCODER         : Lavc62.28.102 libopus
      HANDLER_NAME    : SoundHandler
      DURATION        : 00:01:18.861000000
================ Debug info:
❯ vainfo --display wayland
Trying display: wayland
vainfo: VA-API version: 1.24 (libva 2.24.0)
vainfo: Driver version: Mesa Gallium driver 26.2.1-arch1.1 for AMD Radeon 610M (radeonsi, raphael_mendocino, ACO, DRM 3.64, 7.1.9-arch1-2)
vainfo: Supported profile and entrypoints
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc

❯ uname -a
Linux erenay 7.1.9-arch1-2 #1 SMP PREEMPT_DYNAMIC Fri, 21 Aug 2026 22:18:59 +0000 x86_64 GNU/Linux
my video record command: (wl-screenrec)
wl-screenrec -o eDP-1 -m 60 --codec hevc --audio --audio-device alsa_output.pci-0000_03_00.6.HiFi__Speaker__sink.monitor --audio-codec opus -f "record.mp4"
my convert command:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -c:a libopus output.webm
I hope this debug info helps to you
Comment by Hampus
HampusStaff 1 vote edited by moderator originally by @hampus-fluxer on GitHub
Thanks for that. It does not appear to be a backend problem, from what I can tell. The CDN file is valid HEVC Main (hev1) video with Opus audio and FFmpeg successfully decoded its picture. The backend did not strip the video track. Electron 42 embeds Chromium 148. Your exact Radeon 610M is explicitly denied VA-API because Chromium found that initialisation reliably crashes despite vainfo advertising HEVC support. Forcing the GPU path would therefore be unsafe [1][2]. I can improve how the client presents this on canary, and provide a way to download it instead, since there is no way it can be played inside of Fluxer without transcoding it. Fluxer doesn't do any transcoding on the server, and doing it on the client would be costly. PS: You should be using the canary client for bug reporting (#736), but that wouldn't change anything in this case, but you would avoid many other bugs. If you are married to Flatpak, there's [3] until we create our own Flatpak remote for canary (soon).
[1] https://releases.electronjs.org/release/v42.10.0
[2] https://chromium.googlesource.com/chromium/src/+/refs/heads/main/gpu/config/gpu_driver_bug_list.json
[3] https://github.com/yofukashino/app.fluxer.FluxerCanary
Comment by @ErenayDev
RexSystem 1 vote edited originally by @ErenayDev on GitHub
Your exact Radeon 610M is explicitly denied VA-API because Chromium found that initialisation reliably crashes despite vainfo advertising HEVC support. Forcing the GPU path would therefore be unsafe [1][2].
hmm.. i see. i just checked to see if it works on my phone, and it does. sorry for my wrong guess. "Looks like the problem is in the backend side." I said, because my friends were having the same issue.
PS: You should be using the canary client for bug reporting (#736), but that wouldn't change anything in this case, but you would avoid many other bugs. If you are married to Flatpak, there's [3] until we create our own Flatpak remote for canary (soon).
Sorry for that. I downloaded fluxer-canary-bin package from AUR. I'll do it next time when reporting bugs.