关于视频流格式和如何保存咨询

这里目前实现类视频流数据的获取,获取到buffer,目前想了解的是,这个视频流的buffer是什么格式的 如何保存成图片呢

API10 Devstudio 4.1 华为mate 60pro

HarmonyOS
2024-05-09 22:33:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
QW_MA
createImageReceiver(): image.ImageReceiver { 
let receiver: image.ImageReceiver = image.createImageReceiver(cameraWidth, cameraHeight, 2000, 8); 
receiver.on(‘imageArrival’, () => { 
receiver.readNextImage((err: BusinessError, nextImage: image.Image) => { 
if (err || nextImage === undefined) { 
return; 
} 
nextImage.getComponent(image.ComponentType.JPEG, async (err: BusinessError, imgComponent: image.Component) => { 
if (err || imgComponent === undefined) { 
return; 
} 
if (imgComponent.byteBuffer as ArrayBuffer) { 
let sourceOptions : image.SourceOptions = { 
sourceDensity: 120, 
sourcePixelFormat: 8, // NV21 
sourceSize: { 
height: previewProfilesObj3.size.height, 
width: previewProfilesObj3.size.width 
} 
} 
let imageResource=image.createImageSource(imgComponent.byteBuffer,sourceOptions) 
let decodingOptions: image.DecodingOptions = { 
editable: true, 
desiredPixelFormat: 3, 
} 
this.pixma=await imageResource.createPixelMap(decodingOptions) 
const imagePackerApi = image.createImagePacker(); 
let packOpts: image.PackingOption = { format: “image/jpeg”, quality: 98 }; 
const context: Context = getContext(this); 
const path1: string = context.cacheDir + “/pixel_map86695.jpg”; 
imagePackerApi.packing(imageResource, packOpts).then((data: ArrayBuffer) => { 
// data 为打包获取到的文件流,写入文件保存即可得到一张图片 
if (data) { 
let buf: buffer.Buffer = buffer.from(data ); 
let base64Url: string = buf.toString(‘base64url’, 0, buf.length); 
console.log(‘66666’+JSON.stringify(base64Url)) 
 
          let file = fs.openSync(path1, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); 
 
          fs.write(file.fd, data).then(async (writeLen) => { 
            console.info("write data to file succeed and size is:" + writeLen); 
fs.closeSync(file); 
}).catch((err: BusinessError) => { 
console.info("write data to file failed with error message: " + err.message + ", error code: " + err.code); 
}); 
} 
}).catch((error: BusinessError) => { 
console.error('Failed to pack the image. And the error is: ’ + error); 
}) 
this.pixelmap=await imageResource.createPixelMap(); 
} else { 
return; 
} 
}) 
}) 
}) 
return receiver; 
}
分享
微博
QQ
微信
回复
2024-05-10 10:52:20
相关问题
关于如何使用鸿蒙接收视频
1618浏览 • 0回复 待解决
聊一聊关于流转问题咨询
5171浏览 • 1回复 待解决
如何视频保存到相册以及主机端
3683浏览 • 1回复 待解决
怎么把视频保存到相册以及主机端?
2289浏览 • 1回复 待解决
如何用websocket发送音频?
1911浏览 • 1回复 待解决
求大佬告知如何保存cookie
569浏览 • 2回复 待解决
如何删除已完成的redis事件?
1201浏览 • 1回复 待解决
如何实现视频滤镜效果
354浏览 • 1回复 待解决
Dev EcoStudio如何格式化代码
1907浏览 • 1回复 已解决
关于HAP包的entryfeature类型
8742浏览 • 1回复 待解决
设备唯一id相关问题咨询
168浏览 • 1回复 待解决
ArkUI(eTS)如何实现本地图片保存
5146浏览 • 1回复 待解决
关系数据库如何保存图片?
6268浏览 • 2回复 待解决
关于字符串的分割重组处理
2087浏览 • 1回复 待解决