- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 javascript 中创建了一个带有实时对话模块的应用程序。我正在使用 WebRTC 设置对等连接。信号和候选人似乎都工作正常。对等点不在同一个网络上。
在某些时候,音频开始向流中添加点击。质量开始很快下降。
我试图降低比特率,但无济于事。降低比特率的代码如下所示:
function setMediaBitrates(sdp, videoRate = 250, audioRate = 50) {
let f = navigator.userAgent.search("Firefox");
let modifier = 'AS';
// if (f > -1) {
// videoRate = (videoRate >>> 0) * 1000;
// audioRate = (audioRate >>> 0) * 1000;
// modifier = 'TIAS';
// }
//find the correct m lines (video and audio)
var lines = sdp.sdp.split("\n");
let i = 0;
while (i < lines.length) {
//if we find an m-line
if (lines[i].indexOf("m=") === 0) {
let video = lines[i].indexOf("m=video") === 0;
let audio = lines[i].indexOf("m=audio") === 0;
if (video || audio) {
while(i < lines.length && (lines[i].indexOf("i=") === 0 || lines[i].indexOf("c=") === 0)) {
i++;
}
// If we're on a b line, replace it
if (i < lines.length && lines[i].indexOf("b") === 0) {
lines[i] = `b=${modifier}:${video ? videoRate : audioRate}`;
} else if (i == lines.length) {
lines.push(`b=${modifier}:${video ? videoRate : audioRate}`);
i++;
} else {
i++;
lines.splice(i, 0, `b=${modifier}:${video ? videoRate : audioRate}`);
}
}
}
i++;
}
let s = lines.join("\n");
return { type : sdp.type, sdp : s };
}
使用速率限制,我有大约 15 分钟的良好音频,然后开始出现静态。
pc
.createOffer({ offerToReceiveVideo : useVideo ? 1 : 0 })
.then(sdp => {
pc.setLocalDescription(sdp);
let newSdp = setMediaBitrates(sdp);
dispatch(sendWebRTCSdp(activeConversationId, newSdp));
})
.catch(e => {});
最佳答案
你可以使用 MediaTrackSettings.noiseSuppression
但它仍然存在与 safari 的兼容性问题。你也可以禁用echoCancellation
因为有时硬件噪声抑制会对慢速互联网产生奇怪的影响。
我记得我在点击声音时遇到了问题,但应该将这些参数提供给 getUserMedia()
我确保设置 myVideo.muted = true;
其中myVideo
是页面上的视频元素,它应该被静音,这样您的声音和对方的声音就不会通过您的两个音频输出设备重复回声。
一些对我有帮助的来源:https://developers.google.com/web/updates/2017/12/disabling-hardware-noise-suppression
https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings/noiseSuppression
关于reactjs - 如何减少 Web RTC 噪音,对话期间的点击声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68351528/
我不小心 checkin 了变更集中的一些变更,我不想交付它们。 如何在 RTC 中将待定变更集的变更移动到 Unresolved 变更? 最佳答案 通常的选项是“discard”,但这会删除更改(它
我不小心交付了更改集,其中包括一些在 RTC 中具有本地系统特定配置的附加配置文件。有没有办法在交付后丢弃这些更改?我的意思是这些更改不应该作为其他团队成员的传入更改。 如果有,请提供任何指针。 最佳
在 SVN 中,我们有一个选项可以下载特定版本的代码。这提供了下载旧版本代码的灵活性,也用于构建。 RTC 中是否有选项可以下载特定版本的代码? 最佳答案 是的:一旦你在流上完成了一个 repo 工作
我想根据给定日期现有流的状态创建一个新流。为此,似乎合乎逻辑的做法是在过去的日期/时间在源流中创建基线,但我还没有找到一种方法来做到这一点。 除了组件/流的当前状态之外,是否可以在任何时间创建基线或快
我从本地源目录中删除了一个文件和包,我正在尝试使用 RTC 替换它。当我查看“待定更改”时,该文件没有出现以便再次添加。此外,当我右键单击项目并选择“比较”时,没有选项可以与存储库中的最新版本进行比较
如何获取 RTC 工作项的原始记录版本值。 不是当前版本,而是记录 RTC 项目的原始版本。 假设当前版本是 2.0 但原始 RTC 项目是针对 1.0 记录的。我需要版本的最后一个值是 1.0。 注
我有一个存储库工作区,它有一个默认的流目标。我想编辑流目标并使其仅适用于少数组件。这可以从 RTC Eclipse 客户端实现。如何从 RTC 命令行界面实现相同的目的。请引用RTC 3.0.1.3告
如何从 RTC workItem 中读取历史记录。我想在更改表单历史记录之前和之后检查一些属性更改及其值。通过爵士 API。这怎么可能?请帮忙 。 最佳答案 Ragarding属性,你可以在“Work
IBM 有这个 200+ Mb 的大型 Eclipse 插件,我可以在其中访问 Eclipse 的所有内容和所有功能。 是否有一个更小更轻量级的 Eclipse 插件可用,它可以访问开发人员需要的信息
RTC 中的“项目范围”可见性是什么? 这是否意味着项目区域的成员可以查看此流或工作区? 最佳答案 当您创建一个 repo 工作区时,您可以选择“project scoped”,以便项目区域的成员能够
我在 Windows 2008 服务器上安装了(基本设置)RTC 3.0.1。设置顺利通过,一切看起来都是“绿色”的。但是,当我导航到项目区域以创建一个新项目区域时,出现以下错误消息: The ser
任何人都可以使用 oslc 或 REST 调用帮助我获取其中的迭代和冲刺列表以及该冲刺中的工作项 最佳答案 This thread报告查询迭代可能有点棘手: For the purpose of ob
我正在使用 RTC, 我的 friend 提交了他们的更改集以供审核,我是审核者。我在任何地方都找不到他们的变更集。 最佳答案 This thread总结过程: 项目配置: Precondition
我正在基于 http://jazz.net 中提供的研讨会开发 IBM RTC Advisors。 . 现在我正在尝试将其 OSGi 模块中提供的 xsd 文档移植到注释+jaxb。 这是 XSD 的
我正在寻找一个查询或一种方法来定义我自己的查询或方法来搜索提及特定用户的所有工作项。我该怎么做? 最佳答案 这取决于你所说的“提及”是什么意思。 您可以对属性“全文”进行简单查询,以获取代表您的用户的
我是 RTC 的新手,所以我需要一个尽可能简单的答案。 我最近接受了另一个团队成员的变更集,我需要从我的工作区中丢弃该变更集。我这里的问题是我接受的变更集没有交付,它仍在等待审查批准。如果我放弃变更集
如果我有两个开发流(称为Stream1,Stream2),并且我想将这两个流合并为一个流。 目前,这是我的操作方式: 创建一个新的Stream-Stream3。流3将包含Stream1和Stream2
我在 RTC 中有一个文件(称为 foo.c),我修改了该文件并将其与其他一些更改一起 checkin 变更集 (CS1)。然后,我再次修改该文件,并将其与其他更改一起 checkin 不同的变更集
问题 嗨,我使用以下表单重新混合了网络框架动态房间的模板: https://glitch.com/edit/#!/power-lily-pancake?path=public%2Fscene.html
我正在将 STM32F072ZB 运行到待机模式。 MCU 大部分时间都处于休眠状态(每 1 小时唤醒一次以读取传感器)。由于看门狗正在运行,因此我使用 RTC 每 25 秒生成一次警报(看门狗周期约
我是一名优秀的程序员,十分优秀!