我尝试使用Node Web Kits屏幕广播捕获视频图像并将其应用到画布。我使用angularjs在视频和画布之间切换。
我打开并初始化视频:
gui.Screen.init();
gui.Screen.chooseDesktopMedia(
["window", "screen"],
function(streamId) {
var vid_constraint = {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: streamId,
maxWidth: 900,
maxHeight: 600,
minFrameRate: 1,
maxFrameRate: 5
},
optional: []
};
navigator.webkitGetUserMedia({
audio: false,
video: vid_constraint
},
function(stream) {
console.log(stream, typeof URL.createObjectURL(stream));
video.src = URL.createObjectURL(stream);
},
function(error) {
console.log('failure', error);
});
});
然后我通过将屏幕图像应用到临时画布然后使用ng-if切换视图来发送屏幕图像:
// first steps in the angular transition
$scope.takePhoto = function() {
console.log("draw")
context.drawImage(video, 0, 0, 900, 600);
var sendVid = canvas.toDataURL();
$rootScope.$broadcast("send video data", {show: false, videoImage : sendVid})
gui.Screen.stop();
};
然后,当我尝试初始化新的GUI时,它不起作用。我收到这个错误:
TypeError:undefined不是函数 在新的VideoCtrl(video-capture-directive.js:20) 在Object.invoke(angular.js:4476) 在extend.instance(angular.js:9127) at nodeLinkFn(angular.js:8239) at delayedNodeLinkFn(angular.js:8528) 在compositeLinkFn(angular.js:7671) at publicLinkFn(angular.js:7546) at boundTranscludeFn(angular.js:7690) 在controllersBoundTransclude(angular.js:8307) 在Object.ngIfWatchAction [as fn](angular.js:23994)
为什么我不能关闭窗口并打开一个新窗口?