diff --git a/packages/core/src/tech/ShakaTech.ts b/packages/core/src/tech/ShakaTech.ts index 795817f..bf1809b 100644 --- a/packages/core/src/tech/ShakaTech.ts +++ b/packages/core/src/tech/ShakaTech.ts @@ -29,11 +29,27 @@ export default class DashPlayer extends BaseTech { load(src: string): Promise { super.setDefaultState(); - return this.shakaPlayer.load(src).catch(() => { - // TODO error handling + return this.shakaPlayer.load(src).catch((error) => { + this.handleLoadError(error); + throw error; }); } + private handleLoadError(error: any): void { + const errorDetails = error || {}; + const severity = errorDetails.severity ?? 2; + const fatal = severity > 1; + + const errorData = { + category: errorDetails.category?.toString() ?? 'unknown', + code: errorDetails.code?.toString() ?? 'unknown', + message: errorDetails.data?.[1]?.toString() ?? 'Load failed', + data: errorDetails.data ?? [] + }; + + this.emit(PlayerEvent.ERROR, { errorData, fatal }); + } + protected onBitrateChange() { const activeTracks = this.shakaPlayer .getVariantTracks()