Telerik - 将视频上传到Everlive,出现意外错误

时间:2016-07-06 13:35:54

标签: cordova video upload telerik everlive

我正在尝试开发一个应用程序,我希望能够录制视频,并且我正在使用Teleriks永远的服务进行测试。它正确地将我带到手机上的摄像机,然后记录后,据我知道文件应该上传,但它告诉我上传到everlive失败了,而且err.message是“意外错误”。如果有人能告诉我我做错了什么我真的很感激。感谢。

var captureSuccess = function (mediaFiles) {
    mediaAdded = true;
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        alert(mediaFiles[i].size);
        var file = {
            Filename: Math.random().toString(36).substring(2, 15) + ".mp4",
            ContentType: "video/mp4",
            base64: mediaFiles[i]
        };

        el.Files.create(file, function (response) {
            alert("Photograph added.");

        }, function (err) {
            navigator.notification.alert("Unfortunately the upload failed: " + err.message);
        });
    }
};

function captureError() {
    alert("Video Not Captured");
}

navigator.device.capture.captureVideo(captureSuccess, captureError, {
    limit: 1,
    duration: 20
});

2 个答案:

答案 0 :(得分:0)

看起来你假设视频是base64(base64:mediaFiles [i]),但它不是 - captureVideo API的结果将是一个文件,而不是base64字符串。如果Everlive需要base64,则需要先转换文件。

答案 1 :(得分:0)

我设法让它发挥作用。我从这里的Media Capture示例开始 - http://docs.telerik.com/platform/samples/Sample-Capture/。然后我在index.html文件中添加了everlive.sdk.min.js的脚本标记

<script src="https://bs-static.cdn.telerik.com/latest/everlive.all.min.js"></script>

然后修改了捕获的成功函数,为清楚起见我总是测试捕获视频,所以我硬编码了mime类型和文件名。

_captureSuccess:function(capturedFiles) {
    var i,
    media = document.getElementById("media");
    media.innerHTML = "";
    for (i=0;i < capturedFiles.length;i+=1) {
        media.innerHTML+='<p>Capture taken! Its path is: ' + capturedFiles[i].fullPath + '</p>'
    }

    var el = new Everlive('your-app-id');

    var options = {
        fileName: 'testvideo.mov',
        mimeType: 'video/quicktime'
    };

    el.files.upload(capturedFiles[0].fullPath, options)
    .then(function() {
        console.log('success');
    }, function(err) {
        console.log(JSON.stringify(err));
    });
},

然后是最重要的事情 - 您必须包含文件传输cordova插件 - https://github.com/apache/cordova-plugin-file-transfer,因为永远的sdk假定它在尝试上传文件时存在。当插件没有包含时,我的结果就像你的那样 - usccess和错误回调都没有被触发,因为sdk本身有一个错误。在我添加插件后,SDK成功上传了视频。结果如下:

video successfully uploaded

我认为这会让你开始使用你的应用