如何在 DASH 内容的

2023-12-04

我已使用以下方式在网页中嵌入了 DASH 视频<video>标签。该内容有多个音轨。我想支持音轨更改。
I used audioTracks[i].enable选择音轨的功能。但音轨没有改变。

if (selected == i) {
    audioTracks[i].enable = TRUE;
}
  1. 这是正确的方法吗?
  2. 还有其他方法可以更改 DASH(.mpd) 内容的音轨吗?

通过音轨更改,我的意思是启动可以传播到较低级别的音轨更改事件。本身不实施轨道变更。

我进一步尝试,
video标签的audioLanguage和lang属性为
document.getElementById(id).lang = selectedIndex;
and
document.getElementById(id).audioLanguage = selectedIndex;
即使这似乎也不起作用。

更清楚地说,正如 @Svenskunganka 的回答中提到的audioTracks[i].enable=TRUE;所使用的 Chromium 版本不支持。
那么,有没有其他方法可以做到这一点audioTracks[i].enable=TRUE does.
我不想实现轨道更改功能。这里的要求只是向浏览器指示跟踪更改。

EDIT:
正如我们所看到的https://www.w3schools.com/tags/av_prop_audiotracks.asp。 Chrome 不支持此属性。那么指示必须更改轨道的替代方法是什么?
还有其他办法吗?或者audioTrack是唯一的方法(据我目前从搜索中了解到的)?


您可以请求.mpd文件使用fetch() or XMLHttpRequest(), 阅读application/dash+xml使用文本形式响应.text() or .responseText,将文本传递给DOMParser()实例.parseFromString()创建一个#document, 迭代AdaptationSet的子节点document.documentElement Period元素、使用.querySelector() to get Representation然后得到子节点BaseURL的子节点Representation,其中 URL 是.textContent至少在引用的文件处具有同一目录中文件的路径。

我们还可以选择视频 URL,使用Promise.all()加载和播放视频和音频曲目以实现通话HTMLMediaElement.captureStream(),我们.clone()并传递给resolve() of Promise构造函数,在链式.then() call .addTrack() on a MediaStream()每个轨道的实例,然后设置<video> .srcObject to the MediaStream包含音频和视频轨道。

const video = document.querySelector("video");

const mediaStream = new MediaStream();

const url = "https://dash.akamaized.net/dash264/TestCases/10a/1/"

const mpd = "iis_forest_short_poem_multi_lang_480p_single_adapt_aaclc_sidx.mpd";

const avc = [];

video.oncanplay = video.play;

fetch(`${url}${mpd}`)
.then(response => response.text())
.then(text => {
  const parser = new DOMParser();
  const xml = parser.parseFromString(text, "application/xml");
  const period = xml.documentElement;
  const tracks = period.querySelectorAll("AdaptationSet");
  for (let track of tracks) {
    const representation = track.querySelector("Representation");
    const {textContent:currentTrack} = representation.querySelector("BaseURL");
    console.log(currentTrack);
    // filter for specific track here, for example
    // where "english" is included within `.textContent` of node
    if (/english/i.test(currentTrack) || /avc/.test(currentTrack)) {
      avc.push(`${url}${currentTrack}`);
    }        
  }
  Promise.all(avc.map(media => {
    return new Promise(resolve => {
      let v = document.createElement("video");
      v.src = media;
      v.volume = 0.5;
      v.muted = true;
      v.oncanplay = () => {
        v.play();
        resolve({
          currentMedia:v
        , stream:v.captureStream().clone().getTracks()[0]
        })
      }
    })
  }))
  .then(tracks_ => {
    for (let {stream, currentMedia} of tracks_) {
      mediaStream.addTrack(stream);
      currentMedia.muted = false;
    }
    video.srcObject = mediaStream;
  })
})
<video controls></video>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 DASH 内容的

  • jQuery .push 到 .get 调用中的数组给出空结果

    谁能告诉我为什么下面给我一个空字符串 当我console log contentArray in the get 回调函数它显示数据 但是当我尝试在下面的代码中执行它时 结果为空 sectionArray contentArray func
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 为什么 window 与 Internet Explorer 中的 window.self 不同?

    关于我如何遇到这个问题有一个复杂的背景故事 但为什么self属性不完全等于窗口本身 在 Safari 和 Firefox 及其朋友中 结果如我所料 gt window window self true gt window window se
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • JavaScript RegEx:不同的结果:使用字符串和使用正则表达式“文字”构建模式?

    使用 RegExp 文字与字符串之间有什么区别吗 http jsfiddle net yMMrk http jsfiddle net yMMrk String prototype lastIndexOf function pattern p
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 改变 JavaScript 中的顶部填充

    以下是我在 css 中设置顶部填充的方法 body font size font size px margin 0 padding 100px 0 20px 0 width 100 important 如何使用最简单的 javascript
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green

