小编jib*_*jib的帖子

mediarecorder api通过Web Audio api播放(不是音频元素)

我在从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)

javascript mediarecorder web-audio-api

17
推荐指数
1
解决办法
2123
查看次数

WebRTC:通道、轨道和流与 RTP SSRC 和 RTP 会话之间的关系

来自 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 会话吗?

任何澄清这一点的文件将不胜感激。

javascript rtp webrtc

13
推荐指数
1
解决办法
3603
查看次数

navigator.mediaDevices.getUserMedia API 因错误“NotReadableError:并发麦克风进程限制”而拒绝。

在活动媒体流(语音)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

javascript media firefox webrtc getusermedia

11
推荐指数
1
解决办法
1788
查看次数

WebRTC 在控制台上的 RTCPeerConnection 错误上无法执行“addIceCandidate”,但仍然可以显示远程和本地视频

我正在尝试使用 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)

javascript google-chrome socket.io webrtc reactjs

9
推荐指数
1
解决办法
8368
查看次数

使用WebRTC应用程序禁用自动增益控制

有没有办法默认禁用WebRTC"自动增益控制功能",通过应用一些JavaScript代码到应用程序文件?

我正在使用simplewebrtc.

webrtc getusermedia simplewebrtc

7
推荐指数
1
解决办法
2735
查看次数

检测WebRTC连接中的脱机对等体

我们正在使用WebRTC开发从移动设备到计算机的视频流.移动设备可能完全失去连接,计算机应该能够检测到它.现在,视频就冻结了.但是,无论是的EventHandlerRTCPeerConnection被称为在这样的情况.

  • 那么如何在另一个对等体上检测到这种连接失败呢?
  • 对等体如何首先检测连接建立的连接问题?

javascript webrtc

6
推荐指数
2
解决办法
2641
查看次数

如何将png图像数据的数组转换为视频文件

我从收到的帧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

5
推荐指数
1
解决办法
1843
查看次数

WebRTC - 在通信过程中更改视频流

我的目标是使用 webrtc web 应用程序在视频或音频通话中启用屏幕共享。

好吧,我发现我可以MediaStreamTrack.applyConstraints()用来更改视频属性,但是可以更改视频源吗?此外,如何将视频添加到现有的音频流。

我现在只需要它在 chrome 上工作。

javascript google-chrome video-streaming audio-streaming webrtc

5
推荐指数
2
解决办法
1万
查看次数

Changing FocusMode not working using MediaStream API in Google Chrome

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)

javascript w3c image-capture getusermedia mediastream

5
推荐指数
0
解决办法
461
查看次数

如何从字节数组创建示例 webm 文件

我正在开发一个屏幕捕获应用程序,并且能够使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 websocket webrtc get-display-media

5
推荐指数
1
解决办法
928
查看次数