Video 如何在WinJS中对Windows.Storage.Streams.IBuffer(视频)进行编码
我有一个应用程序,它可以用网络摄像头拍照,然后获取字节,然后我使用一种方法在base64上转换,一切正常 然后我想添加视频并对其执行相同的操作(获取字节并将其转换为base 64),但它不起作用,代码如下:Video 如何在WinJS中对Windows.Storage.Streams.IBuffer(视频)进行编码,video,encoding,winjs,Video,Encoding,Winjs,我有一个应用程序,它可以用网络摄像头拍照,然后获取字节,然后我使用一种方法在base64上转换,一切正常 然后我想添加视频并对其执行相同的操作(获取字节并将其转换为base 64),但它不起作用,代码如下: var f = Windows.Storage.StorageFile.getFileFromPathAsync(capturedItem.path); return f.then(function (file) { return file.openAsyn
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
updateCaptureList(ImageData.dataArray); //updates the grid with all the screenshots
});
});
然后我想打印一个日志来观察字节:
console.log("variable: " + b.toString() + "lenght: " + b.length);
两种情况的结果(图片和视频)
但是当我想看到Windows.Storage.Streams.IBuffer转换后的控制台时,我会记录这个
console.log("data: " + ImageData.arrayTextFieldValues[ImageData.arrayTextFieldValues.length - 1]);
仅在图片上,我得到如下结果:
data: /9j/4AAQSkZJRgABAQEAAAAAAAD/4QCCRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAABJADAAIAAAAUAAAAUJAEAAIAAAAUAAAAZJKRAAIAAAADODAAAJKSAAIAAAADODAAAAAAAAAyMDE0OjAyOjI2IDE5OjUyOjE5ADIwMTQ6MDI6MjYgMTk6NTI6MTkAAAD/4QGgaHR0cDovL25zLmFkb2JlLmNv.....
但对于视频,我甚至无法打印日志,我认为失败的方法是:
Windows.Security.Cryptography.CryptographicBuffer.encodeToBase64String()
我想找到一种将我的视频文件编码为base64的方法,如果有任何帮助,我将不胜感激为时已晚,但是,我将分享我在您的代码片段中注意到的内容: 您必须更换:
console.log("variable: " + b.toString + "lenght: " + b.length);
console.log("variable: " + b.toString() + "lenght: " + b.length );
至:
console.log("variable: " + b.toString + "lenght: " + b.length);
console.log("variable: " + b.toString() + "lenght: " + b.length );
b.toString()
是一种方法,之后必须使用括号。因为这里你调用了方法,如果你传递这个方法,那么整个函数都在你的变量中,因为你只需要像b.toString
一样传递它
这就是为什么变量包含:
这可能会对您有所帮助。谢谢,但现在我得到了变量:[object Windows.Storage.Streams.IBuffer]长度:1793623但仍然没有将字节转换为字符串base64:(当您获得流时,请应用Filereader.readAsDataURL(inputStream)
,检查如何使用Filereader()
使用此选项,您可以将流转换为base64。