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

Telerik - Uploading Videos to Everlive, Unexpected Error

我目前正在尝试开发一个应用程序,我希望能够在其中录制视频,目前我正在使用 Teleriks everlive 服务对其进行测试。它正确地将我带到 phone 上的摄像机,但据我所知,在录制之后文件应该上传,但它告诉我上传到 everlive 失败并且 err.message 是"Unexpected error"。如果有人能告诉我我做错了什么,我将不胜感激。谢谢

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
});

您似乎假设视频是 base64(base64:mediaFiles[i]),但事实并非如此 - captureVideo API 的结果将是一个文件,而不是 base64 字符串。如果 Everlive 需要 base64,您需要先转换文件。

我已经设法让它工作了。我从此处的媒体捕获示例开始 - 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 因为 everlive sdk 假定它在尝试上传文件时存在。当没有包含插件时,我的结果就像你的一样——usccess 和错误回调都没有被触发,因为 sdk 本身有错误。在我包含插件后,SDK 成功上传了视频。这是结果:

我认为这会让您开始使用您的应用程序