javascript DOM异常:请求的设备未找到

2guxujil  于 2023-01-29  发布在  Java
关注(0)|答案(8)|浏览(467)

尝试访问连接到WiFi的IP摄像机。
我已连接到该WiFi,但出现错误。如果我尝试使用VLC打开,我可以连接,但getUserMedia不为空。

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
})
export class HomeComponent {
  @ViewChild('video') video: any; 
  constructor() {
  }
  hasGetUserMedia() {
  return !!(navigator.mediaDevices &&
    navigator.mediaDevices.getUserMedia);
}

ngAfterViewInit() {
  if (this.hasGetUserMedia()) {
    // Good to go!
    console.log("Gooddd................");
  } else {
    alert('getUserMedia() is not supported by your browser');
  }
  let _video = this.video.nativeElement;
  if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
    navigator.mediaDevices.getUserMedia({ video: true, audio: true })
      .then(function (stream) {
        _video.src = window.URL.createObjectURL(stream);
        _video.play();
      }).catch(function (err) {
        console.log(err);
      });
    }
  }
}

<video #video width="640" height="480" autoplay></video>
uplii1fm

uplii1fm1#

当您没有任何设备来捕获视频或捕获音频时,就会发生这种情况
试着检查你的网络摄像头和麦克风是否工作正常

czq61nw1

czq61nw12#

尝试不使用“音频:真的”。这对我的帮助。(麦克风是不工作)。并检查摄像头在其他网站。也许需要检查此页的权限。

dbf7pr2w

dbf7pr2w3#

尝试更改此行:

_video.src = window.URL.createObjectURL(stream);

和这个

_video.srcObject = stream;
mftmpeh8

mftmpeh84#

使用此行初始化网络摄像头和麦克风:

navigator.mediaDevices.getUserMedia({ audio: true, video: true });
inb24sb2

inb24sb25#

在我的情况下,我已经通过USB连接外部摄像头,我能够得到设备,我得到了音频输出和视频输入的设备,没有音频输入(麦克风设备),但当我请求设备时,我通过了约束。

function Webcam(){
  this.constraints = {
    video: true,
    audio: true
  }
  this.userMedia = null;
  this.mediaDevices = navigator.mediaDevices;
  this.initialize = function(){
    this.userMedia = this.mediaDevices.getUserMedia(this.constraints);
  }
}

let webcam = new Webcam();
    webcam.initialize();

因此,未满足承诺,并收到错误,因为未找到请求的器械。

ykejflvf

ykejflvf6#

试着把耳机或带麦克风的耳塞连接到你的电脑上。我的没有麦克风,这就是为什么我得到那个错误

x33g5p2x

x33g5p2x7#

如果您之前已经创建了MediaStream,则在某些移动的设备(运行Android的Sony XA2)上也可能发生此问题。
我找到的解决方案是确保停止您创建的以前流的所有轨道。

this.stream.getTracks().forEach(t => {
    t.stop();
    // I don't think removeTrack is necessary, but just keeping it.
    this.stream.removeTrack(t);
 });

如果没有前面的代码,你似乎不能切换某些Android设备上的相机:(Demo)(Code)显示的错误为DOMException: Requested device not found
通过停止以前的曲目:您可以启动新流:(Demo)Code
注:我还回答了一个相关的问题:https://stackoverflow.com/a/73550841/1123985

pvcm50d1

pvcm50d18#

我有麦克风和相机,但我得到了同样的错误。我很肯定这是有关笔记本电脑设置,因为我尝试了一切。原来我的笔记本电脑是阻止访问媒体。我使用的是Linux和笔记本电脑的品牌名称是微星,我开始寻找任何迹象,有关相机设置。在F6按钮,我的笔记本电脑有一个摄像头图标。所以我点击了

fn + F6

现在可以用了。很可能有时我点击fn+* 键看有什么不同,我阻止了相机访问。

相关问题