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, upgrade, or update packages?
        • 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
        • 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
        • 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
        • 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
        • 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 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, 15.0-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 #

    Layer First evidence Continue with
    Graphics The selected KMS module attaches and a graphical session starts Graphics driver checks and Xorg or Wayland
    Audio The intended pcm playback and recording units appear Audio output and input diagnosis
    Camera USB attachment leads to a usable /dev/video* node webcamd and cuse diagnosis
    Browser One packaged browser renders ordinary sites from the working session Desktop browser setup
    Device access The application-facing node has a narrow documented group policy USB 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 -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