- Requires Xcode with macOS 12 SDK or later.
- Before building, update submodules with
git submodule update --init --recursive. - ffmpeg and its dependencies require "Meson", "Ninja", "pkg-config" and the "nasm" assembler to build. You can obtain them
through Homebrew via
brew install meson ninja pkg-config nasm.
The Xcode project QLVideo.xcodeproj builds the following Products:
- QuickLook Video.app - App that hosts plugins and extensions, and registers the Uniform Type Identifiers of the media types that the plugins understand.
- mdimporter - Spotlight plugin provides metadata.
- previewer - QuickLook app extension provides previews for non-native file types. Not included in v3 of the app.
- thumbnailer - QuickLook app extension provides thumbnails. Not included in v3 of the app.
- formatreader - App extension that provides support for non-native file types and audio codecs.
- videodecoder - App extension that provides support for non-native video codecs.
- simpleplayer - App for debugging the formatreader and videodecoder extensions. Plays files using AVFoundation.
- benchmark - Simple executable for benchmarking, not included in the app.
- ffmpeg - The FFmpeg libraries. The plugins depend on these. Also builds a standalone version of the
ffprobeexecutable for bug reporting. - dav1d - Support for the AV1 codec. ffmpeg depends on this.
- zimg - Support for format and colour conversion. ffmpeg depends on this.
All plugins produce output in the system log. Use the filter subsystem:uk.org.marginal.qlvideo in the
Console app, or sudo log stream --style compact --debug --predicate 's=uk.org.marginal.qlvideo' in
the Terminal.
To debug in Xcode, first build the "Quicklook Video" target once. Then switch targets depending on what you wish to debug:
- mdimporter - Edit the "Run" scheme for the "mdimporter" target as follows: "Executable":
/usr/bin/mdimport, "Debug executable": ✔, "Arguments":-t -d2 <testfile>. - formatreader and videodecoder - Edit the "Run" scheme for the "formatreader" target as follows: "Executable": simpleplayer.app, "Debug executable": ✔. Select a testfile in the simpleplayer application.
FFmpeg's demuxers and codecs can sometimes crash on corrupt or incompletely downloaded media files. In Release builds both plugins install exception handlers which quietly kill the worker process so that the user isn't disturbed by crash reports. This is an ugly hack.