基于Camera Kit,获取相机流数据传递给native,进行压缩编码
ATS侧启动相机,使用摄像头采集视频流数据,获取相机视频流数据传递到native侧,通过buffer模式将视频编码成MP4文件保存到沙箱路径。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS Camera Kit(相机服务)预览输出流与相片输出流不一致
1238浏览 • 1回复 待解决
HarmonyOS Camera Kit相机问题
1573浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中使用IPC Kit进行跨进程数据传递?
1341浏览 • 1回复 待解决
如何在鸿蒙系统中实现基于 Intent 的数据传递?
1288浏览 • 0回复 待解决
HarmonyOS 数据传递问题
1508浏览 • 1回复 待解决
如何连续获取相机预览流数据
1702浏览 • 1回复 待解决
HarmonyOS 前端采集 arraybuffer 如何传递给 c++ 用以编码?
1111浏览 • 1回复 待解决
HarmonyOS worker间数据传递
1252浏览 • 1回复 待解决
HarmonyOS 视频流数据传输
1415浏览 • 1回复 待解决
HarmonyOS router.getParams()数据传递
1728浏览 • 1回复 待解决
基于CameraKit对相机进行操作
1865浏览 • 1回复 待解决
HarmonyOS 关于Provide数据传递问题咨询
1276浏览 • 1回复 待解决
HarmonyOS Camera相机开发,预览流能否设置分辨率?
1598浏览 • 1回复 待解决
获取图片的pixelMap后,传递给下一个页面后,获取传递的pixelMap数据不对
2585浏览 • 1回复 待解决
鸿蒙应用开发中,如何利用IPC Kit进行高效的数据传输?
529浏览 • 0回复 待解决
HarmonyOS 请问如何获取到相机的内容数据流?
1346浏览 • 1回复 待解决
HarmonyOS 获取相机的视频流
973浏览 • 1回复 待解决
HarmonyOS 使用Native代码进行音频编码问题
1298浏览 • 1回复 待解决
camera 获取预览数据
3111浏览 • 1回复 待解决
HarmonyOS axios上传文件数据传递问题
1119浏览 • 1回复 待解决
实现文件解压缩和数据流解压缩
3086浏览 • 1回复 待解决
HarmonyOS Camera kit 双路预览方案频繁开关相机底层崩溃
1480浏览 • 1回复 待解决
使用XComponent组件显示相机的预览输出流时,如何获取相机的帧数据
4207浏览 • 1回复 待解决
HarmonyOS 使用AVCodec进行编码HDR视频的时候,传递给编码的的数据应该是从HDR的线性空间变换到PQ或者HLG的空间数据吧?另外Vivid的动态元数据由编码器生成吧?
713浏览 • 1回复 待解决
HarmonyOS 如何将 CanvasRenderingContext2D 对象传递给 native c++
1029浏览 • 1回复 待解决
具体实现步骤可分为:
Step1:申请权限,启动相机。
Step2: 启动录制,获取视频流数据,获取一帧图像转成JPG格式保存到沙箱路径。
Step3: 视频流数据传递到native侧,进行压缩编码,生成文件保存。
步骤一: 申请权限,启动相机。需要相机、麦克风、媒体位置、写入媒体和读取媒体权限。
2:启动相机,预览实现。导入camera接口,创建双路预览流通道,使用XComponent组件和ImageReceiver组件创建Surface用来显示和获取预览图像。
步骤二:启动录制,获取相机视频流数据。
1:生成相机视频流数据:视频流数据是通过在onPageShow里面启动本地录制生成,当页面显示时,会调用 startRecord()方法开始录制,在页面隐藏时,调用 stopRecorder()函数停止录制视频,并释放相机资源。
2: 获取相机视频流数据通过imageReceiver获取相机流数据,Videocompressor.pushoneframedata(buffer) 接收buffer数据。
3:再此基础上获取一帧图像转成JPG格式保存到沙箱路径。
获取图像数据,使用imagePackerApi接口将图像数据打包成JPG格式。
步骤三:视频流数据传递到native侧,进行压缩编码。
1:native侧和JS侧交互实现,创建一个VideoCompressor类实例绑定到JS对象中。
Videocompressor在JS侧自定义封装的对象,里面包含启动本地录制方法。
native侧自定义封装一个视频录制管理器类,包含启动本地录制方法。
2:接收JS侧数据。
成功推送一帧视频数据后,pushOneFrameData函数会将一帧数据推送到编码器中进行编码。
3:编码使用的是buffer模式,编码过程分为创建编码器实例对象 --> 设置编码器回调函数 --> 启动编码器,开始编码 --> 写入编码码流 -->将数据推入编码器的输入队列中进行编码 --> 编码完成通知编码器码流结束 --> 输出编码帧 --> 销毁编码器实例,释放资源。
3.1: 创建编码器实例对象,创建回调函数。
3.2 设置回调函数SetVideoEncoderCallback,可以通过处理该回调报告的信息,确保编码器正常运转。
3.3:编码器就绪,开始编码。
3.4:写入编码码流。
3.5 将数据推入编码器的输入队列中进行编码。
3.6:编码完成通知编码器码流结束。
3.7:输出编码帧,拿到编码后的数据。
3.8:数据写入到输出文件中保存。