Update plugins: VMAF mode, documentation fixes, version sync

- Added VMAF quality-targeted mode to av1_svt_converter (v2.25)
- Fixed documentation version mismatch (misc_fixes v2.8, stream_organizer v4.10, audio_standardizer v1.15)
- Updated rate control documentation with VMAF mode details
- Added vmaf_target and vmaf_samples input options
- Added ab-av1 binary detection with ABAV1_PATH env var support
This commit is contained in:
Tdarr Plugin Developer
2025-12-15 19:55:19 -08:00
parent 44fe7b50b0
commit 04d7ff59e9
272 changed files with 1140 additions and 35 deletions

View File

@@ -8,8 +8,11 @@ const details = () => ({
Converts audio streams to specified codec (AAC/Opus) with configurable bitrate and channel options.
Can preserve existing channels or downmix from multichannel to stereo/mono. Also creates missing
downmixed tracks (8ch->6ch, 6ch/8ch->2ch) when they don't exist.
v1.15: Fixed duplicate description, added default markers, improved tooltips.
v1.14: Fixed crash when input file has no subtitles (conditional mapping).
`,
Version: '1.13',
Version: '1.15',
Tags: 'audio,aac,opus,channels,stereo,downmix,quality',
Inputs: [
{
@@ -60,11 +63,11 @@ const details = () => ({
{
name: 'channel_mode',
type: 'string',
defaultValue: 'preserve',
defaultValue: 'preserve*',
inputUI: {
type: 'dropdown',
options: [
'preserve',
'preserve*',
'stereo',
'mono'
],
@@ -82,7 +85,7 @@ const details = () => ({
'true*'
],
},
tooltip: 'Create additional stereo (2ch) downmix tracks from multichannel audio (5.1/7.1).',
tooltip: 'Create stereo (2ch) downmix from multichannel audio (5.1/7.1). Only creates if no stereo track exists AND multichannel source is present.',
},
{
name: 'downmix_single_track',
@@ -113,11 +116,11 @@ const details = () => ({
{
name: 'opus_application',
type: 'string',
defaultValue: 'audio',
defaultValue: 'audio*',
inputUI: {
type: 'dropdown',
options: [
'audio',
'audio*',
'voip',
'lowdelay'
],
@@ -127,11 +130,11 @@ const details = () => ({
{
name: 'opus_vbr',
type: 'string',
defaultValue: 'on',
defaultValue: 'on*',
inputUI: {
type: 'dropdown',
options: [
'on',
'on*',
'off',
'constrained'
],
@@ -211,11 +214,11 @@ const details = () => ({
{
name: 'quality_preset',
type: 'string',
defaultValue: 'custom',
defaultValue: 'custom*',
inputUI: {
type: 'dropdown',
options: [
'custom',
'custom*',
'high_quality',
'balanced',
'small_size'
@@ -673,13 +676,23 @@ const plugin = (file, librarySettings, inputs, otherArguments) => {
// Build stream mapping explicitly by type to prevent attachment processing errors
// Using -map 0 would map ALL streams including attachments, which causes muxing errors
// when combined with additional -map commands for downmix tracks
let streamMap = '-map 0:v -map 0:a -map 0:s';
let streamMap = '-map 0:v -map 0:a';
// Check if file has subtitle streams before mapping them
const hasSubtitles = file.ffProbeData.streams.some(s => s.codec_type === 'subtitle');
if (hasSubtitles) {
streamMap += ' -map 0:s';
}
if (hasAttachments) {
// Add attachments separately with copy codec
streamMap += ' -map 0:t -c:t copy';
}
let ffmpegArgs = `${streamMap} -c:v copy -c:s copy`;
let ffmpegArgs = `${streamMap} -c:v copy`;
if (hasSubtitles) {
ffmpegArgs += ' -c:s copy';
}
let audioIdx = 0;
let processNeeded = false;
let is2channelAdded = false;