none
Como codificar a Base64String un video en Windows.Storage.Streams.IBuffer (Video) utilizando WinJS RRS feed

  • Pregunta

  • 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é



    • Editado Jesuss001 viernes, 28 de febrero de 2014 17:24 mejora formato pregunta
    viernes, 28 de febrero de 2014 1:56