首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用webrtc (RecordRTC)的角度承诺?

如何利用webrtc (RecordRTC)的角度承诺?
EN

Stack Overflow用户
提问于 2013-11-01 03:55:49
回答 1查看 2K关注 0票数 0

对不起我的英语。我正在构建一个AngularJS应用程序(使用1.2.0 RC2),它使用摄像头录制视频。我用RecordRTC记录视频流。我得到了示例。当我和一条溪流一起工作时,一切都很好。但我不明白,如何在我的控制器中使用这些功能的承诺。

代码语言:javascript
复制
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;
    };

我可以创建手工链接承诺

代码语言:javascript
复制
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中得到的数组问题可以是不同的长度。

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-01 12:54:39

我为我的处境找到了示例。而且一切都很好。

代码语言:javascript
复制
 var temp =  $q.when({});
 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?'},

    ]

questions.forEach(function(value) {
   temp = temp.then(
        function(){
              return startRecord(value.time,value.text,value.id);
        }
    );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19720536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档