feat: Add FFmpeg audio transcoding for Dolby/AC3/EAC3 compatibility

- Add /api/transcode endpoint for audio-only transcoding
- Video passthrough (no re-encoding) for fast performance
- Audio transcode to AAC for browser compatibility
- Add 'Force Audio Transcode' setting toggle in UI
- Add ffmpeg-static as optional dependency
- Handle Electron asar.unpacked path for packaged apps
This commit is contained in:
Trevor Mears
2025-12-29 16:52:01 -08:00
parent 61fe03f950
commit 32e0434785
7 changed files with 385 additions and 1 deletions
+10
View File
@@ -29,6 +29,7 @@ class SettingsPage {
const rememberVolumeToggle = document.getElementById('setting-remember-volume');
const autoPlayNextToggle = document.getElementById('setting-autoplay-next');
const forceProxyToggle = document.getElementById('setting-force-proxy');
const forceTranscodeToggle = document.getElementById('setting-force-transcode');
// Load current settings
if (this.app.player?.settings) {
@@ -41,6 +42,9 @@ class SettingsPage {
if (forceProxyToggle) {
forceProxyToggle.checked = this.app.player.settings.forceProxy || false;
}
if (forceTranscodeToggle) {
forceTranscodeToggle.checked = this.app.player.settings.forceTranscode || false;
}
}
// Arrow keys toggle
@@ -83,6 +87,12 @@ class SettingsPage {
this.app.player.saveSettings();
});
// Force transcode toggle
forceTranscodeToggle?.addEventListener('change', () => {
this.app.player.settings.forceTranscode = forceTranscodeToggle.checked;
this.app.player.saveSettings();
});
// EPG refresh interval
const epgRefreshSelect = document.getElementById('epg-refresh-interval');
if (epgRefreshSelect) {