我尝试使用JavaScript的MediaSource API在React自定义钩子中流式传输视频文件。
这是我的代码片段:
这是我的代码片段:
const useMyHook = (videoRef: React.MutableRefObject<HTMLVideoElement | null>) => {
...
useEffect(() => {
const mediaSource = new MediaSource();
videoRef.current!.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', () => {
// this never happens
});
}, []);
...
}
const MyComponent = () => {
const videoRef = useRef<HTMLVideoElement | null>(null);
const {} = useMyHook(videoRef);
return (
<>
<video ref={videoRef} controls />;
</>
);
};
看起来mediaSource
从未触发'sourceopen'
事件。
此外,当我尝试在简单的HTML和JavaScript项目中使用此代码时,它可以正常工作。
我曾尝试使用document.getElementByTagName
代替useRef
或直接在我的组件中使用它,但结果相同。
有人能告诉我问题出在哪里吗?是React或其他什么原因导致的吗?
useEffect
钩子中的代码应该在videoRef.current!.src
行抛出错误。注意!
。 - Emiel ZuurbiermediaSource.addEventListener('sourceopen'...
。 - Emiel Zuurbier