随机推荐

  • 我应该为 TextBox 控件中的序列化数据指定哪种编码

    假设我有一个TextBox in my WinForms应用 当用户单击按钮时 应用程序应发送存储在此的序列化值TextBox通过 TCP 对于我正在使用的序列化Newtonsoft Json像这样的库 string json JsonCo
  • Tcl:[信息级别] vs. [信息框架]

    框架和执行级别之间有什么区别 我写了一个小例子来找出答案 我意识到每次调用过程时级别编号都会增加 另一方面 帧数在每次增加 过程调用 源命令 评估命令 etc 出于这个原因 我开始将关卡视为框架的子集 现在我正在调试一些现实生活中的代码 我
  • 我可以检测 iOS 的“深色”设置吗?

    我注意到 当启用 深色 iOS 系统设置时 我的应用程序看起来不太好 有些导航按钮是白色的 有些则变暗为灰色 有什么方法可以检测此设置是否启用 事实证明它很容易被发现 假设navigationBar配置为白色tintColor 刚刚读书na
  • Python和sqlite3:删除多行[重复]

    这个问题在这里已经有答案了 我需要使用 SQL 语句从 sqlite3 表中删除多行 例如 DELETE FROM table WHERE id IN 23 19 35 16 12 78 我的问题是用 Python 进行编码 并将 ids
  • 赋予 元素自动对焦

    使用以下代码 我尝试在加载页面时给予 a 元素自动聚焦 a href setting class button big active Next vocabulary a 虽然这适用于输入字段 但不适用于该元素 有人能给我解释一下吗 Rega
  • 使用 jquery 悬停地图区域精灵

    我正在开发我的第一个实际的 WordPress 网站 但我在使用 jquery 时遇到了一些问题 我真的希望有人能在这里帮助我 所以我想做的是根据当前悬停的地图区域来定位我的 div 背景 我在这里找到了一个例子 http ubytujna
  • Dal(带有实体框架)和模型层进入 MVC

    首先 我使用EF进入Dal层 与 MVC 分离的项目 相同的解决方案 从 EF 的 EDMX 文件生成的模型是来自的实际模型Model层 如果是这样 我如何访问这些模型以在 MVC 中工作View层 我认为直接从视图访问数据层来使用这些模型
  • 从现有数据库生成 JPA 2 实体

    如何从现有数据库生成符合 JPA2 标准的 Entity 我找到了这个 Question 仍然不清楚 JBoss 是否会生成兼容的 JPA2 而且我也想知道是否有一种独立于供应商的方法来做到这一点 您可以使用类似的插件日食大理为你做这件事
  • ViewPager 中的片段在旋转时不会在其 RecyclerView 中显示任何内容

    我在与 TabLayout 集成的 ViewPager 中有 4 个片段 这些片段中的每一个都包含一个 RecyclerView 因为我正在显示未知数量的列表项 这些项目是按日期加载的 因此我有两个按钮可以让您更改日期 然后根据设置的日期加
  • 在 JSF 组件中使用 render 是否足以安全地防止伪造的操作调用?

    我们一直使用自定义 Secure 拦截器来保护我们的支持 bean 方法 以防止伪造该方法的调用 但最近 我突然意识到 如果调用操作的组件未呈现 则这些方法将无法访问 据我了解 JSF 将生成视图 并且如果组件不是根据权限呈现的 例如带有
  • Azure 事件中心是否保证至少一次传递?

    我正在构建一个 Azure Web 应用程序 我想将活动日志发送到 Azure 事件中心 如果应用程序主机和事件中心之间的连接丢失会发生什么 事件中心客户端是否实现某种本地队列 TLDR 是的 EventHubs 提供至少一次交付 Even
  • ASP.NET:自定义动态填充站点地图(SiteMap Provider)

    我正在尝试写我自己的第一个SiteMapProvider子类 它旨在使用一堆不同的数据库查找动态填充 就像我在网上找到的所有示例一样 然而 有很多事情我不太清楚 这是我的第一个问题 Why is StaticSiteMapProvider几
  • 函数内部由 ddply 中指定的变量组成的子集

    通常 我需要通过对应用 ddply 的另一个 data frame 进行子集化的变量来对函数内的 data frame 进行子集化 为此 我再次显式地在函数内写入变量 我想知道是否有更优雅的方法来做到这一点 下面我举了一个简单的例子 只是为
  • 如何使用 matlab 从 yuv 420 视频剪辑中提取帧并将它们存储为不同的图像?

    如何从 yuv 420 视频中提取帧 假设我想将它们存储为静态图像 如何 这是来自MathWorks 文件交换那应该做你想做的事 将 YUV CIF 4 2 0 视频文件转换为图像文件 by Da Yu 功能loadFileYuv从上面的提
  • 中的每个文件创建 FormData 实例

    我正在尝试使用输入文件multiple属性并拆分 formData 这样我就可以为多文件元素中的每个文件提供一个 formData HTML
  • 使用 ITextSharp 创建可填写的 PDF 表单

    我使用 Acrobat Adob e 8 创建了一个包含可填写字段的 PDF 文件 可以使用 ITextSharp 而不是 Adob e 进行编程吗 注意 我并不是指使用 ITextSharp 填写 PDF 而是我想create使用 ITe
  • 将时区添加到 data.table 中的 POSIXct 对象

    我有一个 data table 对象 其中日期和时间列存储为 IDate ITime 对象 我还有一个时区列 其中时区以字符形式给出 现在我想创建一个使用 POSIXct 格式的 DateTime 列 但是我不知道如何向对象添加正确的时区
  • 有没有办法判断 python 是否使用“--with-threads --enable-shared”进行配置和编译?

    这是针对 Debian Squeeez 上的 Python 2 6 6 我试图查明 debian 附带的二进制文件是否配置了以下标志 with threads enable shared 就好像它们不是一样 我需要自己从源代码编译和安装 w
  • Solidity 中的动态数组

    我想声明一个简单的数组 动态列表 一个set函数推入一个字符串和一个get函数返回动态数组中保存的所有字符串 我搜索了很多但找不到这个简单的东西 这是我的解决方案 你需要experimental ABIEncoderV2返回字符串数组 pr
  • 如何在 DASH 内容的

    我已使用以下方式在网页中嵌入了 DASH 视频