基于Camera Kit,获取相机流数据传递给native,进行压缩编码
ATS侧启动相机,使用摄像头采集视频流数据,获取相机视频流数据传递到native侧,通过buffer模式将视频编码成MP4文件保存到沙箱路径。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
如何连续获取相机预览流数据
77浏览 • 1回复 待解决
基于CameraKit对相机进行操作
96浏览 • 1回复 待解决
获取图片的pixelMap后,传递给下一个页面后,获取传递的pixelMap数据不对
502浏览 • 1回复 待解决
使用XComponent组件显示相机的预览输出流时,如何获取相机的帧数据
958浏览 • 1回复 待解决
camera 获取预览数据
309浏览 • 1回复 待解决
实现文件解压缩和数据流解压缩
374浏览 • 1回复 待解决
多hap调用及数据传递,有人知道吗?
458浏览 • 1回复 待解决
openharmoney相机预览流获取,且如何实时获取到预览流的byte数组
1051浏览 • 0回复 待解决
调用Scan Kit扫描专用底层码流接口访问数据问题
332浏览 • 1回复 待解决
两个UIAbility之间可通过哪些方法实现数据传递
665浏览 • 1回复 待解决
手机如何与电脑端进行数据传输
1735浏览 • 1回复 待解决
视频流数据编码生成MP4文件保存到沙箱路径
289浏览 • 1回复 待解决
有没有相机免费推流sdk?
3764浏览 • 1回复 待解决
ndk中没有native camera对应头文件
399浏览 • 1回复 待解决
Data Guard Kit权限获取
513浏览 • 1回复 待解决
自定义弹窗中的变量如何传递给页面
837浏览 • 1回复 待解决
【求助】自定义相机Camera2焦距异常
6502浏览 • 1回复 待解决
Camera相机预览黑屏,拍照photoOutPut capture catch code:"7400104"
466浏览 • 1回复 待解决
鸿蒙有没有相机免费推流sdk推荐?
3227浏览 • 1回复 待解决
视频的SPS/PPS需要单独传递给解码器吗
106浏览 • 1回复 待解决
如何将某个组件的点击事件传递给其他组件
683浏览 • 1回复 待解决
NFC开发,HarmonyOS设备触碰nfc标签触发操作拉起应用,并把nfc标签数据传递过来
253浏览 • 1回复 待解决
ArkTS侧与Native侧如何进行map数据交互
719浏览 • 1回复 待解决
harmonyOS基于api9如何调用相机拍照?
2176浏览 • 1回复 待解决
基于ImageKit对图片进行处理
106浏览 • 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:数据写入到输出文件中保存。