HarmonyOS 鸿蒙Next 给视频添加水印的方法:对每一帧图像添加水印然后用编码器合成视频

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 给视频添加水印的方法:对每一帧图像添加水印然后用编码器合成视频

有视频加水印的例子吗? 求一个。

2 回复

录制/选择视频添加水印,暂无简单的系统 api 接口,若实现功能较为复杂,无简单 Demo

获取视频首帧图片,您参考下获取视频缩略图:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/avimagegenerator-V5

实时录制视频添加水印方法:

1. 通过监听相机预览流的 imageArrival 事件,获取预览帧:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-image-0000001821001457#ZH-CN_TOPIC_0000001811318782__on9

2. 获取预览帧后,对每一帧图片添加水印,图片添加水印案例,https://developer.huawei.com/consumer/cn/forum/topic/0207151268119912225?fid=0109140870620153026

3. 将添加水印的后的图片 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 -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系统中,为视频添加水印的过程可以通过以下步骤实现,涉及帧处理与视频编码:

  1. 帧提取:首先,利用视频解码库(如FFmpeg)将原始视频逐帧解码为图像序列。这一步是确保能够对每一帧进行单独处理的基础。

  2. 水印添加:对每一帧解码后的图像,使用图像处理库(如OpenCV)进行水印叠加。水印可以是静态图片或动态生成的文本,通过设定透明度、位置等参数,实现水印效果的自定义。

  3. 编码合成:完成所有帧的水印添加后,利用视频编码库(同样如FFmpeg)将这些带水印的图像序列重新编码为视频文件。编码过程中,需确保编码参数(如分辨率、帧率、比特率等)与原视频一致,以保持视频质量。

  4. 优化与输出:最后,对编码后的视频进行必要的优化处理,如调整码率、去除冗余信息等,然后输出最终的视频文件。

整个过程需确保所有库与HarmonyOS鸿蒙Next系统的兼容性,以及处理效率与资源占用之间的平衡。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部