2016-07-06 3 views
0

나는 비디오를 녹화 할 수있는 앱을 개발하고 있으며 Teleriks 영원한 서비스로 현재 테스트 중입니다. 그것은 내 휴대 전화에서 비디오 카메라에 올바르게 걸리지 만, 파일을 업로드해야한다는 것을 알고 있지만 녹화 된 후에는 영구 업로드가 실패했으며 err.message가 "예기치 않은 오류"라고 알려줍니다. 누구든지 내가 뭘 잘못하고 있는지 말할 수 있다면 정말 고맙겠습니다. 감사. 비디오를 가정하는 것 같습니다Telerik - 영원한 예기치 않은 오류로 동영상 업로드하기

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

비디오를 캡처 사용합니까 코르도바 플러그인으로 가야한다 생각

video successfully uploaded

다음은 결과입니다? – d1mitar

+0

코르도바 미디어 캡처 https://github.com/apache/cordova-plugin-media-capture This이 – SammyRob

답변

0

나는 그것이 작동하도록 만들었습니다. 여기서 Media Capture 샘플부터 시작했습니다 - http://docs.telerik.com/platform/samples/Sample-Capture/. 그럼 난 everlive.sdk.min.js

의 index.html 파일에 스크립트 태그를 추가 한

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

그런 다음 가장 중요한 것은 온다 - 당신은 파일 전송 코르도바 플러그인을 포함해야 - https://github.com/apache/cordova-plugin-file-transfer everlive SDK가 파일을 업로드하려고 할 때 존재하는 가정하기 때문에. 플러그인이 포함되지 않았을 때, 결과는 당신과 같았습니다. usdk 자체에 오류가 있었기 때문에 usccess도 오류 콜백도 실행되지 않았습니다. 플러그인을 포함 시키면 SDK가 비디오를 성공적으로 업로드했습니다. 내가이 앱

+0

샘플 앱에 관한 혼란을 겪은 후 작업 한 것을보고 마침내 작동하고 있습니다. 이제 이것이 끝났으므로 오디오에 대해서도 똑같이 할 수 있어야합니다. 고맙습니다! – SammyRob

0

는 base64로입니다 (64 기수 : MediaFiles를 [I]),하지만하지 않는 경우 - captureVideo API의 결과가 아니라 파일을 base64 문자열이 될 것입니다. Everlive에 base64가 필요한 경우 먼저 파일을 변환해야합니다.

+0

고맙습니다! 맞습니다. 파일을 먼저 변환해야합니다. 지금 변환하는 방법에 대해 살펴 보겠습니다. – SammyRob

+0

@Raymond는 파일 형식에 대해 정확합니다. 부가 메모에는 base64 형식으로 파일을 업로드 할 때 크기에 대한 엄격한 제한이 있습니다. "base64를 사용할 때 최대 업로드 크기는 약 3MB입니다."(이것은 문서에서 가져온 것입니다). 필자는 cordova 응용 프로그램 용 파일 선택 플러그인을 사용하고 파일 업로드에 사용하도록 강력히 권합니다. 여기에 대한 기본 문서가 있습니다 - http://docs.telerik.com/platform/backend-services/javascript/files/files-upload#upload-files-in-cordova-hybrid-apps. – d1mitar

+0

"el.files.upload (fileToUpload, options)" 및 fileToUpload로 mediaFiles [i]를 사용해야합니까? 나는 지금 telerik에 익숙하지 않다. – SammyRob