Я пытаюсь создать захват загружаемых кадров из выбранного трейлера к фильму.Эти файлы должны быть загружены в хранилище Azure в виде файлов jpg.Секция захвата кадра работает нормально (каждую полсекунды), я знаю, что строки подключения работают, потому что я проверил это с uploadTxt.
Это не дает мне никаких ошибок, однако я не вижу появления BLOB-объектов в моем хранилище.так что-то не так.Любая идея или опыт с этим
var video = document.createElement("video");
let interval = 500/1000; //fps
let currentTime = 0;
let seekResolve;
video.addEventListener('seeked', async function () {
if (seekResolve) seekResolve();
});
var playSelectedFile = function (event) {
var file = this.files[0];
var fileURL = URL.createObjectURL(file);
video.src = fileURL;
}
var input = document.querySelector('input');
input.addEventListener('change', playSelectedFile, false);
var sasKey = "MyKey";
var blobUri = "http://MyStorage.blob.core.windows.net";
var blobService = AzureStorage.Blob.createBlobServiceWithSas(blobUri, sasKey);
video.addEventListener('loadeddata', async function () {
let duration = video.duration;
let canvas = document.createElement('canvas');
let context = canvas.getContext('2d');
let [w, h] = [video.videoWidth, video.videoHeight]
canvas.width = w;
canvas.height = h;
while (currentTime < duration) {
video.currentTime = currentTime;
await new Promise(r => seekResolve = r);
context.drawImage(video, 0, 0, w, h);
var JpgImageData = canvas.toDataURL('image/jpg');
console.log(JpgImageData)
var filename = currentTime + ".jpg";
console.log(filename)
fetch(JpgImageData)
.then(res => res.blob())
.then(blob => {
console.log("here is your binary: ", blob)
blobService.createWriteStreamToBlockBlob (
'test', // container name
filename, // file name
blob, //content of file
function (error, result, response) {
if (error) {
alert('Upload filed, open browser console for more detailed info.');
console.log(error);
} else {
alert('Upload successfully!');
}
});
})
currentTime += interval;
console.log(currentTime);
}
}, false);