我在从mediaRecorder api获取捕获的blob到Chrome中播放时遇到问题(它可以在Firefox中运行).不确定这是否是Chrome中的错误.
它报告的错误:
undefined:1 Uncaught(在promise中)DOMException:无法解码音频数据
window.AudioContext = window.AudioContext || window.webkitAudioContext;
navigator.getUserMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
var context = new AudioContext();
var record = document.querySelector('#record');
var stop = document.querySelector('#stop');
if (navigator.getUserMedia) {
console.log('getUserMedia supported.');
var constraints = {
audio: true
};
var chunks = [];
var onSuccess = function(stream) {
var mediaRecorder = new MediaRecorder(stream);
record.onclick = function() {
mediaRecorder.start();
console.log(mediaRecorder.state);
console.log("recorder started");
record.style.background = "red";
stop.disabled = false;
record.disabled = true;
}
stop.onclick = function() { …
Run Code Online (Sandbox Code Playgroud)来自 Mozilla 站点:https : //developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API
“一个 MediaStream 由零个或多个 MediaStreamTrack 对象组成,代表各种音频或视频轨道。每个 MediaStreamTrack 可能有一个或多个通道。通道表示媒体流的最小单位,例如与给定扬声器关联的音频信号,如在立体声音轨中向左或向右。”
这澄清了频道是什么。
最近的几个 RFC(例如 8108)提到需要在一个 RTP 会话中发送多个流。每个流在 RTP 级别都有自己的 SSRC。在统一计划的 RFC 中,参考总是作为最低级别的流(不是轨道或通道)。在 RFC 3550(基本 RTP RFC)中,没有提及通道。
RTP 流是否如这些 RFC 中提到的那样,建议流作为媒体的最低来源,与 WebRTC 中使用的该术语相同的通道,以及上面提到的?轨道通道 (WebRTC) 和带有 SSRC 的 RTP 流之间是否存在一对一映射?
例如,一个网络摄像头生成一个媒体流,它可以有一个音频媒体轨道和一个视频媒体轨道,每个轨道使用单独的 SSRC 在 RTP 数据包中传输,从而产生两个 SSRC。那是对的吗?现在,如果有一个立体声网络摄像头(或者一些这样的设备,比如两个麦克风 - 通道?)。这会生成具有三个不同的唯一 SSRC 的三个 RTP 流吗?
在成功测试 ICE 候选者后,是否有一个用于建立五元组连接的 RTP 会话?或者在对等点之间的同一组 port-ip-UDP 连接上可以有多个 RTP 会话吗?
任何澄清这一点的文件将不胜感激。
在活动媒体流(语音)navigator.mediaDevices.getUserMedia
连接到内部麦克风时工作正常,只要我切换到蓝牙设备并重新运行相同的 API 以获取最新的媒体流,我就会收到错误消息"NotReadableError: Concurrent mic process limit."
我浏览了许多论坛,正如许多人所建议的那样,当多个选项卡尝试访问麦克风或/和相机时,此错误通常发生在 Firefox、Mac OS 中。
我确保在 Firefox 浏览器中只打开了一个选项卡,仍然看到相同的错误。
任何有关这方面的线索都将不胜感激。
下面是代码片段
constraints = {
"audio": {"deviceId": deviceId },
"video": false
}
let temp;
navigator.mediaDevices.getUserMedia(constraints).then(function(stream){
temp = stream;
}).catch(function(err) {
console.log(err.name + ": " + err.message);
});
Run Code Online (Sandbox Code Playgroud)
返回以下错误信息
NotReadableError: Concurrent mic process limit.
Run Code Online (Sandbox Code Playgroud)
注意:在 Chrome 和 Edge 中工作正常
浏览器:Firefox 70.0.1(64 位)
操作系统:MacOS Mojave
我正在尝试使用 webRTC 连接两个对等点。我能够正确显示本地和远程视频,但是一旦远程视频出现,候选对象就会变为null
并在控制台上记录以下错误消息。
TypeError: Failed to execute 'addIceCandidate' on 'RTCPeerConnection': Candidate missing values for both sdpMid and sdpMLineIndex
Run Code Online (Sandbox Code Playgroud)
我正在使用两台单独的笔记本电脑来测试连接,并且由于远程和本地视频都在显示,我认为我已经成功连接了两个对等点,但由于错误消息我不确定。
关于为什么会发生这种情况的任何想法?我什至成功连接了两个对等点吗?
下面是代码。
谢谢!
前端
import React, { Component } from 'react';
import io from 'socket.io-client';
class App extends Component {
constructor(props) {
super(props);
this.room = 'test-room';
this.socket = io.connect('http://localhost:5000');
this.localPeerConnection = new RTCPeerConnection({
iceServers: [
{
urls: 'stun:stun.l.google.com:19302'
}
]
});
this.remotePeerConnection = new RTCPeerConnection({
iceServers: [
{
urls: 'stun:stun.l.google.com:19302'
}
]
});
};
componentDidMount() {
this.socket.on('connect', () => …
Run Code Online (Sandbox Code Playgroud) 有没有办法默认禁用WebRTC"自动增益控制功能",通过应用一些JavaScript代码到应用程序文件?
我正在使用simplewebrtc.
我们正在使用WebRTC开发从移动设备到计算机的视频流.移动设备可能完全失去连接,计算机应该能够检测到它.现在,视频就冻结了.但是,无论是的EventHandler
第RTCPeerConnection
被称为在这样的情况.
我从收到的帧canvas
通过canvas.getDataURL()
.
但是,现在我有一系列png图像,但我想要一个视频文件.
我该怎么做呢?
var canvas = document.getElementById("mycanvaselementforvideocapturing");
var pngimages = [];
...
setInterval(function(){pngimages.push(canvas.toDataURL())}, 1000);
Run Code Online (Sandbox Code Playgroud) javascript canvas todataurl web-mediarecorder mediarecorder-api
我的目标是使用 webrtc web 应用程序在视频或音频通话中启用屏幕共享。
好吧,我发现我可以MediaStreamTrack.applyConstraints()
用来更改视频属性,但是可以更改视频源吗?此外,如何将视频添加到现有的音频流。
我现在只需要它在 chrome 上工作。
javascript google-chrome video-streaming audio-streaming webrtc
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) { });
javascript ×9
webrtc ×7
getusermedia ×3
canvas ×1
firefox ×1
media ×1
mediastream ×1
reactjs ×1
rtp ×1
simplewebrtc ×1
socket.io ×1
todataurl ×1
w3c ×1
websocket ×1