HarmonyOS 鸿蒙Next 抖音保存视频到相册怎么做到加上水印的?有没有大佬指点一下

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

HarmonyOS 鸿蒙Next 抖音保存视频到相册怎么做到加上水印的?有没有大佬指点一下

鸿蒙抖音保存视频到相册怎么做到加上水印的?有没有大佬指点一下,有没有视频保存本地加水印的demo,求教!

4 回复

可以参考如下方式给视频添加水印

@Entry
@Component
struct Index {
  @State videoSrc: Resource = $rawfile('trailer.mp4')
  @State curRate: PlaybackSpeed = PlaybackSpeed.Speed_Forward_1_00_X
  @State isAutoPlay: boolean = false
  @State showControls: boolean = true
  controller: VideoController = new VideoController()

  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)

  @Builder
  WatermarkBuilder() {
    Column() {
      Row() {
        Column() {
          Text('20:50')
            .fontSize(20)
            .fontColor('#3b7ad2')
          Text('2024.04.28')
            .fontSize(10)
            .fontColor('#3b7ad2')
        }
        .alignItems(HorizontalAlign.Start)

        Divider()
          .vertical(true)
          .height(30)
          .width(10)
          .strokeWidth(3)
          .color('#c68024')

        Column() {
          Text('星期日')
            .fontSize(20)
            .fontColor(Color.White)
          Text('23°C多云 4201米')
            .fontSize(10)
            .fontColor(Color.White)
        }
        .alignItems(HorizontalAlign.Start)
      }
      .justifyContent(FlexAlign.SpaceAround)

      Column() {
        Text('经纬度: 113.934934N, 22.570846N')
          .fontSize(10)
          .fontColor(Color.White)
        Text('地址: 113.934934N, 22.570846N')
          .fontSize(10)
          .fontColor(Color.White)
      }
      .alignItems(HorizontalAlign.Start)
    }
    .width('auto')
    .height('auto')
    .hitTestBehavior(HitTestMode.None)
  }

  build() {
    Column() {
      Video({
        src: this.videoSrc,
        currentProgressRate: this.curRate,
        controller: this.controller
      })
        .width('100%')
        .height(600)
        .overlay(this.WatermarkBuilder(), {
          offset: {
            x: -100,
            y: 490
          }
        })
        .autoPlay(this.isAutoPlay)
        .controls(this.showControls)
        .onStart(() => {
          console.info('onStart')
        })
        .onPause(() => {
          console.info('onPause')
        })
        .onFinish(() => {
          console.info('onFinish')
        })
        .onError(() => {
          console.info('onError')
        })
        .onPrepared((e?: DurationObject) => {
          if (e != undefined) {
            console.info('onPrepared is ' + e.duration)
          }
        })
        .onSeeking((e?: TimeObject) => {
          if (e != undefined) {
            console.info('onSeeking is ' + e.time)
          }
        })
        .onSeeked((e?: TimeObject) => {
          if (e != undefined) {
            console.info('onSeeked is ' + e.time)
          }
        })
        .onUpdate((e?: TimeObject) => {
          if (e != undefined) {
            console.info('onUpdate is ' + e.time)
          }
        })

      Row() {
        Button('src').onClick(() => {
          this.videoSrc = $rawfile('trailer.mp4') // 切换视频源
        }).margin(5)
        Button('Watermark').onClick(() => {
          this.context.beginPath()
          this.context.font = `宋体 ${80}px}`
          this.context.textBaseline = "top"
          this.context.fillStyle = "#80b2bec3"
          this.context.fillText("水印水印水印水印", 100, 100)
          this.context.closePath()
        }).margin(5)
        Button('controls').onClick(() => {
          this.showControls = !this.showControls // 切换是否显示视频控制栏
        }).margin(5)
      }

      Row() {
        Button('start').onClick(() => {
          this.controller.start() // 开始播放
        }).margin(5)
        Button('pause').onClick(() => {
          this.controller.pause() // 暂停播放
        }).margin(5)
        Button('stop').onClick(() => {
          this.controller.stop() // 结束播放
        }).margin(5)
        Button('setTime').onClick(() => {
          this.controller.setCurrentTime(10, SeekMode.Accurate) // 精准跳转到视频的10s位置
        }).margin(5)
      }

      Row() {
        Button('rate 0.75').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_0_75_X // 0.75倍速播放
        }).margin(5)
        Button('rate 1').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_1_00_X // 原倍速播放
        }).margin(5)
        Button('rate 2').onClick(() => {
          this.curRate = PlaybackSpeed.Speed_Forward_2_00_X // 2倍速播放
        }).margin(5)
      }
    }
  }
}

interface DurationObject {
  duration: number;
}

interface TimeObject {
  time: number;
}

您这个只是在播放预览的时候看到水映,没有吧水映添加到视频源里呀

作为IT专家,对于HarmonyOS鸿蒙Next系统下抖音保存视频到相册并添加水印的问题,以下是一些专业解答:

在HarmonyOS鸿蒙Next系统上,抖音保存视频到相册并添加水印的功能,主要依赖于抖音应用的设置以及鸿蒙系统的权限管理。

  1. 抖音应用内设置

    • 打开抖音应用,进入“设置”。
    • 在设置中找到“通用设置”或类似选项。
    • 开启“保存自己内容带水印”的开关。
  2. 保存视频

    • 在抖音中找到想要保存的视频。
    • 点击分享按钮,选择“保存到相册”。
  3. 系统权限管理

    • 确保抖音应用有访问相册的权限。
    • 如果没有,可以在鸿蒙系统的“设置”中,找到“应用和服务”,然后选择“应用管理”,在抖音应用的权限管理中开启。

如果以上步骤操作正确,抖音保存的视频应该会自动带上水印并保存到相册中。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部