HarmonyOS 鸿蒙Next 使用ArkTs相机服务时如何添加时间水印到视频预览和录制中,官方是否有现成解决方案或demo

HarmonyOS 鸿蒙Next 使用ArkTs相机服务时如何添加时间水印到视频预览和录制中,官方是否有现成解决方案或demo 我们在使用ArkTs的相机服务进行视频预览和视频录制时,无法加上时间等文字水印,不知道官方有没现成的解决方案或者demo。

2 回复

目前没有统一给视频预览时和录制结果添加水印的api,可以把水印样式定义成公共组件,可参考如下代码:

1、定义全局的水印组件

@Entry
@Component
export struct WaterMarkComponent {
  build() {
    Column({ space: 10 }) {
      Text("TestMark")
      .fontSize(50)
        .fontColor(Color.Gray)
    }
    .width("100%")
    .height('100%')
    .backgroundColor("#51aaaaaa")
      .justifyContent(FlexAlign.Center)
  }
}

// 2、基于水印组件定义一个export的custombuilder,以供全局使用

@Builder

export function createWaterMark() {

  WaterMarkComponent()

    .hitTestBehavior(HitTestMode.None) // 必须设置其触摸测试为None或Transparent,否则正常组件无法响应事件

}

2.在需要加水印页面的根节点上添加.overlay属性,并使用上述的custombuilder

import { promptAction } from '@kit.ArkUI'
import  {createWaterMark} from  '../pages/DetailPage'
@Entry
@Component
struct TestMarkDemo {
  build() {
    Row() {
      Column() {
        Text('click')
        .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => { // 测试对正常事件的响应
            promptAction.showToast({ message: 'test' })
          })
      }
      .width('100%')
    }
    .height('100%')
    .overlay(createWaterMark())
  }
}

更多关于HarmonyOS 鸿蒙Next 使用ArkTs相机服务时如何添加时间水印到视频预览和录制中,官方是否有现成解决方案或demo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next中使用ArkTs进行开发时,若想在相机服务的视频预览和录制中添加时间水印,官方并未直接提供现成的解决方案或demo,但你可以通过以下方式实现:

  1. 自定义相机预览界面:使用ArkTs构建自定义相机预览界面,通过Canvas或其他图形绘制API在预览画面上叠加时间水印。

  2. 时间水印生成:在相机预览的帧回调中,获取当前时间并格式化为水印字符串。

  3. 水印绘制:将生成的时间水印绘制到预览帧的指定位置。这通常涉及到在帧回调中对图像数据进行处理,将水印信息叠加到图像上。

  4. 视频录制处理:对于视频录制,你可能需要在编码前对每一帧进行处理,添加时间水印。这可能需要更深入的媒体处理知识,包括对视频帧的捕获和编码。

  5. 参考文档和社区资源:虽然官方没有直接提供demo,但你可以查阅HarmonyOS的官方文档,了解ArkTs的图形绘制和相机服务API的使用。同时,也可以搜索社区论坛和开发者社区,看是否有其他开发者分享了类似功能的实现代码。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部