Skip to content

useMediaBuffered() or ProgressBarBufferedRanges not working as expected. #5

@jorellmartis-kw

Description

@jorellmartis-kw

useMediaBuffered returns null , and ProgressBarBufferedRanges does not fill as im guessing the useMediaBuffered hook does not work.

Currently i have done a custom buffering and it seems to be working fine.
Something like this

function useBufferedRanges() {
  const media = Media.useMediaElement();
  const [ranges, setRanges] = useState<{ start: number; end: number }[]>([]);

  useEffect(() => {
    if (!media) return;

    const updateBuffered = () => {
      const buffered = media.buffered;
      const newRanges = [];
      for (let i = 0; i < buffered.length; i++) {
        newRanges.push({ start: buffered.start(i), end: buffered.end(i) });
      }
      setRanges(newRanges);
    };

    media.addEventListener("progress", updateBuffered);
    media.addEventListener("loadedmetadata", updateBuffered);
    media.addEventListener("timeupdate", updateBuffered);

    updateBuffered(); // initial call

    return () => {
      media.removeEventListener("progress", updateBuffered);
      media.removeEventListener("loadedmetadata", updateBuffered);
      media.removeEventListener("timeupdate", updateBuffered);
    };
  }, [media]);

  return ranges;
}


`````And then im simply using ranges in the progressbar as follows
  <ProgressBarRoot className="grow relative flex items-center select-none touch-none h-4">
            <Slider.Track className="relative bg-gray-700/40 grow rounded-full h-2">
              <BufferedBar />
              <Slider.Range className="absolute h-full rounded-full bg-green-500" />
            </Slider.Track>
            <StyledProgressBarTooltip />
            <Slider.Thumb className="block w-4 h-4 rounded-full bg-green-500 outline-none z-20 -mt-1" />
          </ProgressBarRoot>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions