Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
8ab46f8
feat: add separate macOS binary for detecting videotoolbox hardware c…
chrisbenincasa Aug 3, 2025
68b54e6
Merge remote-tracking branch 'origin/main' into dev
chrisbenincasa May 22, 2026
dd2c70a
Merge remote-tracking branch 'origin/main' into dev
chrisbenincasa May 24, 2026
0c6c398
feat(server): add optional basic auth for protected routes (#1865)
Trifocals3537 May 24, 2026
4571c3d
Merge remote-tracking branch 'origin/main' into dev
chrisbenincasa May 24, 2026
a24303c
feat: extract more metadata about music videos (#1885)
chrisbenincasa May 27, 2026
8d26958
feat: allow configuring play status updates per-server (#1899)
chrisbenincasa May 28, 2026
8bc0a76
fix: ensure unseen items from custom show sync are synced in search (…
chrisbenincasa May 31, 2026
1abd59a
fix(server): properly exclude season 0 of a show when that season is …
RichardMartija Jun 12, 2026
358659e
Merge remote-tracking branch 'origin/main' into dev
chrisbenincasa Jun 22, 2026
da1ddbd
build: fix build
chrisbenincasa Jun 22, 2026
435f00c
Merge remote-tracking branch 'origin/main' into dev
chrisbenincasa Jun 27, 2026
47690bd
test: fix broken tests
chrisbenincasa Jun 27, 2026
4e9c88c
Add additional program information to XMLTV (#1935)
RichardMartija Jun 30, 2026
7d37be2
fix: include sessions in channels API (#1928)
chrisbenincasa Jun 27, 2026
72919e0
fix: ensure session connections and heartbeats stay in sync (#1942)
chrisbenincasa Jun 30, 2026
1224b2f
refactor: consolidate artwork endpoints (#1923)
chrisbenincasa Jun 30, 2026
530563e
Merge remote-tracking branch 'origin/main' into dev
chrisbenincasa Jul 18, 2026
bfb5912
feat: add support for transcoding to E-AC3 and Opus audio formats (#1…
RichardMartija Aug 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/configure/ffmpeg/transcode_config.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ Controls the codec used to encode the output audio stream.

- **AAC** — The default and most compatible format. Widely supported by all clients and streaming devices. Recommended for most setups.
- **AC3 (Dolby Digital)** — Good choice for surround sound (5.1) content. Supported by most TVs and AV receivers, but not all streaming clients.
- **E-AC3 (Dolby Digital Plus)** — Supports higher bitrates and more channels than AC3 but is less supported. Use if you want to stream 7.1 (8 channel) surround sound and have compatible clients/hardware.
- **Opus (experimental)** — Highly efficient compression with inexpensive transcode perfomance and better multi-channel support than AAC or MP3. Would be ideal for surround sound content except that it isn't officially part of the the HLS spec as it is unsupported by most A/V hardware. Offered as an experimental option as it may still function due to nearly-universal software support.
- **MP3** — Widely compatible but lower quality than AAC at equivalent bitrates. Only use if a specific client requires it.
- **Copy** — Passes the audio stream through unchanged without re-encoding. When Copy is selected, all other audio settings (bitrate, sample rate, volume, channels) are **ignored**, since the stream is not being processed by FFmpeg.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objects = {

/* Begin PBXCopyFilesBuildPhase section */
14F96BF72E3E85CE00B5BB70 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
14F96BF92E3E85CE00B5BB70 /* FfmpegCapabilities */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = FfmpegCapabilities; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */

/* Begin PBXFileSystemSynchronizedRootGroup section */
14F96BFB2E3E85CE00B5BB70 /* FfmpegCapabilities */ = {
isa = PBXFileSystemSynchronizedRootGroup;
path = FfmpegCapabilities;
sourceTree = "<group>";
};
/* End PBXFileSystemSynchronizedRootGroup section */

/* Begin PBXFrameworksBuildPhase section */
14F96BF62E3E85CE00B5BB70 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
14F96BF02E3E85CE00B5BB70 = {
isa = PBXGroup;
children = (
14F96BFB2E3E85CE00B5BB70 /* FfmpegCapabilities */,
14F96BFA2E3E85CE00B5BB70 /* Products */,
);
sourceTree = "<group>";
};
14F96BFA2E3E85CE00B5BB70 /* Products */ = {
isa = PBXGroup;
children = (
14F96BF92E3E85CE00B5BB70 /* FfmpegCapabilities */,
);
name = Products;
sourceTree = "<group>";
};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
14F96BF82E3E85CE00B5BB70 /* FfmpegCapabilities */ = {
isa = PBXNativeTarget;
buildConfigurationList = 14F96C002E3E85CE00B5BB70 /* Build configuration list for PBXNativeTarget "FfmpegCapabilities" */;
buildPhases = (
14F96BF52E3E85CE00B5BB70 /* Sources */,
14F96BF62E3E85CE00B5BB70 /* Frameworks */,
14F96BF72E3E85CE00B5BB70 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
fileSystemSynchronizedGroups = (
14F96BFB2E3E85CE00B5BB70 /* FfmpegCapabilities */,
);
name = FfmpegCapabilities;
packageProductDependencies = (
);
productName = FfmpegCapabilities;
productReference = 14F96BF92E3E85CE00B5BB70 /* FfmpegCapabilities */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
14F96BF12E3E85CE00B5BB70 /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1640;
LastUpgradeCheck = 1640;
TargetAttributes = {
14F96BF82E3E85CE00B5BB70 = {
CreatedOnToolsVersion = 16.4;
};
};
};
buildConfigurationList = 14F96BF42E3E85CE00B5BB70 /* Build configuration list for PBXProject "FfmpegCapabilities" */;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 14F96BF02E3E85CE00B5BB70;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = 14F96BFA2E3E85CE00B5BB70 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
14F96BF82E3E85CE00B5BB70 /* FfmpegCapabilities */,
);
};
/* End PBXProject section */

/* Begin PBXSourcesBuildPhase section */
14F96BF52E3E85CE00B5BB70 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
14F96BFE2E3E85CE00B5BB70 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = XX35C4MZN8;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MACOSX_DEPLOYMENT_TARGET = 15.5;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
14F96BFF2E3E85CE00B5BB70 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = XX35C4MZN8;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
MACOSX_DEPLOYMENT_TARGET = 15.5;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = macosx;
SWIFT_COMPILATION_MODE = wholemodule;
};
name = Release;
};
14F96C012E3E85CE00B5BB70 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = XX35C4MZN8;
ENABLE_HARDENED_RUNTIME = YES;
MACOSX_DEPLOYMENT_TARGET = 13.5;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
};
name = Debug;
};
14F96C022E3E85CE00B5BB70 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = XX35C4MZN8;
ENABLE_HARDENED_RUNTIME = YES;
MACOSX_DEPLOYMENT_TARGET = 13.5;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
};
name = Release;
};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
14F96BF42E3E85CE00B5BB70 /* Build configuration list for PBXProject "FfmpegCapabilities" */ = {
isa = XCConfigurationList;
buildConfigurations = (
14F96BFE2E3E85CE00B5BB70 /* Debug */,
14F96BFF2E3E85CE00B5BB70 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
14F96C002E3E85CE00B5BB70 /* Build configuration list for PBXNativeTarget "FfmpegCapabilities" */ = {
isa = XCConfigurationList;
buildConfigurations = (
14F96C012E3E85CE00B5BB70 /* Debug */,
14F96C022E3E85CE00B5BB70 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 14F96BF12E3E85CE00B5BB70 /* Project object */;
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>FfmpegCapabilities.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>
Loading
Loading