npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ffmpeg-for-homebridge

v2.1.7

Published

Static FFmpeg binaries for Homebridge with support for audio (libfdk-aac) and hardware encoding (h264_v4l2m2m and h264_qsv).

Downloads

23,163

Readme

Build Status Downloads Version Homebridge Discord

FFmpeg for Homebridge

This project provides static FFmpeg binaries for multiple platforms and architectures for use with Homebridge.

Specifically, we provide:

  • Audio support using libfdk-aac.
  • Hardware-accelerated encoding support on Intel platforms using h264_qsv (Windows only).
  • Hardware-accelerated encoding support on Raspberry Pi 4+ using h264_v4l2m2m.
  • Hardware-accelerated encoding support on Apple platforms using videotoolbox.

Supported Platforms

| OS | Supported Architectures | |-------------------------------------|--------------------------------| | FreeBSD | x86_64 | | Linux | x86_64, armv7l, aarch64 | | macOS 15.0 (Sequoia) or newer | x86_64, arm64 (Apple Silicon) | | Raspberry Pi 4 (Raspbian) | armv7l, aarch64 | | Windows 10 or newer | x86_64 |

[!NOTE]

  • Intel Quick Sync Video is only supported on Windows. There are multiple known issues with libva that make it incompatible with static builds of FFmpeg. If you need QSV on Linux, we recommend looking at the Jellyfin FFmpeg distribution for distribution-specific releases. We hope to support QSV on Linux once these issues are addressed.
  • Raspberry Pi 5 is currently unsupported. There are multiple known issues with FFmpeg and Raspberry Pi 5 that will hopefully be addressed by the respective teams in the future.
  • Currently (October 2024), FFmpeg v7.1 appears to be somewhat broken for HEVC and H.264 decoding in some scenarios. We hope to support future FFmpeg LTS releases as they stabilize and mature.

Raspbian or armv7/armv8-based Linux environments:

sudo curl -Lf# https://github.com/homebridge/ffmpeg-for-homebridge/releases/latest/download/ffmpeg-alpine-arm32v7.tar.gz | sudo tar xzf - -C / --no-same-owner

x64 or arm64 Linux:

sudo curl -Lf# https://github.com/homebridge/ffmpeg-for-homebridge/releases/latest/download/ffmpeg-alpine-$(uname -m).tar.gz | sudo tar xzf - -C / --no-same-owner

Intel or Apple Silicon macOS:

sudo curl -Lf# https://github.com/homebridge/ffmpeg-for-homebridge/releases/latest/download/ffmpeg-darwin-$(uname -m).tar.gz | sudo tar xzfm - -C / --no-same-owner

Windows:

Download the ffmpeg.exe file from the releases page.

Build Flags

FFmpeg is built with the following configuration options:

    --disable-debug
    --disable-ffnvcodec
    --disable-shared
    --enable-amf                         # x86_64 Linux only
    --enable-gpl
    --enable-hardcoded-tables
    --enable-libaom                      # x86_64 Linux only
    --enable-libdav1d
    --enable-libfdk-aac
    --enable-libmp3lame
    --enable-libopencore_amrnb
    --enable-libopencore_amrwb
    --enable-libopus
    --enable-libspeex
    --enable-libsrt
    --enable-libsvtav1
    --enable-libtheora
    --enable-libvidstab
    --enable-libvorbis
    --enable-libvpl                      # Windows only
    --enable-libvpx                      # not available on arm32v7 Linux
    --enable-libwebp
    --enable-libx264
    --enable-libx265                     # not available on arm32v7 Linux
    --enable-libxvid
    --enable-libzimg
    --enable-lv2
    --enable-nonfree
    --enable-openssl
    --enable-pthreads
    --enable-static
    --enable-version3
    --enable-videotoolbox                # macOS only

Issues

Issues related to Homebridge or any Homebridge-related camera plugins should be raised on the corresponding project page, Discord, or community support forums.

Issues strictly related to the compatibility or installation of the resulting binary may be raised here.

Plugin Dependency

This section is for Homebridge plugin developers only, if you need to install FFmpeg see the instructions above.

You can optionally include this package as a dependency in your Homebridge camera plugins. This package will automatically download and install the correct FFmpeg binary to your user's Homebridge installation when they install your plugin, as long as they are on one of the supported platforms listed above.

npm install --unsafe-perm --save ffmpeg-for-homebridge
// .js
var pathToFfmpeg = require("ffmpeg-for-homebridge");

// .ts
import pathToFfmpeg from "ffmpeg-for-homebridge";

// fallback to system FFmpeg (replace this with your own ffmpeg spawn command)
child_process.spawn(pathToFfmpeg || "ffmpeg", []);

If a supported version of FFmpeg is unavailable for the user's platform, or this package failed to download the FFmpeg binary, the package will return undefined, you should check for this and and try and use FFmpeg from the user's PATH instead.

You will need to update your plugin's README installation command to include the --unsafe-perm flag. For example:

# example 
sudo npm install -g --unsafe-perm homebridge-fake-camera-plugin

Credits