@@ -2417,13 +2417,29 @@ function MediaPlayerTime(props: MediaPlayerTimeProps) {
24172417 const mediaCurrentTime = useMediaSelector (
24182418 ( state ) => state . mediaCurrentTime ?? 0 ,
24192419 ) ;
2420+ const mediaDuration = useMediaSelector ( ( state ) => state . mediaDuration ?? 0 ) ;
24202421 const [ , seekableEnd = 0 ] = useMediaSelector (
24212422 ( state ) => state . mediaSeekable ?? [ 0 , 0 ] ,
24222423 ) ;
2424+ const resolvedDuration = React . useMemo ( ( ) => {
2425+ const candidates = [
2426+ mediaDuration ,
2427+ seekableEnd ,
2428+ fallbackDuration ?? 0 ,
2429+ ] . filter ( ( duration ) => Number . isFinite ( duration ) && duration > 0 ) ;
2430+
2431+ return candidates . length > 0 ? Math . max ( ...candidates ) : 0 ;
2432+ } , [ fallbackDuration , mediaDuration , seekableEnd ] ) ;
2433+ const lastKnownDurationRef = React . useRef ( resolvedDuration ) ;
2434+
2435+ React . useEffect ( ( ) => {
2436+ if ( resolvedDuration > 0 ) {
2437+ lastKnownDurationRef . current = resolvedDuration ;
2438+ }
2439+ } , [ resolvedDuration ] ) ;
2440+
24232441 const effectiveDuration =
2424- Number . isFinite ( fallbackDuration ) && ( fallbackDuration ?? 0 ) > 0
2425- ? Math . max ( seekableEnd , fallbackDuration ?? 0 )
2426- : seekableEnd ;
2442+ resolvedDuration > 0 ? resolvedDuration : lastKnownDurationRef . current ;
24272443
24282444 const times = React . useMemo ( ( ) => {
24292445 if ( variant === "remaining" ) {
0 commit comments