HarmonyOS鸿蒙Next系统支持自定义相机录制视频时或者录制视频后增加水印(图片/文字)吗?
HarmonyOS鸿蒙Next系统支持自定义相机录制视频时或者录制视频后增加水印(图片/文字)吗?
- 鸿蒙系统支持自定义相机录制视频时或者录制视频后增加水印(图片/文字)吗?
- iOS上使用系统提供的AVFoundation框架。
- 搜索鸿蒙提供的能力没有发现这个能力?如果有,方便提供个链接地址吗?
录制/选择视频添加水印,暂无简单的系统 api 接口,若实现功能较为复杂,无简单 Demo
获取视频首帧图片,您参考下获取视频缩略图: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/avimagegenerator-V5
实时录制视频添加水印方法:
-
通过监听相机预览流的 imageArrival 事件,获取预览帧
-
获取预览帧后,对每一帧图片添加水印,图片添加水印案例: https://developer.huawei.com/consumer/cn/forum/topic/0207151268119912225?fid=0109140870620153026
-
将添加水印的后的图片 buffer,喂给编码器合成视频: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/video-encoding-V5
以上做法的问题:仅能处理视频流
添加水印可以使用三方 ffmpeg 命令实现
videoPath:沙箱视频源
waterPath:沙箱中的水印图片(也可以自行通过 Canvas 绘制)
outMP4:输出视频
依赖三方库,直接调用 ffmepg 命令,但三方库不支持 drawtext 等直接绘制水印接口,若需要可自行编译或找三四方库咨询
@ohos/mp4parser: 2.0.3-rc.0
public static addWaterMark(videoPath: string) {
let basePath = GlobalContext.getContext().cacheDir;
let sourceMP4 = basePath + "/" + videoPath;
let outMP4 = basePath + "/out.mp4";
fileIo.openSync(outMP4, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
let callBack: ICallBack = {
callBackResult(code: number) {
console.info("error " + code);
}
};
let waterPath = basePath + "/result.png";
// ffmpeg command
// ffmpeg -hide_banner -i /data/storage/el2/base/haps/entry/cache/video1.mp4 -i /data/storage/el2/base/haps/entry/cache/water.jpg -filter_complex overlay=x=0:y=0 /data/storage/el2/base/haps/entry/cache/out.mp4 -y
let cmd = 'ffmpeg -hide_banner -i ' + sourceMP4 + ' -i ' + waterPath + ' -filter_complex overlay=x=0:y=0 ' + outMP4 + ' -y';
MP4Parser.ffmpegCmd(cmd, callBack);
}
更多关于HarmonyOS鸿蒙Next系统支持自定义相机录制视频时或者录制视频后增加水印(图片/文字)吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS鸿蒙Next系统支持在相机录制视频时或录制视频后增加水印(图片/文字)。系统提供了API接口,允许开发者在视频录制过程中或录制完成后,通过代码动态添加水印。开发者可以使用Watermark
类来设置水印的内容、位置、大小、透明度等属性。具体实现可以通过调用Camera
相关的API,结合MediaRecorder
或VideoEncoder
来实现水印的添加。
是的,HarmonyOS鸿蒙Next系统支持在录制视频时或录制后添加水印(图片/文字)。开发者可以通过调用系统提供的API实现自定义水印功能,用户可以在相机设置中启用水印选项,并选择水印内容。这一功能增强了视频的个性化和版权保护。