无法将录制的WebRTC视频/音频保存到Amazon S3

时间:2014-08-05 13:57:38

标签: amazon-s3 webrtc

我正在使用RecordRTC.js在客户端生成.webm blob - 这一切都按预期工作。然后我需要将此.Webm文件保存到Amazon S3。

我目前在控制台中收到“未找到元素”消息,因为安全性不允许使用blob填充文件字段 - 那么发送blob的正确做法是什么?

我的S3帐户正在保存损坏的.webm文件,因此应用程序可以连接到S3。

这是我尝试发送.webm文件的JavaScript:

/**
 * S3 CORS
 */
uploading = false;
var xhr = new XMLHttpRequest();

function uploadFile() {

    var fd = new FormData();
    var key = 'webup-' + (new Date).getTime() + '-' + 'webcam.webm'

    fd.append('key', key);
    fd.append('acl', 'private');
    fd.append('Content-Type', 'video/webm');
    fd.append('AWSAccessKeyId', 'access-id');
    fd.append('policy', 'policy-str');
    fd.append('signature', 'signature-str');

    fd.append('file', blob);  // blob = video.src (the generated webm file)

    xhr.upload.addEventListener("progress", uploadProgress, false);
    xhr.addEventListener("load", uploadComplete, false);
    xhr.addEventListener("error", uploadFailed, false);
    xhr.addEventListener("abort", uploadCanceled, false);

    xhr.open('POST', 'https://mybucket.s3.amazonaws.com/', true);
    xhr.send(fd);

    uploading = true;
}

function uploadProgress(evt) { }
function uploadComplete(evt) { alert('Upload Complete'); }
function uploadFailed(evt)   { alert('Upload Failed'); }
function uploadCanceled(evt) { alert('Upload Canceled') }

/** 
 * ready()
 */
 $(document).ready(function(){
     saveRecording.disabled = true;
     $("#save-recording").click(function(){
        uploadFile();
    });
});

提前致谢!

1 个答案:

答案 0 :(得分:0)

你应该试试recordly.io;检查文件iohandler.js#L24。它正在将记录的blob读取为数据URL;并使用socket.io消息将结果DataURL推送到nodejs服务器;但是您可以轻松选择HTTP-POST机制。