Tengo una aplicación metro desarrollada en WinJS que toma fotografías con la camara web, luego obtiene los bytes del archivo y utilizo un método para convertir dichos bytes a base64, todo funciona correctamente.
Luego requerí agregar la función de video, graba el video, lo muestra y lo almacena e hice el mismo procedimiento (obtener los bytes y convertirlos a base64), sin éxito, este es mi código:
var f = Windows.Storage.StorageFile.getFileFromPathAsync(capturedItem.path);
return f.then(function (file) { return file.openAsync(Windows.Storage.FileAccessMode.read); }).then
(function (stream) {
var inputStream = stream.getInputStreamAt(0);
var size = stream.size;
var reader = new Windows.Storage.Streams.DataReader(inputStream);
return reader.loadAsync(size).then(function () {
var b = reader.readBuffer(size);
//Creates the array, datalist and the namespace for making this data public
ImageData.dataArray[ImageData.dataArray.length] = { title: capturedItem.name, id: "img" + ImageData.dataArray.length, picture: photoBlobUrl };
ImageData.arrayCaptures.push(capturedItem); //Stores the data into array (full captured object)
ImageData.arrayTextFieldValues.push(Windows.Security.Cryptography.CryptographicBuffer.encodeToBase64String(b)); //Stores captured converted into bytes
console.log("datos: " + ImageData.arrayTextFieldValues[ImageData.arrayTextFieldValues.length - 1]);
Windows.Security.Cryptography.CryptographicBuffer.e
updateCaptureList(ImageData.dataArray);
});
});
Luego quise imprimir un log para observar los bytes y utilicé esto:
console.log("variable: " + b.toString + "tamaño: " + b.length);
El resultado en ambos casos en fotos y video (con variación de tamaño notoria en el modo video)
variable:
function toString() {
[native code]
}
tamaño: 120329
Entonces intenté algo mas, que mostrara la salida la conversión de base64 así:
console.log("data: " + ImageData.arrayTextFieldValues[ImageData.arrayTextFieldValues.length - 1]);
obtengo unicamente resultado con el modo fotografía
data: /9j/4AAQSkZJRgABAQEAAAAAAAD/4QCCRXhpZgAATU0AKgAAAAgAAY...
pero con video ni siquiera obtengo el log, creo que el metodo que está fallando es:
Windows.Security.Cryptography.CryptographicBuffer.encodeToBase64String()
quiero encontrar un método para codificar mi archivo de video a base64 para poder mandarlo por un WebService, cualquier información la agradeceré