diff --git a/packages/player/src/components/VideoPlayer.tsx b/packages/player/src/components/VideoPlayer.tsx index a741e84..36255d1 100644 --- a/packages/player/src/components/VideoPlayer.tsx +++ b/packages/player/src/components/VideoPlayer.tsx @@ -307,7 +307,8 @@ export const VideoPlayer = forwardRef( if (!videoRef.current) return; const video = videoRef.current; - const player = new shaka.Player(video); + const player = new shaka.Player(); + player.attach(video); playerRef.current = player; // Set up error handling @@ -364,15 +365,19 @@ export const VideoPlayer = forwardRef( }, }); } - await playerRef.current.load(source.src); + await playerRef.current.load(source.src, source.startTime, source.type); } onLoadedData?.(); mediaContext?.actions.setLoading(false); mediaContext?.actions.setError(null); } catch (error) { - const err = - error instanceof Error ? error : new Error("Failed to load source"); + let err; + if (error instanceof Error) + err = error; + else if (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string') + err = new Error(error.message); + else err = new Error("Failed to load source"); onError?.(err); mediaContext?.actions.setError(err); mediaContext?.actions.setLoading(false); diff --git a/packages/player/src/types/index.ts b/packages/player/src/types/index.ts index f78e350..7e1c2d9 100644 --- a/packages/player/src/types/index.ts +++ b/packages/player/src/types/index.ts @@ -58,6 +58,7 @@ export interface TextTrack { // Player source types export interface PlayerSource { src: string; + startTime?: number; type?: string; drm?: DrmConfig; } diff --git a/packages/player/src/types/shaka.d.ts b/packages/player/src/types/shaka.d.ts index 52e6c20..b01dc85 100644 --- a/packages/player/src/types/shaka.d.ts +++ b/packages/player/src/types/shaka.d.ts @@ -5,7 +5,9 @@ declare module "shaka-player" { namespace shaka { export class Player { constructor(video: HTMLVideoElement); - load(uri: string): Promise; + constructor(); + attach(video: HTMLVideoElement); + load(uri: string, startTime ? : number | null , mimeType ? : string | null): Promise; destroy(): Promise; configure(config: any): void; getConfiguration(): any;