To build custom UI controls, you can use ReactPlayer in conjunction with media-chrome. Set controls={false} on ReactPlayer and use the slot="media" attribute.
import ReactPlayer from "react-player";
import {
MediaController,
MediaControlBar,
MediaTimeRange,
MediaTimeDisplay,
MediaVolumeRange,
MediaPlaybackRateButton,
MediaPlayButton,
MediaSeekBackwardButton,
MediaSeekForwardButton,
MediaMuteButton,
MediaFullscreenButton,
} from "media-chrome/react";
export default function Player() {
return (
<MediaController
style={{
width: "100%",
aspectRatio: "16/9",
}}
>
<ReactPlayer
slot="media"
src="https://stream.mux.com/maVbJv2GSYNRgS02kPXOOGdJMWGU1mkA019ZUjYE7VU7k"
controls={false}
style={{
width: "100%",
height: "100%",
"--controls": "none",
}}
></ReactPlayer>
<MediaControlBar>
<MediaPlayButton />
<MediaSeekBackwardButton seekOffset={10} />
<MediaSeekForwardButton seekOffset={10} />
<MediaTimeRange />
<MediaTimeDisplay showDuration />
<MediaMuteButton />
<MediaVolumeRange />
<MediaPlaybackRateButton />
<MediaFullscreenButton />
</MediaControlBar>
</MediaController>
);
}