The Handbook

    Theme
    • Guides
        • Check a system before installing FreeBSD
        • Orient a Linux administrator on FreeBSD
        • Supported FreeBSD releases
        • Choose a FreeBSD documentation and support channel
        • Move files safely without GNU mv -t
        • Update and Upgrade FreeBSD
        • Upgrade 14.4 or 15.0 to FreeBSD 15.1
        • Choose packages, ports, or poudriere
        • Choose the quarterly or latest package branch
        • Choose a FreeBSD download or package mirror
        • Make a system setting persistent
        • Run a command from cron reliably
        • Configure locale, keyboard, and time zone
        • Configure a serial console for recovery
        • Choose a custom kernel, module, or loader setting
        • Run a Linux binary with the compatibility layer
        • Check desktop and laptop hardware before installation
        • Choose and check a graphics driver
        • Choose Xorg or Wayland
        • Build a maintainable desktop baseline
        • Install and check a desktop browser
        • Check laptop Wi-Fi, power, and suspend
        • Check multimedia readiness
        • Choose and configure a printing stack
        • Run Windows applications with Wine
        • Snapshot and replicate a ZFS dataset
        • Choose a filesystem and storage layout
        • Operate ZFS without losing the recovery path
        • Restore files from a ZFS snapshot
        • Find what is using ZFS space
        • Grow a ZFS virtual disk
        • Read ZFS pool health and run a scrub
        • Replace a failed device in a ZFS mirror
        • Replicate a ZFS dataset over SSH
        • Change PF safely on a remote host
        • Configure a narrow WireGuard tunnel
        • Share a directory with NFS
        • Share files with a named Samba account
        • Plan a FreeBSD home server
        • Choose a mail server or an outgoing relay
        • Publish a network service safely
        • Choose a jail network model
        • Choose native jails or a jail manager
        • Choose a jail or a bhyve virtual machine
        • Establish a FreeBSD security baseline
        • Choose a MAC policy
        • Audit security-relevant activity
        • Start a DTrace performance investigation
    • Integrations
        • Create a first jail with Bastille
        • Compare jail managers and OCI tooling
        • Publish a Bastille service through PF
        • Mount a ZFS dataset in a Bastille jail
        • Update and upgrade Bastille jails
        • Back up and restore a Bastille jail
        • Prepare bhyve and vm-bhyve
        • Choose NFS or Samba for file sharing
        • Choose ZFS backup automation
        • Build a first signed poudriere repository
        • Operate a signed poudriere repository
        • Manage FreeBSD configuration with Ansible or Salt
        • Run Motion with webcamd on FreeBSD
        • Design a reverse proxy, certificates, and monitoring
    • FAQ
      • Troubleshooting
          • Recover an interrupted freebsd-update run
          • Resolve a package repository or ABI mismatch
          • Diagnose the FreeBSD boot path
          • Recover with a ZFS boot environment
          • Diagnose DNS, routing, and firewall paths
          • Diagnose network mbuf exhaustion
          • Bind a service to a low port without running it as root
          • Diagnose a service that will not start
          • Diagnose audio output or input
          • Diagnose webcamd, cuse, and a webcam
          • Fix USB device permissions without opening every device
      • About this handbook
      • Synopsis
      • Start with the required workload
      • Verify the layers in order
      • Establish local playback
      • Establish capture outside the browser
      • Treat protected and proprietary services separately
      • Preserve useful evidence
      • Primary references

      Check multimedia readiness

      Last reviewed
      13 August 2026
      Applies to
      15.1-RELEASE, 14.4-RELEASE

      Synopsis #

      “Multimedia support” is not one subsystem. Local playback, HDMI audio, microphone capture, a USB camera, browser conferencing, protected streaming, screen sharing, and hardware acceleration cross different kernel drivers and applications. Define the required workload, then test each layer independently.

      A package appearing in a repository establishes availability for that repository and architecture. It does not establish that every codec, device, provider, or acceleration path works on the machine.

      Start with the required workload #

      List the exact tasks and their failure cost. Examples include:

      • local audio and video playback;
      • analog, USB, HDMI, or DisplayPort audio output;
      • internal or external microphone recording;
      • a USB webcam at a required resolution;
      • one browser-based meeting provider with camera, microphone, and screen sharing;
      • protected streaming media;
      • capture devices, scanners, MIDI equipment, or other USB peripherals.

      Test the intended file formats, provider, and devices. A successful MP3 playback test does not prove HDMI selection, browser capture, or protected video.

      Verify the layers in order #

      LayerFirst evidenceContinue with
      GraphicsThe selected KMS module attaches and a graphical session startsGraphics driver checks and Xorg or Wayland
      AudioThe intended pcm playback and recording units appearAudio output and input diagnosis
      CameraUSB attachment leads to a usable /dev/video* nodewebcamd and cuse diagnosis
      BrowserOne packaged browser renders ordinary sites from the working sessionDesktop browser setup
      Device accessThe application-facing node has a narrow documented group policyUSB device permissions

      Do not begin with a conferencing site. A provider failure combines every layer and can change independently of FreeBSD.

      Establish local playback #

      After graphics and audio work, search the configured repository for the intended player. The FreeBSD multimedia chapter documents packages including VLC:

      $ pkg search -S name -x '^vlc$'
      # pkg install vlc
      

      Test a small, known-good local file before adding network streaming, unusual codecs, or hardware decoding. Start the player from a terminal and preserve diagnostic output. If video renders but no sound is heard, return to default audio-device selection rather than changing video drivers.

      Hardware-accelerated decoding is a separate capability. Establish correct software playback first, then use the player’s and graphics driver’s current documentation to verify acceleration. A lower CPU percentage is not evidence of correct decoding unless the active backend is reported.

      Establish capture outside the browser #

      Test microphone recording with a local application and test a webcam with a local viewer. Confirm that playback of the recorded result uses the intended device. Close the local capture program before opening a browser.

      Only then test browser device permission and a provider’s guest or test meeting. Record camera, microphone, screen-sharing, and speaker selection separately. Keep another device available when a meeting is time-critical.

      Treat protected and proprietary services separately #

      Protected media can depend on proprietary digital-rights-management components and service-side platform policy. Ordinary browser playback can work while a subscription service refuses protected content. Likewise, a meeting provider can change browser requirements without a FreeBSD package change.

      Do not weaken browser security settings or install an unrelated compatibility stack as a generic fix. Record the exact service as working, limited, or unsupported, and recheck it after browser or provider updates.

      Preserve useful evidence #

      Keep the following with a readiness result:

      • FreeBSD release, architecture, and package branch;
      • graphics module and Xorg or Wayland session type;
      • selected pcm units and mixer state;
      • camera model, USB identifiers, and webcamd package version;
      • browser and player package versions;
      • exact local test files and provider tests;
      • limitations after suspend and resume, docking, or device reattachment.

      This record turns a later regression into a comparison instead of another complete desktop rebuild.

      Primary references #

      • FreeBSD Handbook: Multimedia
      • FreeBSD Handbook: Browsers
      • FreeBSD Ports: VLC
      • sound(4)
      • webcamd(8)

      Independent documentation. Not affiliated with or endorsed by the FreeBSD Project or the FreeBSD Foundation.

      Report a bug
      • Synopsis
      • Start with the required workload
      • Verify the layers in order
      • Establish local playback
      • Establish capture outside the browser
      • Treat protected and proprietary services separately
      • Preserve useful evidence
      • Primary references