MediaSource 从不在 React 中发出 sourceopen 事件

2024-03-16

我正在尝试在 React 自定义挂钩中使用 Javascript 的 MediaSource API 流式传输视频文件。

这是我的代码片段:

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' event.

更重要的是,当我尝试在不同的项目中使用简单的 html 和 javascript 来使用此代码时,它工作得很好。

我试图使用document.getElementByTagName代替useRef或者直接在我的组件中使用它,但结果相同。

有人可以告诉我有什么问题吗? React 有什么问题吗?


实例化并维护状态MediaSource在整个组件范围内:

import React, { useState, useEffect, useRef } from 'react'

const MyComponent = () => {
  const [mediaSource] = useState(new MediaSource())
  const videoRef = useRef<HTMLVideoElement | null>(null)

  // component init
  useEffect(() => {
    mediaSource.addEventListener('sourceopen', ...)
  }, [])

  // videoRef changes
  useEffect(() => {
    videoRef?.current!.src = URL.createObjectURL(mediaSource)
  }, [videoRef])
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MediaSource 从不在 React 中发出 sourceopen 事件 的相关文章

随机推荐

  • 如何在同一个项目中拥有 iOS 应用程序和 OS X 应用程序?

    我见过这个问题 https stackoverflow com questions 4872541 is it possible to have both an ios app and mac app in the same project
  • 可以安装 EGit:缺少要求:Git Team Provider Core

    所以我将 Coldfusion Builder 与 Ecplise 结合使用 我正在尝试在其中安装 EGit 以便我可以执行 Git 操作 我唯一能安装的是 EGit 0 11 1http download ecplise org rele
  • 如何使用 HTML 输入文件类型限制文件类型?

    如何使用 HTML 输入文件类型限制文件类型 我有这个
  • 编程错误:在 django 中同时使用 order_by 和 unique 时

    我有一个如下所示的模型 class ProductScore models Model client models ForeignKey User created models DateTimeField default datetime
  • Django 复合/嵌套/子表单?

    我正在寻找这些 Django 的更新版本超级形式 http code djangoproject com ticket 3706 似乎无法让它在 Django 1 2 中工作 特别是 我希望它能够与 ModelForms 一起使用 我的用例
  • 存储和查询气象数据大数据集的更好方法是什么

    我正在寻找一种便捷的方式来存储和查询大量气象数据 几TB 有关问题中间数据类型的更多信息 之前我一直在寻找 MongoDB 的方向 我自己之前的很多项目都使用过它 而且处理起来很舒服 但最近我发现了HDF5 http en wikipedi
  • 下拉菜单 - jQuery/CSS

    我正在做的下拉菜单有问题 请检查此屏幕截图 http img215 imageshack us img215 8449 hovermenu png http img215 imageshack us img215 8449 hovermen
  • JBoss类加载问题

    我有一个在 tomcat 上完美运行的 Web 应用程序 war 文件 现在我需要让这个相同的应用程序在 JBoss 4 2 2 上运行 同一 JBoss 实例上运行着其他应用程序 问题是当我尝试在 JBoss 上部署 war 应用程序时
  • Java 中是否存在可变的 URL/URI 对象?

    我有一个字符串形式的 URL 我希望对其进行各种修改 具体来说 如果查询字符串中的值已存在 我需要修改它们 如果不存在 则创建它们 在我看来 应该已经有一个现有的类 我可以使用我的 URL 作为字符串来构造该类 该类会将 URL 拆分为其组
  • 在unix中使用sed反转四个字母的长度

    如何反转四个长度的字母sed 例如 the year was 1815 反向至 the raey was 5181 这是我的尝试 cat filename sed s a z a z 2 1 但它并没有按照我的预期工作 不确定是否可以在所有
  • Android-NDK-添加本机支持-NDK 位置在首选项中无效

    我正在尝试使用调试模式 调试为 Android 本机应用程序 控制台说我需要添加本机支持 但是 当我按照说明进行操作时 它显示如下图 我应该如何处理 NDK 位置在首选项中无效 任何意见将是有益的 我对此很陌生 谢谢 该示例是 NDK 示例
  • 为带有附件的电子邮件设置多部分

    从我的应用程序中 我发送带有附件的邮件 完整的代码在这里 public int sendMail MailDraft mailDraftInstance mailInstance path Send the mail String mail
  • 为什么.NET Core DI容器不注入ILogger?

    我正在尝试在基于 NET Core 2 1 的 C 控制台应用程序中登录并运行 我将以下代码添加到我的 DI 声明中 var sc new ServiceCollection sc AddLogging builder gt builder
  • GDB 在 macOS Catalina 上冻结

    我在 mac 上运行了 helloworld 来尝试 GDB 但在输入 run 后输出 New Thread 0x1903 of process 69034 然后就什么也没有了 我等了一个小时了 还是没有任何动静 完成认证并禁用startu
  • 使用 PDO 连接 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 刚刚开始使用 PDO 请解释我的连接
  • 如何使用 PHP 打印 JavaScript

    我需要将一些 JS 变量传递给 PHP 但遇到了一些麻烦 我已经尝试过以下方法 product id echo product id 但这只是将其打印为字符串 我将如何存储该 JS 变量然后echo它使用 PHP 吗 我对 PHP 很陌生
  • 不同数据的单独链接/关联表?

    哪种设计方法更好 为数据库中的每种数据类型建立单独的链接 关联表 还是将通用标识合并到公共链接 关联表中 因为如果没有例子这个问题真的没有意义 假设我有一个数据库 其中包含作者和书籍的数据 使用人们可以轻松掌握和识别的示例 为了简单起见 每
  • 如何用 C 语言检查 Windows 上的目录是否存在?

    Question 在 Windows C 应用程序中 我想验证传递给函数的参数以确保指定的路径存在 如何用 C 语言检查 Windows 上的目录是否存在 我知道你可能会陷入竞争条件 在你检查路径是否存在和使用它不再存在的时间之间 但我可以
  • 如何调整组合框下拉列表中的字符?

    如何证明下拉部分中列出的值的合理性ttk Combobox 我努力了justify center 但这似乎只配置所选项目 如果有的话也可以使用资源链接 我找不到它 try In order to be able to import tkin
  • MediaSource 从不在 React 中发出 sourceopen 事件

    我正在尝试在 React 自定义挂钩中使用 Javascript 的 MediaSource API 流式传输视频文件 这是我的代码片段 const useMyHook videoRef React MutableRefObject