我正在学习webRTC申请.
我的参考是这个软件
apprtc https://code.google.com/p/webrtc/source/browse/trunk/samples/js/apprtc/
演示 https://apprtc.appspot.com/
我的电脑有bult-in视频设备,apprtc使用这个视频设备.不过我想用USB摄像机代替.
我正在寻找改变输入视频设备的方法.但我在源文件中找不到任何线索.
有没有人有信息?
我目前在个人开发中使用WebRTC,一切正常.我从网络摄像头获取流,但现在我想使用约束getUserMedia().
var constraints = {
audio: false,
video: {
mandatory : {
minWidth: 1280,
minHeight: 720
}
}
};
Run Code Online (Sandbox Code Playgroud)
当我在Firefox中测试它时,它似乎忽略了约束.当我在Chrome或Opera上测试时,我的约束工作正常并且我的质量很好,有谁知道为什么?问题是Firefox?
谢谢你的建议
我建立类似项目的这个例子有jsartoolkit5,我想能够选择我的设备的背面摄像头,而不是让的Chrome上Android选择前一个为默认值.
根据本演示中的示例,如果设备有后置摄像头,我已添加以下代码自动切换摄像头.
var videoElement = document.querySelector('canvas');
function successCallback(stream) {
window.stream = stream; // make stream available to console
videoElement.src = window.URL.createObjectURL(stream);
videoElement.play();
}
function errorCallback(error) {
console.log('navigator.getUserMedia error: ', error);
}
navigator.mediaDevices.enumerateDevices().then(
function(devices) {
for (var i = 0; i < devices.length; i++) {
if (devices[i].kind == 'videoinput' && devices[i].label.indexOf('back') !== -1) {
if (window.stream) {
videoElement.src = null;
window.stream.stop();
}
var constraints = {
video: {
optional: [{
sourceId: …Run Code Online (Sandbox Code Playgroud) 我正在尝试navigator.MediaDevices.getUserMedia()webrtc在通话期间切换设备摄像头.这个功能在桌面浏览器上工作正常,但在mozilla android上它无法正常工作.这是我正在使用的代码.
var front=false;
var myConstraints = { video: { facingMode: (front? "user" : "environment")} };
navigator.mediaDevices.getUserMedia(myConstraints).then(function(stream) {
}
Run Code Online (Sandbox Code Playgroud)
对此有何看法?
我可以通过navigator.mediaDevices.enumerateDevices()承诺获得'videoinput'类型的mediaDevices .
我可以通过navigator.mediaDevices.getUserMedia(constraints)承诺获得mediaStream .
constraints在userMedia中有两个视频轨道应该是什么样的?
我有一个功能可以让用户选择相机并在页面上显示捕获的视频[像这样]。我的代码在 Android Google Chrome 版本 52 之前工作,但不知道为什么它现在坏了。
首先,我检查我可以使用哪些设备。
navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
devices.forEach(function(device) {
console.log(device.kind + ": " + device.label +
" id = " + device.deviceId);
});
})
.catch(function(err) {
console.log(err.name + ": " + err.message);
});
Run Code Online (Sandbox Code Playgroud)
它像我期望的那样返回两个摄像头(一个前面,一个后面)。
videoinput:照相机1中,面向前的id = ef5f41259c805a533261c2d91c274fdbfa8a6c8d629231cb484845032f90e61a凸轮:19 videoinput:相机0,朝后的id = 81448a117b2569ba9af905d01384b32179b9d32fe6a3fbabddf03868f36e4750
然后我按照示例代码进行操作,下面是我使用的内容:
<video id="video" autoplay></video>
<script>
var p = navigator.mediaDevices.getUserMedia({ video: {facingMode: "environment", width: 480, height: 800} });
p.then(function(mediaStream) {
var video = document.querySelector('video');
video.src = window.URL.createObjectURL(mediaStream);
video.onloadedmetadata = function(e) {
// Do …Run Code Online (Sandbox Code Playgroud) 在 iOS 上我可以这样做:
// set a new camera id
cameraId = ([cameraId isEqualToString:frontCameraId]) ? backCameraId : frontCameraId;
// determine if the stream has a video track
BOOL hasActiveVideoTrack = ([self.localMediaStream.videoTracks count] > 0);
// remove video track from the stream
if (hasActiveVideoTrack) {
[self.localMediaStream removeVideoTrack:self.localVideoTrack];
}
// remove renderer from the video track
[self.localVideoTrack removeRenderer:self.localVideoView];
// re init the capturer, video source and video track
localVideoCapturer = nil;
localVideoSource = nil;
localVideoCapturer = [RTCVideoCapturer capturerWithDeviceName:cameraId];
localVideoSource = [peerConnectionFactory videoSourceWithCapturer:localVideoCapturer constraints:mediaConstraints]; …Run Code Online (Sandbox Code Playgroud) webrtc ×5
javascript ×4
android ×3
getusermedia ×3
camera ×2
canvas ×1
constraints ×1
firefox ×1
html5 ×1
jsartoolkit ×1
mozilla ×1