In Google Chrome Browser i was able to get live feed of my connected USB Camera using getUserMedia() API. I have a slider to change the brightness value and this is working fine. I also want focusMode to toggle from continuous to manual(The camera always starts with continuous focusMode).
I have the below Javascript code to change FocusMode.
const video_constraints ={};
//Create the following keys for Constraint
video_constraints.video = {};
video_constraints.video.width = {};
video_constraints.video.width.exact = 1920; //set video width …Run Code Online (Sandbox Code Playgroud) 我正在开发一个屏幕捕获应用程序,并且能够使ondataavailable事件工作并以块的形式获取数据,我将其进一步转换为 blob,但是当我通过 websocket 将相同的数据流发送到服务器并将该流另存为 webm 文件时磁盘然后播放文件,该文件不播放任何内容。我认为该文件需要一些我不确定的元信息。
有什么建议?
这是我的 javascript 代码:
socket.emit('message', new Blob([event.data], {type: 'video/webm'}));
服务器保存代码:
fs.writeFile("d://test.webm", data, "binary", function(err) { });
是否可以对正在运行的实时音轨应用约束?它似乎对我不起作用,至少在 Chrome v80 上。
假设我有一个流:
const stream = await navigator.mediaDevices.getUserMedia({
audio: {
autoGainControl: true
channelCount: 2
echoCancellation: true
noiseSuppression: true
},
video: false
});
Run Code Online (Sandbox Code Playgroud)
现在,稍后我想更改其中一些参数:
for (const track of stream.getAudioTracks()) {
track.applyConstraints({
autoGainControl: false,
echoCancellation: false,
noiseSuppression: false
});
}
Run Code Online (Sandbox Code Playgroud)
这没有效果。如果我调用track.getConstraints(),我会看到我的新约束,但在我重新加载页面并从头开始应用它们之前,我会听到它们没有任何影响。此外,当我打电话track.getSettings(),我看到我的新的制约还没有得到应用。
我也试过track.enabled = false在应用约束之前打电话,track.enabled = true之后没有运气。
关于如何在不拨打新电话的情况下使其工作的任何建议getUserMedia()?
private async Task<string> GetStateInfo()
{
var cityId = await GetCityIdByNameAsync("Delhi");
var state = await GetStateNameAsync(cityId);
return state;
}
Run Code Online (Sandbox Code Playgroud)
我们知道async和await用于异步编程,它们用于非阻塞编程模型。但在上面的代码中 var state = wait GetStateNameAsync(cityId); 当第一行执行时执行,因为它从中获取输入。所以我不明白这是阻塞调用还是非阻塞调用?
我希望逻辑上没有缺陷。
步骤1:呼叫者创建报价
步骤2:呼叫者设置localDescription
步骤3:呼叫者将描述发送给被呼叫者
// ------------------------------------------------ ------ //
步骤4:被叫方收到要约集的远程描述
步骤5:被叫方创建答案
步骤6:被叫方设置本地描述
步骤7:被呼叫者将说明发送给呼叫者
// ------------------------------------------------ ------ //
步骤8:呼叫者收到答案并设置远程描述
这是上面的代码
const socket = io();
const constraints = {
audio: true,
video: true
};
const configuration = {
iceServers: [{
"url": "stun:23.21.150.121"
}, {
"url": "stun:stun.l.google.com:19302"
}]
};
const selfView = $('#selfView')[0];
const remoteView = $('#remoteView')[0];
var pc = new RTCPeerConnection(configuration);
pc.onicecandidate = ({
candidate
}) => {
socket.emit('message', {
to: $('#remote').val(),
candidate: candidate
}); …Run Code Online (Sandbox Code Playgroud) 我知道在 P2P 和更动态的环境中缓存 ICE 候选者和 sdp 并不是一个好的做法,因为你缓存的东西可能无法申请下一个 WebRTC 连接。但是,在我们确切知道连接路线应该如何的情况下呢?
更具体,
在这种情况下,我们确切地知道对等点的 IP 是什么,并且我们确切地知道 TURN 服务器的 IP 是什么(假设它不会改变),是否可以缓存 ICE 候选(TURN)和 SDP 或SDP 的部分只是为了绕过 ICE 候选者和 SDP 交换部分?
如何将功能与延迟联系起来.我尝试了以下方法:
Promise.resolve()
.then(setKeyframe('keyframe-0'))
.then(delay(3000))
.then(setKeyframe('keyframe-1'))
.then(delay(3000))
.then(setKeyframe('keyframe-2'))
;
function delay(ms) {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms);
});
}
function setKeyframe (name) {
var element = document.getElementsByClassName('animation-container')[0];
element.className = 'animation-container ' + name;
}
Run Code Online (Sandbox Code Playgroud)
所有功能似乎都是紧接着调用的.延迟功能不会延迟链.我错过了什么?
我有一个执行一些异步工作并返回 a 的函数,Promise我想无限期地执行这个函数,直到rejected承诺。
类似于以下内容:
doSomethingAsync().
.then(doSomethingAsync)
.then(doSomethingAsync)
.then(doSomethingAsync)
// ... until rejection
Run Code Online (Sandbox Code Playgroud)
我做了一个 CodePen,所以我可以测试潜在的解决方案:http ://codepen.io/JesmoDrazik/pen/pbAovZ?editors=0011
我找到了几个可能的答案,但似乎对我的情况没有任何作用。
如果有人有解决方案,我会很高兴,因为我找不到任何东西!
谢谢。
我是 WebRTC 新手,正在 Chrome 中测试一个简单的视频流应用程序。我有三种不同类型的约束,具有以下解决方案:
qvga:320 x 240,vga:640 x 480,hdVga:1280 x 720。
当我捕获媒体时,它运行良好。但是,当我从分辨率开始qvga并单击任何其他按钮时,它会很好地加载对象,我什至可以观察约束console.log。另外两个分辨率设置,vga即hdVga它不反映窗口中的任何变化。同样,当我重新加载页面并从hdVga按钮开始时,它反映了vga屏幕上的分辨率,而对象属性显示了约束hdVga,我无法找出问题。
HTML:
<head>
<!--<link rel="stylesheet" href="style.css" type="text/css"/>-->
</head>
<body>
<video id="localVideo" controls poster="images/posterImage.png" ></video>
<div id="buttons">
<button id="qvga">320x240</button>
<button id="vga">640x480</button>
<button id="hd">1280x720</button>
</div>
<video id="remoteVideo" poster="images/posterImage.png" ></video>
</script src="videoplayer.js"></script>
<script src="adapter.js"></script>
<script>
var qVga = document.querySelector("button#qvga");
var vga = document.querySelector("button#vga");
var hdVga = document.querySelector("button#hd");
var qVgaConstraints = {video:{
mandatory:{
maxWidth: 320,
maxHeight: 240
} …Run Code Online (Sandbox Code Playgroud) 我真的很难获得一个完整的WebRTC数据通道示例示例,该示例可以复制/粘贴并且可以正常工作。
我想要一个带有手动信令的WebRTC数据通道的Javascript示例,即在加载示例时,它在一个文本框中提供了Signaling数据。我手动复制数据(突出显示,复制),然后将其粘贴到对等方的窗口中,该窗口具有一个接受该信令数据的文本框。我相信信令数据中需要有一个“答案”,因此也需要有相应的文本框等待该输入。谢谢。
示例可以使用Google的免费STUN服务器。
我对一些示例感到困惑,我想要一个文件,其中包含HTML和Javascript(请不要CSS或JQuery)。仅在Chrome上运行代码就足够了。谢谢。
我正在尝试构建一个可以捕获用户桌面的Web应用程序。我发现此网络api应该可以很好地完成这项工作,但是我似乎无法使其正常工作。现在,应该通过启用标记在最新版本的Edge和Chrome 70上都支持它,但是如果我正在查看导航器对象,则在两种浏览器中都应支持该功能。getDisplayMedia()功能均不存在。我也尝试调用该函数,但收到一条错误消息,说它不是函数(确认它实际上不在导航器中)。可能是什么问题呢?
提前致谢!
编辑:这是我的javascript
function na() {
navigator.mediaDevices.getDisplayMedia({
video: {
mandatory: {
chromeMediaSource: 'desktop',
minWidth: 1280,
maxWidth: 1280,
minHeight: 720,
maxHeight: 720
}
}
}).then((stream)=>console.log(stream))
console.log(navigator)
}
na();
Run Code Online (Sandbox Code Playgroud) javascript ×10
webrtc ×7
getusermedia ×3
es6-promise ×2
mediastream ×2
promise ×2
async-await ×1
c# ×1
channel ×1
constraints ×1
ecmascript-6 ×1
ice ×1
loops ×1
sdp ×1
signaling ×1
stun ×1
turn ×1
w3c ×1
websocket ×1