2016-11-28 170 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--- 

})