如何使用 getUsermedia 和 mediaRecorder 下载录音并给出视频规格?

2023-12-01

navigator.mediaDevices.getUserMedia().then(stream=>{

//a recorder is created
var mediaRecorder = new MediaRecorder(stream);

//started it
mediaRecorder.start();

//an array is created that receives all the data
var recordedChunks = [];

//fill it
mediaRecorder.ondataavailable = function(e){recordedChunks.push(e.data)};

//when stopped downloads the recording
mediaRecorder.onstop=function(){

  var blob = new Blob(recordedChunks, {
    'type': 'video/mp4'
  });
  var url = URL.createObjectURL(blob);
  var a = document.createElement('a');
  document.body.appendChild(a);
  a.style = 'display: none';
  a.href = url;
  a.download = 'test.webm';
  a.click();
  window.URL.revokeObjectURL(url);
}
}.catch()

该代码对我有用,但是当下载视频时,下载的内容没有详细信息 (左图:从youtube下载的视频;右图:使用mediaRecorder下载的视频)https://i.stack.imgur.com/IxmYD.png

另一个问题是视频中无法执行必要的操作(加速、转到特定时间),因为它没有结束时间https://i.stack.imgur.com/yF7qx.png

我该怎么做才能为其提供所需的详细信息 - 格式?

从网络摄像头下载录音时,此页面也存在相同的问题https://webrtc.github.io/samples/src/content/getusermedia/record/


如果要为 MediaRecorder 创建的录制设置 MIME 媒体类型,则必须在调用其时执行此操作构造函数。例如:

stream = await navigator.mediaDevices.getUserMedia (constraints)
const mediaRecorder = new MediaRecorder(stream, {mimeType: 'video/mp4'})

但大多数浏览器(即 Chromium 和 Firefox)MediaRecorder 不会生成video/mp4。相反,他们生产video/webm。您可以使用 MediaRecorder.isTypeSupported() 来确定它是否可以处理您想要的类型,或者您可以采用它为您提供的任何类型。mediaRecorder.mimeType是 MediaRecorder 实例的一个属性,告诉您获得的 MIME 类型。

如果您想从这些浏览器获取 mp4 录音,则必须对其进行后处理。

当然,现场录音没有长度的说法是正确的。 MediaRecorder 生成适合现场播放的数据流。同样,如果您想让它可搜索并应用结束时间,您需要使用后处理。 MediaRecorder 不这样做。

ffmpeg 是一种不错的视频后处理方法。解释如何做到这一点远远超出了 StackOverflow 答案的范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 getUsermedia 和 mediaRecorder 下载录音并给出视频规格? 的相关文章

  • 如何确定并打印 jQuery 版本?

    是否有一个 jQuery 函数可以返回当前加载的 jQuery 版本 你可以使用这个 fn jquery or if you re using noConflict jQuery fn jquery 当 jQuery 构建时它会自动更新 定
  • 使用 jQuery 更改父元素样式

    我有下一个 html 设置 div class one div class two a href class three Click a div div 我想更改具有类的元素的背景颜色 one当我点击元素时 three使用 jQuery 这
  • 获取express.js中间件请求中“#”后的url

    我需要获取服务器中间件上的 url 使用express js 我用req url但是当 url 开头时 some urlreq url 返回 与req path 有没有办法获取url之后 在express js中 No URL 中以 符号永
  • 为什么我的反应路由器链接将我带到页面中间?

    我的网站上有很多链接 但只有一个可以执行此操作 它没有将我带到导航栏的顶部 而是转到内容的中间 知道为什么会这样吗 这是一个页面 其中有一个 map经历一些JSON 这是渲染div页面下方的文本元素 如果重要的话 这是一些可能相关的代码 路
  • MailTo 从 Javascript

    我有一个链接按钮 用于从页面内容构建邮件 从 javascript 启动它而不打开空白窗口或干扰调用它的窗口的最佳方法是什么 function Email var sMailTo mailto var sBody var alSelecte
  • 如何在通过 .ajaxForm() 提交表单之前执行一些操作?

    我正在使用 ajaxForm 框架来发送我的数据 而无需重新加载我的页面 ReplayForm ajaxForm success function data alert Success 现在 我想在提交表单之前检查一些条件 如果条件为假 则
  • Angular 4 过滤器搜索自定义管道

    所以我试图构建一个自定义管道来在 ngFor 循环中执行多个值的搜索过滤器 我花了几个小时寻找一个好的工作示例 其中大多数都是基于以前的版本 并且似乎不起作用 所以我正在构建管道并使用控制台为我提供值 但是 我似乎无法显示输入文本 以下是我
  • 在 jQuery .live() 方法中模拟“焦点”和“模糊”

    Update 从 jQuery 1 4 开始 live 现在支持focusin and focusout events jQuery http www jquery com currently1 doesn t support blur o
  • Mapbox GL 中的 MaxBounds 和自定义非对称填充

    我有一个 Mapbox GL JS 应用程序 在地图上显示一些小部件 为了确保地图上的任何内容都不会被它们隐藏 我使用以下命令添加了一些填充map setPadding 这是一个不对称的 在我的例子中左边比右边大 它按预期工作 例如fitB
  • 设置双指缩放时精确的滚动位置

    我正在创建一个地图应用程序 它将标记图像放置在画布上并滚动到它 我正在使用浏览器的捏缩放和滚动来放大 缩小地图 然而 我注意到有一些奇怪的行为 我想知道如何解决它 这有点难以解释 但我们开始吧 假设您处于网页的标准缩放级别 无法进一步缩小
  • API 使用令牌向 odoo 进行身份验证

    我想使用令牌从 Express 应用程序向 Odoo 进行身份验证 我在用odoo xmlrpc https www npmjs com package odoo xmlrpc连接 Odoo 的节点模块 我的快递应用程序 Odoo 要求 A
  • 如何在 React Native 上显示 SVG 文件?

    我想显示 svg 文件 我有一堆 svg 图像 但我找不到显示的方式 我尝试使用Image and Use的组成部分反应本机 svg https github com magicismight react native svg但他们不这样做
  • 将 Firebase FCM 添加到 ReactJS 应用程序

    我正在尝试向我的 ReactJS 应用程序中的用户发送推送通知 我已添加 firebase 请求用户通知权限 这正在发挥作用 但现在我想注册设备令牌 但这给了我错误 消息传递 我们无法注册默认的 Service Worker 无法注册 Se
  • 如何在 Web 服务器上设置 gzip 压缩?

    我有一个嵌入式网络服务器 总共有 2 兆空间 通常 您使用 gzip 文件对客户端有利 但这会节省我们在服务器上的空间 我读到你可以只 gzip js 文件并将其保存在服务器上 我在 IIS 上测试过 但没有任何运气 为了使这项工作成功 我
  • 如果一个对象结构与另一个对象结构不匹配/不匹配,如何引发异常

    我将读取格式正确的用户输入对象 也就是说 输入对象现在可以具有接口中未定义的任何键或子结构 如果用户提供了无效的对象 我如何抛出异常 预定义接口 export interface InputStructureInterface tableN
  • 如何将 Vue.js 作用域样式应用于通过视图路由器加载的组件?

    如何将 Vue js 作用域样式应用于通过以下方式加载的组件
  • 类中可以有生成器 getter 吗?

    我的意思是吸气剂是发电机 我相信这一切都是 ES6 也许像这样 class a get count let i 10 while i yield i let b new a for const i of b count console lo
  • 如何在 webpack 中渲染嵌套的 SASS?

    采取以下CSS MyComponent color blue Button color red 以及以下 React 组件 import React from react import classes from MyComponent sc
  • PDF 在 Safari 中隐藏 Jquery Modal

    这是与我有关的事情this https stackoverflow com questions 24052681 pdf hide jquery modal in ie问题 在 IE 中 我在对话框中使用 iframe 解决了问题 所以它工
  • MongoDB:javascript执行失败:无法在 src/mongo/shell/collection.js 保存 DBQuery 对象

    在 MongoDb 中 当我尝试修改集合中的现有文档时 它会生成以下异常 javascript execution failed can t save a DBQuery object at src mongo shell collecti

随机推荐

  • 双击突出显示单元格值以进行复制

    我有一个jqGrid 我想突出显示一行 ondbClickRow 中的特定单元格 这将使用户能够轻松地将单元格的值复制到剪贴板 有人可以指导我如何做到这一点吗 谢谢 一般来说这是可能的 但您可能应该关闭行选择以立即看到突出显示 所以代码如下
  • mod_rewrite 删除 GET 变量

    我正在尝试采取 example com home lang fr foo bar 并重定向到 example com fr home foo bar I tried RewriteCond QUERY STRING lang a z 2 R
  • 传递给线程的 lambda 内的调用函数

    我正在尝试创建一个对象 可以为它的构造函数提供一个函数及其参数 然后 此类将在 lambda 中调用给定函数 并将该函数传递给线程 类似的东西 class worker public template
  • 通过单个函数返回另一个函数的多个参数

    由于我选择了一个误导性的问题标题 因此该问题被作为完全相同的重复问题关闭 这没有错 但提出了一个经常讨论的问题 例如在这个问题 由于内容涉及 Stackoverflow 上从未涉及的更具体的主题 因此我希望重新讨论该问题 现在发生了这种情况
  • Android ProgressDialog 存在线程问题

    我在进程运行时使用 ProgressDialog 时遇到问题 我已经尝试了所有可能的错误方法 并且查看了许多网站 这些网站提供了我正在尝试做的事情的示例 但是 我仍然遇到线程在 ProgressDialog 出现之前运行的问题 这是我的最新
  • Oracle 中 MySQL 临时表的替代方案

    我注意到这两个系统中临时表的概念是不同的 我沉思了一下 我在MySQL中有以下场景 删除临时表 a 如果存在 创建临时表 a 通过存储过程用数据填充它 在另一个存储过程中使用数据 如何在Oracle中实现相同的场景 我可以 最好在一个过程中
  • R,时间序列,Arima模型,预测,每日数据[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我试图用2012年1月16日到2013年10月10日的每日数据进行一些需求预测 但预测结果很糟糕 有什么线索吗 这就是数据在图中的样子 存在每周和每月的季节性 即 工作日期间需求较多
  • 拆分表达式

    我必须根据所有括号字符串都应拆分的标准将字符串拆分为子字符串列表 可以说我有 9 2 3 4 2 那我应该得到 4 2 3 6 and 9 2 18 基本目标是我知道哪个内括号将首先被执行 然后执行它 请帮忙 如果您能建议一种使用 re 模
  • 函数内部“.append”和“+”语义差异

    我很难理解这 3 个示例之间的区别 example1 list1 1 2 3 4 list1 list1 6 list1 append 1000 print Example 1 list1 example 2 def f j j j 6 j
  • 更改 Xcode 项目的单一语言

    如何在不进行本地化的情况下更改项目使用的默认语言 如果我希望我的应用程序是日语或意大利语怎么办 仅使用日语或意大利语文本就足够了吗 如何更改 iTunes 上显示的语言 使其显示为日语或意大利语 通常 您放入主文件夹中的资源被假定位于Def
  • 通过AJAX将表单数据传递到mySQL

    我使用 JavaScript 和 AJAX 将表单数据发送到 php 处理文件 然后填充 SQL 数据库 而无需刷新初始表单页面 php SQL 连接正常 但表单数据未正确发送 有两个字段 一个称为 选择 的单选组 以及一个称为 评论 的文
  • 使用多个参数调用特征文件

    我想调用具有 3 个参数的功能文件 第一个参数用于创建具有该名称的实体 其余 2 个参数用于验证创建的实体是否具有特定字段所需的值 我怎样才能在空手道中做到这一点 您可以将所有输入保存在一个 JSON 中 并将其传递给您的功能 如本文档中所
  • 如何使用密码保护已有的 PDF?

    如何为现有的PDF设置密码 你有没有看过加密 pdf我书第12章中的例子 就这么简单 public void encryptPdf String src String dest throws IOException DocumentExce
  • SELECT TOP 1 返回多条记录

    我将在下面链接我的数据库 我有一个名为 TestMonday1 的查询 它的作用是返回 NoOfFrees 最少的学生 并将查询结果插入到课程表中 运行查询应该有助于解释我的意思 我遇到的问题是我的 SQL 代码有 SELECT TOP 1
  • 在多个页面上绘制

    我正在尝试编写一个绘制 ggplot 的函数facet wrap绘制多个页面 这只是一个 hack 因为这个功能似乎在 ggplot2 功能待办事项列表中 我做了一些小计算来找到我需要的页数 我的行数data frame我非常有信心这一切都
  • 在没有 pdfkit 的情况下将 Pandas DataFrame 保存为 PDF 文件格式

    我想将 pandas 数据框保存为 pdf 格式 import pdfkit as pdf config pdf configuration wkhtmltopdf C Program Files wkhtmltopdin wkhtmlto
  • XSLT - 不得复制节点值

    我想使用 XSLT 转换一些 xmi 文件 一切正常 但我不明白为什么标记值 Version 1 0 和 EAUML Version 1 0 由我的模板 packagedElement 复制 请参阅输出 xmi 文件
  • SQL Server GUID 排序算法。为什么?

    唯一标识符的问题 我们有一个现有的数据库 它广泛使用唯一标识符 不幸的是 作为主键和一些表的一些可为空的列 我们遇到过这样的情况 在这些表上运行的一些报告对这些唯一标识符进行排序 因为表中没有其他列可以提供有意义的排序 这不是很讽刺吗 目的
  • 从 ID 列表中删除 mysql 服务器中的行 C#

    我正在尝试从 C 中的 ID 列表中删除 MySQL 表中的一系列行 表中有一个employeeID 行 基本上我的问题是我会使用什么样的语法 你可能会使用IN你的条款DELETE DELETE FROM EmployeeTable WHE
  • 如何使用 getUsermedia 和 mediaRecorder 下载录音并给出视频规格?

    navigator mediaDevices getUserMedia then stream gt a recorder is created var mediaRecorder new MediaRecorder stream star