播放通过PhoneGap FileTransfer

时间:2016-03-28 09:28:33

标签: android cordova video phonegap-plugins file-transfer

我已经被困在这个问题上一段时间了,我似乎无法找到解决方案。我想要实现的是:

  1. 从手机库中选择一个视频
  2. 使用签名的PUT网址将视频上传到Amazon AWS
  3. 下载上传的视频并在PC上播放
  4. 我可以从手机的图库中选择视频,并成功将其上传到亚马逊aws。但是,当我尝试打开并播放文件时,媒体播放器会说不支持文件格式。

    它不能成为我的播放器的编解码器问题,因为我可以播放上传到亚马逊的其他视频(通过标准HTML文件输入)。此外,当我将同一视频从手机传输到桌面时,它可以播放。

    我觉得在设置FileTransfer对象时我错过了一些东西。以下是我的代码片段:

    navigator.camera.getPicture(
    function(imgUrl) {
        that.mDialogOpen("Uploading video...");
        window.resolveLocalFileSystemURL(imgUrl, function(fileEntry) {
            fileEntry.file(function(file) {
                var parts       = fileEntry.nativeURL.split('/');
                var filename    = parts[parts.length - 1];
    
                // Params is sent to the server to generate the signed amazon put url
                var params      = {'a':'handlerFunctionKey', 'name':filename, 'type':'multipart/encrypted'};
    
                var callback = function(data) {
                    alert("In callback");
                    var dataResp = data['handlerFunctionKey'];
                    if (dataResp.status == 'SUCCESS') {
                        var amazonUrl = decodeURIComponent(dataResp.object);
    
                        alert("Setting up options: " + file.type);
                        var ftOptions           = new FileUploadOptions();
                        ftOptions.fileName      = filename;
                        ftOptions.mimeType      = file.type;
                        ftOptions.chunkedMode   = false;
                        ftOptions.headers       = {'Content-Type':"multipart/encrypted",'x-amz-acl':'public-read',"Connection":"close"};
                        ftOptions.httpMethod    = 'PUT';
    
                        var ft = new FileTransfer();
                        ft.upload(imgUrl, amazonUrl, 
                        function() {
                            $("#mModalText").html("Upload success");
                        }, 
                        function(err) {
                            alert("Upload error: " + err.code);
                            alert("Upload target: " + err.target);
                            alert("Upload source: " + err.source);
                        }, ftOptions, true);
                    }
                };
    
                that.doAjax(params, callback); // Execute ajax call to server and run the callback function upon response
            }, function() {});
        }, function() {});
    },
    function() {}, options);
    

    '选项'对于getPicture函数是:

    var options = {quality:50, destinationType:Camera.DestinationType.FILE_URI};
    options['sourceType']   = Camera.PictureSourceType.PHOTOLIBRARY;
    options['mediaType']    = Camera.MediaType.VIDEO;
    options['targetWidth']  = 640;
    options['targetHeight'] = 480;
    

    我上传的视频是带有mimeType' video / mp4'的MP4。我正在Android上对此进行测试。我通过远程构建使用Phonegap 6.0.1版构建代码。

    提前致谢。

0 个答案:

没有答案