我需要创建一个可以使用网络摄像头或移动摄像头录制视频的应用程序(它需要跨平台).
到目前为止,我已经使用webrtc getusermedia编写了一个小概念证明.它可以录制视频和播放,但我不知道如何将文件上传回服务器.
以下是此示例http://jsfiddle.net/3FfUP/的链接
和javascript代码:
(function ($) {
window.URL = window.URL || window.webkitURL;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia;
var video = document.querySelector('video');
var onFailSoHard = function(e) {
console.log('Reeeejected!', e);
};
$('#capture-button').click (function () {
console.log ("capture click!");
if (navigator.getUserMedia) {
// Not showing vendor prefixes.
navigator.getUserMedia({video: true, audio: true}, function(localMediaStream) {
var video = document.querySelector('video');
video.src = window.URL.createObjectURL(localMediaStream);
// Note: onloadedmetadata doesn't fire in Chrome when using it with getUserMedia.
// See crbug.com/110938.
video.onloadedmetadata …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于WebRTC的内容,但还有一个问题仍然存在.我希望你能帮助我:
WebRTC是否允许我创建一对多连接?我并不是说"能够与不同的计算机建立多个连接",我真的谈到有一个连接可以将其数据多播到多个端点而无需为每个端点"上传"一次数据.是否有可能将一个单独的包发送到网络上,当它到达网络时,神奇地将自己分成多个具有不同目标的包?
我希望你能得到我想要的东西:)
到目前为止,我只看到一对一的连接,或者与中央服务器有一个连接的解决方案,这些连接为它们进行多播(通常会导致ping的两倍).
但对我来说,一对一的连接似乎并不真正有用(由于客户端的上传带宽很低),而且没有WebRTC(使用WebSockets)也可以使用中央服务器的解决方案,所以唯一真正的用途WebRTC的案例是一对多连接.
那么..这是将来可能的事情吗?或者今天已经可以吗?
是否可以在Node.js上使用WebRTC数据通道,以模仿Socket.io(WebSockets)的功能(最好是API),除非使用UDP?
本质上,我希望有一个运行Node.js的服务器,浏览器客户端可以通过JavaScript建立全双工双向UDP连接.
我有一个webrtc应用程序,它工作正常,但出于测试目的,我需要测试我的TURN服务器是否工作,但因为两个测试设备都在同一个网络中,我无法测试,认为下面的代码会限制候选人只有那些使用TURN服务器,
function onIceCandidate(event, targetSessionID, targetUserName) {
if (event.candidate) {
var candidate = event.candidate.candidate;
if(candidate.indexOf("relay")<0){ // if no relay address is found, assuming it means no TURN server
return;
}
sendMessage(candidate); // using socket.io to send to the otherside
...
Run Code Online (Sandbox Code Playgroud)
但我注意到了(非常沮丧),这不起作用,因为当同伴创建答案描述时,
....
a=candidate:0 1 UDP 2128609535 13.198.98.221 58779 typ host
a=candidate:0 2 UDP 2128609534 13.198.98.221 58780 typ host
....
Run Code Online (Sandbox Code Playgroud)
这意味着,通信是直接的,而不是通过TURN服务器,我假设这是正确的吗?现在,如何强制webrtc使用TURN服务器?
iPhone/iPad上的Chrome浏览器是否支持WebRTC?
我有一个WebRTC iOS应用程序.我有AVAudioSession和RTCAudioSource.我需要检测麦克风何时开始接收响亮的声音(比如一个人开始讲话时),类似于hark在带有AudioContext的浏览器中所做的事情.我怎样才能检测到它或得到的东西,类似于可等来测定流AVCaptureAudioChannel或AVCaptureAudioDataOutput?
Apple发布了一个getUserMedia将在iOS 11上完全正常运行的声明.安装iOS 11 Beta版本5后,我收到一条消息,我的网站请求访问我的摄像头和麦克风,但似乎该行:
video.src = window.URL.createObjectURL(stream);
Run Code Online (Sandbox Code Playgroud)
要么:
video.srcObject = stream;
Run Code Online (Sandbox Code Playgroud)
不行.没有错误,没有例外,只是手机的相机没有图片.
这是我的完整脚本:
$(function () {
video = document.getElementById('vid');
navigator.getUserMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia;
navigator.getUserMedia(
{
audio: true,
video: { facingMode: "user" }
}, function (stream) {
video.srcObject = stream;
//video.src = window.URL.createObjectURL(stream);
},
function (err) {
alert(err.name);
});
});
Run Code Online (Sandbox Code Playgroud)
HTML:
<video id="vid" muted autoplay></video>
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 会话吗?
任何澄清这一点的文件将不胜感激。
webrtc ×10
javascript ×4
ios ×2
audio ×1
c# ×1
getusermedia ×1
html5 ×1
html5-video ×1
ipad ×1
iphone ×1
jquery ×1
node.js ×1
rtp ×1
udp ×1
xsockets.net ×1