Revert FFmpeg path to full binary only; add separate FFprobe Binary Path field

This commit is contained in:
Forkless
2026-05-11 21:57:24 +02:00
parent 47e2407b38
commit 8f151daa25
27 changed files with 121 additions and 84 deletions
+5 -14
View File
@@ -436,24 +436,15 @@ class Cache_Manager {
$custom = $settings['piper_ffmpeg_binary'] ?? ''; $custom = $settings['piper_ffmpeg_binary'] ?? '';
if ( '' !== $custom ) { if ( '' !== $custom ) {
// Support both full binary path AND directory-only path. if ( @file_exists( $custom ) && @is_executable( $custom ) ) {
// `@is_dir` can return false under open_basedir, so we also
// try appending /ffmpeg if the raw path is not executable.
if ( ! @is_executable( $custom ) ) {
$candidate = rtrim( $custom, '/' ) . '/ffmpeg';
if ( @is_executable( $candidate ) ) {
$custom = $candidate;
$this->logger->info( 'FFmpeg path is a directory, resolved to: {path}', [ 'path' => $custom ] );
}
}
if ( @is_executable( $custom ) ) {
$cached = true; $cached = true;
$resolved_path = $custom; $resolved_path = $custom;
$this->logger->info( 'Found ffmpeg at configured path: {path}', [ 'path' => $custom ] );
return $resolved_path; return $resolved_path;
} }
$this->logger->warning( 'ffmpeg not found or not executable at configured path: {path}', [ 'path' => $original ] ); $this->logger->warning(
$this->logger->warning( 'Trying auto-detection.' ); 'Configured ffmpeg binary not found or not executable: {path}. Trying auto-detection.',
[ 'path' => $custom ]
);
} }
$candidates = apply_filters( $candidates = apply_filters(
+7 -2
View File
@@ -184,8 +184,12 @@ class Settings {
], ],
], $this->page_slug_piper ); ], $this->page_slug_piper );
$this->add_field( 'piper_ffmpeg_binary', __( 'FFmpeg Binaries Path', 'piperless' ), 'text', 'piperless_piper_section', [ $this->add_field( 'piper_ffmpeg_binary', __( 'FFmpeg Binary Path', 'piperless' ), 'text', 'piperless_piper_section', [
'description' => __( 'Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.', 'piperless' ), 'description' => __( 'Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.', 'piperless' ),
], $this->page_slug_piper );
$this->add_field( 'piper_ffprobe_binary', __( 'FFprobe Binary Path', 'piperless' ), 'text', 'piperless_piper_section', [
'description' => __( 'Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.', 'piperless' ),
], $this->page_slug_piper ); ], $this->page_slug_piper );
$this->add_field( 'piper_mp3_bitrate', __( 'MP3 Bitrate', 'piperless' ), 'select', 'piperless_piper_section', [ $this->add_field( 'piper_mp3_bitrate', __( 'MP3 Bitrate', 'piperless' ), 'select', 'piperless_piper_section', [
@@ -469,6 +473,7 @@ class Settings {
$clean['default_language'] = sanitize_text_field( $input['default_language'] ?? 'en_US' ); $clean['default_language'] = sanitize_text_field( $input['default_language'] ?? 'en_US' );
$clean['default_quality'] = sanitize_text_field( $input['default_quality'] ?? 'medium' ); $clean['default_quality'] = sanitize_text_field( $input['default_quality'] ?? 'medium' );
$clean['piper_ffmpeg_binary'] = sanitize_text_field( $input['piper_ffmpeg_binary'] ?? '' ); $clean['piper_ffmpeg_binary'] = sanitize_text_field( $input['piper_ffmpeg_binary'] ?? '' );
$clean['piper_ffprobe_binary'] = sanitize_text_field( $input['piper_ffprobe_binary'] ?? '' );
$clean['piper_mp3_bitrate'] = sanitize_text_field( $input['piper_mp3_bitrate'] ?? '32k' ); $clean['piper_mp3_bitrate'] = sanitize_text_field( $input['piper_mp3_bitrate'] ?? '32k' );
$clean['piper_audio_format'] = in_array( $input['piper_audio_format'] ?? 'mp3', [ 'mp3', 'opus' ], true ) $clean['piper_audio_format'] = in_array( $input['piper_audio_format'] ?? 'mp3', [ 'mp3', 'opus' ], true )
? $input['piper_audio_format'] : 'mp3'; ? $input['piper_audio_format'] : 'mp3';
+12 -3
View File
@@ -530,9 +530,18 @@ class Transcriber {
} }
$cached = true; $cached = true;
$settings = get_option( 'piperless_settings', [] );
$custom = $settings['piper_ffprobe_binary'] ?? '';
// Use the same directory as ffmpeg — wherever it was resolved, // 1. Try the configured ffprobe path.
// ffprobe is likely right next to it. if ( '' !== $custom ) {
if ( @file_exists( $custom ) && @is_executable( $custom ) ) {
$resolved = $custom;
return $resolved;
}
}
// 2. Try the same directory as resolved ffmpeg.
$ffmpeg_path = $this->cache->find_ffmpeg(); $ffmpeg_path = $this->cache->find_ffmpeg();
if ( null !== $ffmpeg_path ) { if ( null !== $ffmpeg_path ) {
$candidate = dirname( $ffmpeg_path ) . '/ffprobe'; $candidate = dirname( $ffmpeg_path ) . '/ffprobe';
@@ -542,7 +551,7 @@ class Transcriber {
} }
} }
// Fallback: common paths extended via filter. // 3. Fallback: common paths extended via filter.
$candidates = apply_filters( $candidates = apply_filters(
'piperless_ffprobe_paths', 'piperless_ffprobe_paths',
[ '/usr/bin/ffprobe', '/usr/local/bin/ffprobe', '/opt/bin/ffprobe' ] [ '/usr/bin/ffprobe', '/usr/local/bin/ffprobe', '/opt/bin/ffprobe' ]
+5 -4
View File
@@ -3,8 +3,8 @@
"locale": "de_DE", "locale": "de_DE",
"source": "translations.json", "source": "translations.json",
"generated": "2026-05-10", "generated": "2026-05-10",
"total_strings": 117, "total_strings": 118,
"translated": 117, "translated": 118,
"locked": false "locked": false
}, },
"strings": { "strings": {
@@ -123,7 +123,8 @@
"24 kbps (standard)": "24 kbps (Standard)", "24 kbps (standard)": "24 kbps (Standard)",
"16 kbps (compact)": "16 kbps (Kompakt)", "16 kbps (compact)": "16 kbps (Kompakt)",
"12 kbps (minimal)": "12 kbps (Minimal)", "12 kbps (minimal)": "12 kbps (Minimal)",
"Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluter Pfad zu den ffmpeg-Tools für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer.", "FFprobe Binary Path": "FFprobe-Binärpfad",
"FFmpeg Binaries Path": "FFmpeg-Binärpfad" "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Absoluter Pfad zur ffprobe-Binärdatei für die Erkennung der Audiodauer. Automatische Erkennung aus dem ffmpeg-Verzeichnis, wenn leer.",
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluter Pfad zur ffmpeg-Binärdatei für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer."
} }
} }
Binary file not shown.
+7 -4
View File
@@ -469,9 +469,12 @@ msgstr "16 kbps (Kompakt)"
msgid "12 kbps (minimal)" msgid "12 kbps (minimal)"
msgstr "12 kbps (Minimal)" msgstr "12 kbps (Minimal)"
msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." msgid "FFprobe Binary Path"
msgstr "Absoluter Pfad zu den ffmpeg-Tools für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer." msgstr "FFprobe-Binärpfad"
msgid "FFmpeg Binaries Path" msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty."
msgstr "FFmpeg-Binärpfad" msgstr "Absoluter Pfad zur ffprobe-Binärdatei für die Erkennung der Audiodauer. Automatische Erkennung aus dem ffmpeg-Verzeichnis, wenn leer."
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
msgstr "Absoluter Pfad zur ffmpeg-Binärdatei für MP3/Opus-Konvertierung. Automatische Erkennung aus üblichen Pfaden, wenn leer."
+5 -4
View File
@@ -3,8 +3,8 @@
"locale": "es_ES", "locale": "es_ES",
"source": "translations.json", "source": "translations.json",
"generated": "2026-05-10", "generated": "2026-05-10",
"total_strings": 117, "total_strings": 118,
"translated": 117, "translated": 118,
"locked": false "locked": false
}, },
"strings": { "strings": {
@@ -123,7 +123,8 @@
"24 kbps (standard)": "24 kbps (estándar)", "24 kbps (standard)": "24 kbps (estándar)",
"16 kbps (compact)": "16 kbps (compacto)", "16 kbps (compact)": "16 kbps (compacto)",
"12 kbps (minimal)": "12 kbps (mínimo)", "12 kbps (minimal)": "12 kbps (mínimo)",
"Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Ruta absoluta a las herramientas ffmpeg para conversión MP3/Opus. Se detecta automáticamente si se deja vacío.", "FFprobe Binary Path": "Ruta del binario FFprobe",
"FFmpeg Binaries Path": "Ruta de binarios FFmpeg" "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Ruta absoluta al binario ffprobe para la detección de la duración del audio. Se detecta automáticamente desde el directorio ffmpeg si se deja vacío.",
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Ruta absoluta al binario ffmpeg para la conversión MP3/Opus. Se detecta automáticamente si se deja vacío."
} }
} }
Binary file not shown.
+7 -4
View File
@@ -469,9 +469,12 @@ msgstr "16 kbps (compacto)"
msgid "12 kbps (minimal)" msgid "12 kbps (minimal)"
msgstr "12 kbps (mínimo)" msgstr "12 kbps (mínimo)"
msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." msgid "FFprobe Binary Path"
msgstr "Ruta absoluta a las herramientas ffmpeg para conversión MP3/Opus. Se detecta automáticamente si se deja vacío." msgstr "Ruta del binario FFprobe"
msgid "FFmpeg Binaries Path" msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty."
msgstr "Ruta de binarios FFmpeg" msgstr "Ruta absoluta al binario ffprobe para la detección de la duración del audio. Se detecta automáticamente desde el directorio ffmpeg si se deja vacío."
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
msgstr "Ruta absoluta al binario ffmpeg para la conversión MP3/Opus. Se detecta automáticamente si se deja vacío."
+5 -4
View File
@@ -3,8 +3,8 @@
"locale": "fr_FR", "locale": "fr_FR",
"source": "translations.json", "source": "translations.json",
"generated": "2026-05-10", "generated": "2026-05-10",
"total_strings": 117, "total_strings": 118,
"translated": 117, "translated": 118,
"locked": false "locked": false
}, },
"strings": { "strings": {
@@ -123,7 +123,8 @@
"24 kbps (standard)": "24 kbps (standard)", "24 kbps (standard)": "24 kbps (standard)",
"16 kbps (compact)": "16 kbps (compact)", "16 kbps (compact)": "16 kbps (compact)",
"12 kbps (minimal)": "12 kbps (minimal)", "12 kbps (minimal)": "12 kbps (minimal)",
"Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Chemin absolu vers les outils ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide.", "FFprobe Binary Path": "Chemin du binaire FFprobe",
"FFmpeg Binaries Path": "Chemin des binaires FFmpeg" "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Chemin absolu vers le binaire ffprobe pour la détection de la durée audio. Auto-détecté depuis le répertoire ffmpeg si laissé vide.",
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Chemin absolu vers le binaire ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide."
} }
} }
Binary file not shown.
+7 -4
View File
@@ -469,9 +469,12 @@ msgstr "16 kbps (compact)"
msgid "12 kbps (minimal)" msgid "12 kbps (minimal)"
msgstr "12 kbps (minimal)" msgstr "12 kbps (minimal)"
msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." msgid "FFprobe Binary Path"
msgstr "Chemin absolu vers les outils ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide." msgstr "Chemin du binaire FFprobe"
msgid "FFmpeg Binaries Path" msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty."
msgstr "Chemin des binaires FFmpeg" msgstr "Chemin absolu vers le binaire ffprobe pour la détection de la durée audio. Auto-détecté depuis le répertoire ffmpeg si laissé vide."
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
msgstr "Chemin absolu vers le binaire ffmpeg pour la conversion MP3/Opus. Auto-détecté depuis les chemins courants si laissé vide."
+5 -4
View File
@@ -3,8 +3,8 @@
"locale": "it_IT", "locale": "it_IT",
"source": "translations.json", "source": "translations.json",
"generated": "2026-05-10", "generated": "2026-05-10",
"total_strings": 117, "total_strings": 118,
"translated": 117, "translated": 118,
"locked": false "locked": false
}, },
"strings": { "strings": {
@@ -123,7 +123,8 @@
"24 kbps (standard)": "24 kbps (standard)", "24 kbps (standard)": "24 kbps (standard)",
"16 kbps (compact)": "16 kbps (compatto)", "16 kbps (compact)": "16 kbps (compatto)",
"12 kbps (minimal)": "12 kbps (minimo)", "12 kbps (minimal)": "12 kbps (minimo)",
"Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Percorso assoluto agli strumenti ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto.", "FFprobe Binary Path": "Percorso binario FFprobe",
"FFmpeg Binaries Path": "Percorso binari FFmpeg" "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Percorso assoluto al binario ffprobe per il rilevamento della durata audio. Rilevato automaticamente dalla directory ffmpeg se lasciato vuoto.",
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Percorso assoluto al binario ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto."
} }
} }
Binary file not shown.
+7 -4
View File
@@ -469,9 +469,12 @@ msgstr "16 kbps (compatto)"
msgid "12 kbps (minimal)" msgid "12 kbps (minimal)"
msgstr "12 kbps (minimo)" msgstr "12 kbps (minimo)"
msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." msgid "FFprobe Binary Path"
msgstr "Percorso assoluto agli strumenti ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto." msgstr "Percorso binario FFprobe"
msgid "FFmpeg Binaries Path" msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty."
msgstr "Percorso binari FFmpeg" msgstr "Percorso assoluto al binario ffprobe per il rilevamento della durata audio. Rilevato automaticamente dalla directory ffmpeg se lasciato vuoto."
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
msgstr "Percorso assoluto al binario ffmpeg per la conversione MP3/Opus. Rilevato automaticamente se lasciato vuoto."
+5 -4
View File
@@ -3,8 +3,8 @@
"locale": "ja", "locale": "ja",
"source": "translations.json", "source": "translations.json",
"generated": "2026-05-10", "generated": "2026-05-10",
"total_strings": 117, "total_strings": 118,
"translated": 117, "translated": 118,
"locked": false "locked": false
}, },
"strings": { "strings": {
@@ -123,7 +123,8 @@
"24 kbps (standard)": "24 kbps(標準)", "24 kbps (standard)": "24 kbps(標準)",
"16 kbps (compact)": "16 kbps(コンパクト)", "16 kbps (compact)": "16 kbps(コンパクト)",
"12 kbps (minimal)": "12 kbps(最小)", "12 kbps (minimal)": "12 kbps(最小)",
"Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "MP3/Opus変換用のffmpegツールへの絶対パス。空の場合は自動検出されます。", "FFprobe Binary Path": "FFprobeバイナリパス",
"FFmpeg Binaries Path": "FFmpegバイナリパス" "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "音声の長さ検出用ffprobeバイナリへの絶対パス。空の場合はffmpegディレクトリから自動検出されます。",
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "MP3/Opus変換用ffmpegバイナリへの絶対パス。空の場合は自動検出されます。"
} }
} }
Binary file not shown.
+7 -4
View File
@@ -469,9 +469,12 @@ msgstr "16 kbps(コンパクト)"
msgid "12 kbps (minimal)" msgid "12 kbps (minimal)"
msgstr "12 kbps(最小)" msgstr "12 kbps(最小)"
msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." msgid "FFprobe Binary Path"
msgstr "MP3/Opus変換用のffmpegツールへの絶対パス。空の場合は自動検出されます。" msgstr "FFprobeバイナリパス"
msgid "FFmpeg Binaries Path" msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty."
msgstr "FFmpegバイナリパス" msgstr "音声の長さ検出用ffprobeバイナリへの絶対パス。空の場合はffmpegディレクトリから自動検出されます。"
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
msgstr "MP3/Opus変換用ffmpegバイナリへの絶対パス。空の場合は自動検出されます。"
+5 -4
View File
@@ -3,8 +3,8 @@
"locale": "nl_NL", "locale": "nl_NL",
"source": "translations.json", "source": "translations.json",
"generated": "2026-05-10", "generated": "2026-05-10",
"total_strings": 117, "total_strings": 118,
"translated": 117, "translated": 118,
"locked": false "locked": false
}, },
"strings": { "strings": {
@@ -123,7 +123,8 @@
"24 kbps (standard)": "24 kbps (standaard)", "24 kbps (standard)": "24 kbps (standaard)",
"16 kbps (compact)": "16 kbps (compact)", "16 kbps (compact)": "16 kbps (compact)",
"12 kbps (minimal)": "12 kbps (minimaal)", "12 kbps (minimal)": "12 kbps (minimaal)",
"Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluut pad naar ffmpeg-tools voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten.", "FFprobe Binary Path": "FFprobe-binair pad",
"FFmpeg Binaries Path": "FFmpeg-binaries-pad" "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Absoluut pad naar de ffprobe binary voor audioduurdetectie. Automatisch gedetecteerd vanuit de ffmpeg-directory, indien leeg gelaten.",
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Absoluut pad naar de ffmpeg binary voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten."
} }
} }
Binary file not shown.
+7 -4
View File
@@ -469,9 +469,12 @@ msgstr "16 kbps (compact)"
msgid "12 kbps (minimal)" msgid "12 kbps (minimal)"
msgstr "12 kbps (minimaal)" msgstr "12 kbps (minimaal)"
msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." msgid "FFprobe Binary Path"
msgstr "Absoluut pad naar ffmpeg-tools voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten." msgstr "FFprobe-binair pad"
msgid "FFmpeg Binaries Path" msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty."
msgstr "FFmpeg-binaries-pad" msgstr "Absoluut pad naar de ffprobe binary voor audioduurdetectie. Automatisch gedetecteerd vanuit de ffmpeg-directory, indien leeg gelaten."
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
msgstr "Absoluut pad naar de ffmpeg binary voor MP3/Opus-conversie. Automatisch gedetecteerd als leeg gelaten."
+5 -4
View File
@@ -3,8 +3,8 @@
"locale": "pt_BR", "locale": "pt_BR",
"source": "translations.json", "source": "translations.json",
"generated": "2026-05-10", "generated": "2026-05-10",
"total_strings": 117, "total_strings": 118,
"translated": 117, "translated": 118,
"locked": false "locked": false
}, },
"strings": { "strings": {
@@ -123,7 +123,8 @@
"24 kbps (standard)": "24 kbps (padrão)", "24 kbps (standard)": "24 kbps (padrão)",
"16 kbps (compact)": "16 kbps (compacto)", "16 kbps (compact)": "16 kbps (compacto)",
"12 kbps (minimal)": "12 kbps (mínimo)", "12 kbps (minimal)": "12 kbps (mínimo)",
"Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Caminho absoluto para as ferramentas ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio.", "FFprobe Binary Path": "Caminho do binário FFprobe",
"FFmpeg Binaries Path": "Caminho dos binários FFmpeg" "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "Caminho absoluto para o binário ffprobe para detecção de duração do áudio. Detectado automaticamente do diretório ffmpeg se deixado vazio.",
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "Caminho absoluto para o binário ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio."
} }
} }
Binary file not shown.
+7 -4
View File
@@ -469,9 +469,12 @@ msgstr "16 kbps (compacto)"
msgid "12 kbps (minimal)" msgid "12 kbps (minimal)"
msgstr "12 kbps (mínimo)" msgstr "12 kbps (mínimo)"
msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." msgid "FFprobe Binary Path"
msgstr "Caminho absoluto para as ferramentas ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio." msgstr "Caminho do binário FFprobe"
msgid "FFmpeg Binaries Path" msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty."
msgstr "Caminho dos binários FFmpeg" msgstr "Caminho absoluto para o binário ffprobe para detecção de duração do áudio. Detectado automaticamente do diretório ffmpeg se deixado vazio."
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
msgstr "Caminho absoluto para o binário ffmpeg para conversão MP3/Opus. Detectado automaticamente se deixado vazio."
+5 -4
View File
@@ -3,8 +3,8 @@
"locale": "zh_CN", "locale": "zh_CN",
"source": "translations.json", "source": "translations.json",
"generated": "2026-05-10", "generated": "2026-05-10",
"total_strings": 117, "total_strings": 118,
"translated": 117, "translated": 118,
"locked": false "locked": false
}, },
"strings": { "strings": {
@@ -123,7 +123,8 @@
"24 kbps (standard)": "24 kbps(标准)", "24 kbps (standard)": "24 kbps(标准)",
"16 kbps (compact)": "16 kbps(紧凑)", "16 kbps (compact)": "16 kbps(紧凑)",
"12 kbps (minimal)": "12 kbps(最小)", "12 kbps (minimal)": "12 kbps(最小)",
"Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty.": "ffmpeg 工具的绝对路径,用于 MP3/Opus 转换。留空则自动检测。", "FFprobe Binary Path": "FFprobe 二进制文件路径",
"FFmpeg Binaries Path": "FFmpeg 二进制文件路径" "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty.": "ffprobe 二进制文件的绝对路径,用于音频时长检测。留空则从 ffmpeg 目录自动检测。",
"Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty.": "ffmpeg 二进制文件的绝对路径,用于 MP3/Opus 转换。留空则自动检测。"
} }
} }
Binary file not shown.
+7 -4
View File
@@ -469,9 +469,12 @@ msgstr "16 kbps(紧凑)"
msgid "12 kbps (minimal)" msgid "12 kbps (minimal)"
msgstr "12 kbps(最小)" msgstr "12 kbps(最小)"
msgid "Absolute path to ffmpeg tools for MP3/Opus conversion. Auto-detected from common paths if left empty." msgid "FFprobe Binary Path"
msgstr "ffmpeg 工具的绝对路径,用于 MP3/Opus 转换。留空则自动检测。" msgstr "FFprobe 二进制文件路径"
msgid "FFmpeg Binaries Path" msgid "Absolute path to the ffprobe binary for audio duration detection. Auto-detected from the ffmpeg directory if left empty."
msgstr "FFmpeg 二进制文件路径" msgstr "ffprobe 二进制文件的绝对路径,用于音频时长检测。留空则从 ffmpeg 目录自动检测。"
msgid "Absolute path to the ffmpeg binary for MP3/Opus conversion. Auto-detected from common paths if left empty."
msgstr "ffmpeg 二进制文件的绝对路径,用于 MP3/Opus 转换。留空则自动检测。"