问题标签 [getusermedia]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何从 JavaScript 使用 Opus 编解码器
我想看看是否可以使用getUserMedia
最新浏览器直接访问 Opus 或类似的东西。
我一直在研究它,但没有很好的结果。
我知道webkitSpeechRecognition
API 中实际使用了 Opus 或 Speex。我想做语音识别,但使用我自己的服务器而不是谷歌的。
javascript - 如何使用 webAudio-API 设置顺序独立录音
录制麦克风没有问题,连接分析仪以获得漂亮的 vu-meter,使用speex.js库中的“xaudio.js”将大量数据重新采样到我们可以处理的东西(8Khz,单声道)并包装将其放入适当的 WAV 包络中。
停止录音机似乎是另一回事,因为录音过程严重落后于 onaudioprocess 功能。但即使这也不是问题,因为我可以计算丢失的样本并等待它们到达,然后再实际存储数据。
但是现在呢?如何阻止音频进程调用 onaudioprocess?断开所有节点并没有什么不同。我如何能够重新初始化所有缓冲区,以便为下一次录制创建一个干净、新鲜的跳转点?我应该销毁 AudioContext 吗?我该怎么做?还是将 createMediaStreamSource 设为“null”就足够了?
需要做什么才能真正为顺序独立录制设置一切?
任何提示表示赞赏。
javascript - 具有非核心检测的自定义 grunt-modernizr
从我发现yeoman的那一天起,我就将它用于我所有的前端项目。
它包括 grunt-modernizr - 至少我认为 - 下载库并在我调用构建任务时即时编译它
但我有一个小问题:默认情况下,它不包括我们可以在这里在线看到的“非核心检测”:modernizr custom builder
这是我的 grunt-modernizr 任务配置(Gruntfile.js 文件的一部分):
事实上,我想使用 Modernizr.getusermedia,但作为非核心功能,它没有被定义......因为 grunt-modernizr 配置似乎不允许非核心检测包含。
关于这一点的任何想法?
编辑:modernizr 任务不再起作用;即使我删除了“额外”和“可扩展性”属性......
html - HTML5 和 Web 音频 api:将麦克风数据从浏览器流式传输到服务器。理想的传输和数据压缩
我希望从浏览器获取音频输入并将其流式传输到多个听众。预期用途是音乐,所以质量必须在mp3标准左右。
我尝试了两种方法,都产生了不成功的结果:
网络RTC
- 直接在浏览器之间流式传输音频效果很好,但是尽管我所看到的,音频质量似乎是不可定制的。(我看到它使用的是 Opus 音频编解码器,但似乎没有公开任何控件)。
- 有人对如何提高 WebRTC 流中的音频质量有任何见解吗?
网络套接字
问题是从浏览器到服务器的传输。我可以通过以下方法获取的 PCM 音频数据已被证明太大而无法通过 websockets 重复流式传输到服务器。该流在高速互联网环境中完美运行,但在较慢的 wifi 上则无法使用。
/li>
所以主要的问题是,有没有办法压缩 PCM 数据以便更容易地流式传输到服务器?或者也许有更简单的方法来解决这个问题?
webrtc - WebRTC/getUserMedia:如何正确静音本地视频?
我正在尝试MediaStreamTrack
在我的 WebRTC 应用程序中实现使本地视频静音的功能。以下是我的处理方法:
在 Firefox 中,<video>
本地流附加到的元素在静音时正确呈现黑色。在 Chrome 中,不会渲染黑色,但图片会冻结。但是,在这两种浏览器中,摄像头的绿灯一直亮着,这显然是不受欢迎的行为。(我希望我的用户在视频静音时看到应用程序实际上与摄像头断开连接。)
如果我这样做了,相机的灯就会熄灭this._localStream.stop()
,但音频也会熄灭。
Media Capture 规范的当前草案提到了该MediaStreamTrack.stop()
方法,但目前似乎未在 Chrome 和 Firefox 中实现。
那么有没有办法在以下情况下静音本地视频:
- 使相机的灯熄灭
- 不会丢失音轨?
html - 如何使用 getUserMedia 访问树莓派的摄像头?
如何启用 Raspbian(chromium) 上的 getUserMedia/HTML5 网络摄像头访问调用到摄像头?我只找到了将图片流式传输到 HTML5 网站的答案,但我实际上需要在设备上使用它。我已经运行了代码来获取带有 JS 的图片。此外,raspivid 正在向我展示正确的图片。那么如何让 Chromium 注意到相机呢?谢谢!
javascript - 在 getUserMedia 中使用 sourceId 指定网络摄像头
我有两个网络摄像头,并试图指定在我的视频标签中显示哪一个。我的 HTML 很简单<video autoplay></video>
。这是我的javascript:
但是,即使我将 sourceId 更改为我的第二个网络摄像头,我也无法让它显示该网络摄像头。js.fiddle 代码
javascript - 使用 Web Audio API 为已录制的声音添加效果
我的任务是为录制的文件添加一些效果。
这是我正在使用 Recorder.JS的脚本
这是一个代码https://github.com/cwilso/AudioRecorder/blob/master/js/recorderjs/recorder.js
我想添加音高。
我尝试查看为音频添加一些效果的其他代码。但似乎 recorder.js 处理缓冲区的方式不同。
编辑
这是我的代码现在的样子,使用这个功能,我请求已经录制的音频并播放它。
我可以模拟一些效果来接近这个:http ://www.youtube.com/watch?v=Lr80slqJ3zo 这是格鲁吉亚语,但我希望你明白。它更像是氦沥青。(注意,我不想改变音频速度)。
当我试图研究氦效应时,我发现了这个:http : //chemistry.about.com/b/2013/08/26/helium-voice-is-not-higher-in-pitch.htm 它说声音应该是比空气快 2.5。
我能得到接近这个的东西吗?
编辑
根据@cwilso 的建议,http ://chromium.googlecode.com/svn/trunk/samples/audio/granular.html 是我迄今为止看到的最接近的。但我无法修改它,无法使用我的playbackRecorderAudio()
. 这就是为什么我要用我所拥有的一切开始赏金
编辑
这是我的代码的 jsFiddle:http: //jsfiddle.net/Lsvnp/1/
首先让我描述一下我想要实现的目标:我想从用户麦克风录制声音,添加这个效果。当用户按下“停止录制”按钮(stopRecording
功能)时,它将预先添加 HTML 音频,这将允许用户收听他录制的内容。如果他喜欢它,他会上传到我的服务器(uploadAudio
函数)
加载页面时,记录未初始化。要初始化录制,用户必须按下某个按钮,该按钮将触发recordAudio
功能。
现在的问题是我不知道在哪里连接我的playbackRecorderAudio
功能。将其用作缓冲区的转换器。
.net - 具有 WebRTC 支持的 WPF 的嵌入式 WebBrowser 控件
我有一个 WPF 应用程序,我需要应用程序实例和 Web 浏览器中的页面之间的点对点连接。我想使用嵌入式 Web 浏览器控件并使用 getUserMedia 函数加载 html+js,但我找不到有效的解决方案。基于 IE 的标准 Web 浏览器控件为 getUserMedia 函数生成 js 错误,并且 Awesomium SDK 也不支持 WebRTC ( http://answers.awesomium.com/questions/1415/how-is-it-possible-to-use- a-webcam-with-awesomium.html )。你能告诉我,如何解决 WPF 应用程序和 web 浏览器中页面之间的 WebRTC 连接问题吗?
javascript - 使用 javascript Canvas 进行有效的像素操作
我正在尝试在 JavaScript 中使用每个通道的网络摄像头延迟,而我当前的代码运行速度有点慢。你可以在这里看到一个演示
我的延迟方法是创建一个包含 12 个元素的数组来存储像素(画布元素),然后通过复制像素(使用 getImageData 和 putImageData 调用)将内容从一帧转移到另一帧。由于我正在拆分颜色通道,因此我的更新函数如下所示:
我想我可以跳过使用红色通道,因为最近的帧已经有该信息。是否有更快的方法来操作/写入像素数据(除了getImageData()
and putImageData()
)或更快的方法来实现我想要实现的目标?