0
對不起,我的英語。 我正在構建一個使用網絡攝像頭錄製視頻的AngularJS應用程序(使用1.2.0 RC2)。我使用RecordRTC錄製視頻流。 我得到example。當我使用一個流時,一切正常。 但我不明白,如何使用這些功能在我的控制器承諾。如何在webrtc(RecordRTC)中使用Angular promise?
function startRecord(time,text,id){
var deferred = $q.defer();
navigator.getMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
navigator.getMedia(
{
audio: true,
video: video_constraints
}, function(stream) {
preview.src = window.URL.createObjectURL(stream);
preview.play();
recordAudio = RecordRTC(stream, {});
recordVideo = RecordRTC(stream, {
type: 'video'
});
recordAudio.startRecording();
recordVideo.startRecording();
$timeout(function() {
saveRecord(id).then(function(data){
if(data.status===200){
deferred.resolve();
$log.info("resolve");
}else{
deferred.reject();
$log.info("reject");
}
})
}, time*1000);
$scope.$apply(function(){
$timeout(function() {
addtext(text);
}, 100);
})
});
return deferred.promise;
}
var fileName;
function saveRecord(id) {
fileName = Math.round(Math.random() * 99999999) + 99999999;
recordAudio.stopRecording();
$scope.save(recordAudio.getBlob(), 'audio', fileName + '.wav',id);
recordVideo.stopRecording();
var save_promise = $scope.save(recordVideo.getBlob(), 'video', fileName + '.webm',id);
return save_promise;
};
$scope.save = function(blob,fileType,fileName,id) {
var save_promise= $http({
method: 'PUT',
url: "/api/videos/"+id,
headers: { 'Content-Type': false },
transformRequest: function (data) {
var formData = new FormData();
formData.append(fileType, fileName);
formData.append(fileType + '-blob', blob,fileName);
return formData;
},
data: { model: fileName, files: '' }
});
return save_promise;
};
我可以手動創建鏈接承諾
var main = $q.defer();
main.promise
.then(function(questions){
startRecord(questions[0].time,questions[0].text,1)
.then(function(){
startRecord(questions[1].time,questions[1].text,2)
.then(function(){
startRecord(questions[2].time,questions[2].text,3)
})
})
});
main.resolve(問題);
但數組問題我從我的API獲得,它可以是不同的長度。
var questions = [
{id:1,time:10,text:'who are you?'},
{id:2,time:15,text:'where are do you live?'},
{id:3,time:15,text:'why do you live?'},
]
我嘗試了不同的承諾,但我的水平是非常低的JS。