Add browser playback diagnostics and MPV/VLC fallback (#921)

* feat(playback): add codec diagnostics fallback
Entire-Checkpoint: f957cd9849e0

* fix(playback): address diagnostics review feedback
Entire-Checkpoint: f957cd9849e0

* fix(playback): ignore recoverable hls diagnostics
Entire-Checkpoint: f957cd9849e0

* fix(playback): polish diagnostic fallback banner
Entire-Checkpoint: f957cd9849e0

* fix(xtream): preserve live category search scope
Entire-Checkpoint: f957cd9849e0
This commit is contained in:
4gray authored and GitHub committed 2026-05-10 17:27:54 +02:00
1 parent 5f4cf01467
commit 6305dcf00e
66 files changed
+2857 -206

No files matched your search

@@ -102,4 +102,43 @@ describe('PlayerService', () => {
);
expect(result).toEqual(session);
});
it('forces external playback without changing the selected embedded player', async () => {
const session: ExternalPlayerSession = {
id: 'session-2',
player: 'vlc',
status: 'opened',
title: 'Example Live',
streamUrl: 'https://example.com/live.m3u8',
startedAt: '2026-03-07T10:00:00.000Z',
updatedAt: '2026-03-07T10:00:00.000Z',
canClose: true,
};
settingsStore.player.mockReturnValue(VideoPlayer.VideoJs);
dataService.sendIpcEvent.mockResolvedValue(session);
const result = await service.openExternalPlayback(
{
streamUrl: 'https://example.com/live.m3u8',
title: 'Example Live',
userAgent: 'IPTVnator Test',
referer: 'https://referrer.example.com',
origin: 'https://origin.example.com',
},
'vlc'
);
expect(dataService.sendIpcEvent).toHaveBeenCalledWith(
'OPEN_VLC_PLAYER',
expect.objectContaining({
url: 'https://example.com/live.m3u8',
title: 'Example Live',
'user-agent': 'IPTVnator Test',
referer: 'https://referrer.example.com',
origin: 'https://origin.example.com',
})
);
expect(dialog.open).not.toHaveBeenCalled();
expect(result).toEqual(session);
});
});
+27 -39
View File
@@ -10,6 +10,7 @@ import {
ResolvedPortalPlayback,
VideoPlayer,
} from 'shared-interfaces';
import type { ExternalPlayerName } from 'shared-interfaces';
import { SettingsStore } from './settings-store.service';
@Injectable({
@@ -66,54 +67,18 @@ export class PlayerService {
hideExternalInfoDialog = true
): Promise<ExternalPlayerSession | void> {
const player = this.settingsStore.player() ?? VideoPlayer.VideoJs;
const {
streamUrl,
title,
thumbnail,
userAgent,
referer,
origin,
headers,
contentInfo,
startTime,
} = playback;
const { streamUrl, title, contentInfo, startTime } = playback;
if (player === VideoPlayer.MPV) {
if (!hideExternalInfoDialog) {
this.dialog.open(ExternalPlayerInfoDialogComponent);
}
return await this.dataService.sendIpcEvent<ExternalPlayerSession>(
OPEN_MPV_PLAYER,
{
url: streamUrl,
title,
thumbnail,
'user-agent': userAgent,
referer: referer,
origin: origin,
headers,
contentInfo,
startTime,
}
);
return await this.openExternalPlayback(playback, 'mpv');
} else if (player === VideoPlayer.VLC) {
if (!hideExternalInfoDialog) {
this.dialog.open(ExternalPlayerInfoDialogComponent);
}
return await this.dataService.sendIpcEvent<ExternalPlayerSession>(
OPEN_VLC_PLAYER,
{
url: streamUrl,
title,
thumbnail,
'user-agent': userAgent,
referer: referer,
origin: origin,
headers,
contentInfo,
startTime,
}
);
return await this.openExternalPlayback(playback, 'vlc');
}
return import('@iptvnator/portal/xtream/feature').then(
@@ -133,4 +98,27 @@ export class PlayerService {
}
);
}
async openExternalPlayback(
playback: ResolvedPortalPlayback,
player: ExternalPlayerName
): Promise<ExternalPlayerSession | void> {
const ipcEvent =
player === 'mpv' ? OPEN_MPV_PLAYER : OPEN_VLC_PLAYER;
return await this.dataService.sendIpcEvent<ExternalPlayerSession>(
ipcEvent,
{
url: playback.streamUrl,
title: playback.title,
thumbnail: playback.thumbnail,
'user-agent': playback.userAgent,
referer: playback.referer,
origin: playback.origin,
headers: playback.headers,
contentInfo: playback.contentInfo,
startTime: playback.startTime,
}
);
}
}
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "السمة الفاتحة",
"SYSTEM_THEME": "سمة النظام"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "إخفاء قائمة القنوات",
"SHOW_CHANNELS_LIST": "إظهار قائمة القنوات",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "المظهر الفاتح",
"SYSTEM_THEME": "مظهر النظام"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "إخفاء قائمة القنوات",
"SHOW_CHANNELS_LIST": "إظهار قائمة القنوات",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Светлая тэма",
"SYSTEM_THEME": "Сістэмная тэма"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Схаваць спіс каналаў",
"SHOW_CHANNELS_LIST": "Паказаць спіс каналаў",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Hell",
"SYSTEM_THEME": "System"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Senderliste ausblenden",
"SHOW_CHANNELS_LIST": "Senderliste einblenden",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Ανοιχτόχρωμο θέμα",
"SYSTEM_THEME": "Θέμα συστήματος"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Απόκρυψη λίστας καναλιών",
"SHOW_CHANNELS_LIST": "Εμφάνιση λίστας καναλιών",
+29
View File
@@ -358,6 +358,35 @@
"LIGHT_THEME": "Light theme",
"SYSTEM_THEME": "System theme"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Hide channels list",
"SHOW_CHANNELS_LIST": "Show channels list",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Tema claro",
"SYSTEM_THEME": "Tema del sistema"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Ocultar lista de canales",
"SHOW_CHANNELS_LIST": "Mostrar lista de canales",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Thème clair",
"SYSTEM_THEME": "Thème du système"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Masquer la liste des chaînes",
"SHOW_CHANNELS_LIST": "Afficher la liste des chaînes",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Tema chiaro",
"SYSTEM_THEME": "Tema di sistema"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Nascondi elenco canali",
"SHOW_CHANNELS_LIST": "Mostra elenco canali",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "ライトテーマ",
"SYSTEM_THEME": "システムテーマ"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "チャンネル一覧を非表示",
"SHOW_CHANNELS_LIST": "チャンネル一覧を表示",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "밝은 테마",
"SYSTEM_THEME": "시스템 테마"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "채널 목록 숨기기",
"SHOW_CHANNELS_LIST": "채널 목록 표시",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Licht thema",
"SYSTEM_THEME": "Systeemthema"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Zenderlijst verbergen",
"SHOW_CHANNELS_LIST": "Zenderlijst tonen",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Jasny motyw",
"SYSTEM_THEME": "Motyw systemowy"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Ukryj listę kanałów",
"SHOW_CHANNELS_LIST": "Pokaż listę kanałów",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Tema claro",
"SYSTEM_THEME": "Tema do sistema"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Ocultar lista de canais",
"SHOW_CHANNELS_LIST": "Mostrar lista de canais",
+29
View File
@@ -356,6 +356,35 @@
"LIGHT_THEME": "Светлая тема",
"SYSTEM_THEME": "Системная тема"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "Контейнер потока, вероятно, не поддерживается встроенным браузерным плеером",
"DESCRIPTION": "Chromium/Electron может не воспроизводить этот контейнер внутри приложения. Попробуйте MPV или VLC с более широкой поддержкой кодеков."
},
"UNSUPPORTED_CODEC": {
"TITLE": "Кодек потока, вероятно, не поддерживается встроенным браузерным плеером",
"DESCRIPTION": "Поток сообщает кодеки, которые встроенный Chromium-плеер может не декодировать. MPV или VLC часто справляются с такими потоками."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "Браузерный плеер не смог декодировать этот поток",
"DESCRIPTION": "Воспроизведение началось, но медиапайплайн завершился ошибкой декодирования. Внешний плеер может обработать этот поток лучше."
},
"NETWORK_ERROR": {
"TITLE": "Не удалось загрузить поток",
"DESCRIPTION": "Плеер сообщил сетевую ошибку или ошибку загрузки у провайдера. Проверьте URL потока, заголовки или доступность провайдера."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "Поток может быть зашифрован или защищен DRM",
"DESCRIPTION": "Браузерный плеер не может продолжить из-за ошибки ключа или шифрования. Внешний плеер тоже может не помочь, если требуется DRM провайдера."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "Браузерный плеер сообщил ошибку воспроизведения",
"DESCRIPTION": "Поток не воспроизвелся во встроенном плеере, но ошибка не указала конкретную причину в кодеке, контейнере или сети."
},
"ACTION_OPEN_MPV": "Открыть в MPV",
"ACTION_OPEN_VLC": "Открыть в VLC",
"ACTION_COPY_URL": "Скопировать URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Скрыть список каналов",
"SHOW_CHANNELS_LIST": "Показать список каналов",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "Açık tema",
"SYSTEM_THEME": "Sistem teması"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "Kanal listesini gizle",
"SHOW_CHANNELS_LIST": "Kanal listesini göster",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "明亮模式",
"SYSTEM_THEME": "跟随系统"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "隐藏频道列表",
"SHOW_CHANNELS_LIST": "显示频道列表",
+29
View File
@@ -352,6 +352,35 @@
"LIGHT_THEME": "亮色主題",
"SYSTEM_THEME": "跟隨系統"
},
"PLAYBACK_DIAGNOSTICS": {
"UNSUPPORTED_CONTAINER": {
"TITLE": "This stream container is likely unsupported by the browser player",
"DESCRIPTION": "Chromium/Electron may not decode this container inline. Try MPV or VLC for broader codec support."
},
"UNSUPPORTED_CODEC": {
"TITLE": "This stream codec is likely unsupported by the browser player",
"DESCRIPTION": "The stream advertises codecs that the built-in Chromium player may not decode. MPV or VLC can often play it."
},
"MEDIA_DECODE_ERROR": {
"TITLE": "The browser player could not decode this stream",
"DESCRIPTION": "Playback started but the media pipeline failed while decoding. An external player may handle this stream better."
},
"NETWORK_ERROR": {
"TITLE": "The stream could not be loaded",
"DESCRIPTION": "The player reported a network or provider loading error. Check the stream URL, headers, or provider availability."
},
"DRM_OR_ENCRYPTION": {
"TITLE": "This stream may be encrypted or DRM-protected",
"DESCRIPTION": "The browser player cannot continue with the reported encryption/key error. External playback may still fail if provider DRM is required."
},
"UNKNOWN_PLAYBACK_ERROR": {
"TITLE": "The browser player reported a playback error",
"DESCRIPTION": "The stream failed in the built-in player, but the error did not identify a specific codec, container, or network cause."
},
"ACTION_OPEN_MPV": "Open in MPV",
"ACTION_OPEN_VLC": "Open in VLC",
"ACTION_COPY_URL": "Copy URL"
},
"LAYOUT": {
"HIDE_CHANNELS_LIST": "隱藏頻道列表",
"SHOW_CHANNELS_LIST": "顯示頻道列表",