首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getUserMedia javascript代码

getUserMedia javascript代码
EN

Stack Overflow用户
提问于 2014-07-14 07:54:49
回答 3查看 11.6K关注 0票数 2
代码语言:javascript
复制
var video = document.querySelector("video");
var constraints = {audio: false, video: true};
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||     navigator.mozGetUserMedia;

function successCallback(stream) 
{
  window.stream = stream; // stream available to console
  if (window.URL) 
    {
         video.src = window.URL.createObjectURL(stream);
    } else 
    {
         video.src = stream;
    }
}

function errorCallback(error)
{
    console.log("navigator.getUserMedia error: ", error);
}

navigator.getUserMedia(constraints, successCallback, errorCallback);

嗨,我正在编写getUserMedia的webrtc示例代码,并得到一个错误:Uncaught :无法设置空的属性'src‘

我查看了检查元素,发现

代码语言:javascript
复制
video.src

被证明为“空”

代码语言:javascript
复制
window.URL.createObjectURL(stream)

确实有"blob:http%3A//danielle/738c6a8e-c887-4bd2-8b3d-3e3a18e6ac1f“的价值

我也能在“流”对象中看到一个对象。

我不知道它为什么不把这个值传递给video.src

有谁能从密码中看出原因吗?

我从http://googlechrome.github.io/webrtc/samples/web/content/getusermedia/得到了这段代码

实际上,我从那个链接中复制了完全相同的代码。

这是我的HTML代码

代码语言:javascript
复制
<html>
<head>
<base target="_blank">
<title>getUserMedia</title>
<link rel="stylesheet" href="main.css">
<script src="main.js"></script>
</head>
<body>
<div id="container">
    <video controls style="border: 1px solid rgb(14, 168, 234); width: 90%;"></video>
</div>
</body>
</html>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-15 12:58:27

两件事

  • HTML是自上而下读取的。因此,您可以很好地声明一个视频元素,但是只有在读取和执行脚本之后才能找到它。因此,要么在视频元素之后移动脚本执行,要么移动视频元素。
  • 另外,您可能希望将视频元素设置为“自动播放”。您可以保持它的原样,但是您必须在页面上手动播放它(使用给定的控件),或者在JS中手动播放它。

下面是我建议的一些有用的修改:

代码语言:javascript
复制
<html>
<head>
<base target="_blank">
<title>getUserMedia</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<div id="container">
    <video controls style="border: 1px solid rgb(14, 168, 234); width: 90%;" autoplay></video>
</div>
<script src="main.js"></script>
</body>
</html>
票数 3
EN

Stack Overflow用户

发布于 2019-12-17 18:46:07

Google阻止http中的视频和音频设备访问,因此确保您使用的是https协议,然后您将使navigator.getUserMedia()工作。

票数 1
EN

Stack Overflow用户

发布于 2014-07-14 13:52:16

我确信您在html代码中缺少了一个视频标记,添加如下一行

代码语言:javascript
复制
<video controls style="border: 1px solid rgb(14, 168, 234); width: 90%;"></video>

你的HTML代码。您还可以阅读https://developer.mozilla.org/en-US/docs/Web/API/document.querySelector#Notes

编辑:

如果您不想使用jquery ($(文档).ready()),请用以下代码包装您的javascript代码

代码语言:javascript
复制
document.addEventListener("DOMContentLoaded", function() { 
    /*your js code here*/ 
});

您将获得空错误,因为您在加载DOM之前正在查询视频标记,因此元素不存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24731913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档