2016-11-28 194 views
3

我已经在我的离子移动应用中使用(aws-sdk)上传了mp4视频。 这是代码的和平。已上传的mp4视频无法播放HTML5播放器

$cordovaFile.readAsDataUrl(first, file).then(function(success) { 
    AWS.config.region = 'eu-west-1'; 
    AWS.config.update({ 
       accessKeyId: '', 
       secretAccessKey: '' 
    }); 

    var bucket = new AWS.S3({ 
        params: { 
         Bucket: 'www.bucket-new' 
        } 
       }); 

    var params = { 
        Key: "test.mp4", 
        ContentEncoding: 'base64', 
        ContentType: 'video/mp4', 
        Body: success 
       }; 

    bucket.upload(params).on('httpUploadProgress', function(evt) { 
        console.log('sucess'); 
        $scope.uploading = true; 
        $scope.progress = parseInt((evt.loaded * 100)/evt.total) + '%'; 
        console.log("Uploaded :: " + $scope.progress); 
        $scope.$apply(); 
       }).send(function(err, data) { 
        $scope.uploading = false; 
        $scope.$apply(); 
       }); 
}) 

视频已成功上传。但上传的视频无法在html5播放器上播放。

<video controls="controls" preload="metadata" autoplay="autoplay" webkit-playsinline="webkit-playsinline" class="videoPlayer"><source src="https://s3-eu-west-1.amazonaws.com/www.test-uploads/test.mp4" type="video/mp4"/></video> 

当上传使用AWS S3 dashbord该视频被成功地在这个播放器中播放的视频?通过应用程序上传视频时有什么问题(使用AWS-SDK)

+0

试图直接访问视频,错误显示bucket'www.test-uploads'不存在。 – zer00ne

+0

如果你有一个桶不存在的消息,然后检查你的权限... – Offbeatmammal

+0

@ Offbeatmammal权限是正确的。我可以成功上传。 biut上传的文件编码为base64 – ding7890

回答

1

我在这里你有科尔多瓦文件上传插件

$ cordovaFile.readAsDataURL(路径,文件)的问题

readAsDataURL功能的支持,但Chrome中的媒体类型取决于条目名称扩展名,IE中的媒体类型始终为空(与规范中的text-plain相同),但Firefox中的媒体类型始终为application/octet-stream。例如,如果内容被ABCDEFG然后火狐返回data:application/octet-stream;base64,YWJjZGVmZw==,IE返回data:;base64,YWJjZGVmZw==,铬返回编码data:<mediatype depending on extension of entry name>;base64,YWJjZGVmZw==

更多details

然后上传的文件ID的base64。

对于上传文件使用此方法。 然后你可以上传视频的二进制数据。

$cordovaFile.readAsArrayBuffer(first, file) 
     .then(function(success) { 

---Code--- 

})