往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录)

✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?

✏️ 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~

✏️ 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?

✏️ 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?

✏️ 市场巨变,移动开发行业即将迎来“第二春”?

✏️ 记录一场鸿蒙开发岗位面试经历~

✏️ 持续更新中……


简介

videotrimmer是在OpenHarmony环境下,提供视频剪辑能力的三方库。

效果展示:

安装教程

 ohpm install @ohos/videotrimmer

使用说明

目前支持MP4格式。

视频格式 是否支持
MP4

目前支持H264

编解码格式 是否支持
H264

使用VideoTrimmerView

  1. 构建VideoTrimmerOption对象:
    getContext(this).resourceManager.getMediaContent($r('app.media.app_icon'))
      .then(uint8 =>{
        let imageSource = image.createImageSource(uint8.buffer as any); // 步骤一:文件转为pixelMap 然后变换 给Image组件
        imageSource.createPixelMap().then(pixelmap => {
          this.videoTrimmerOption = {
            srcFilePath: this.filePath,
            listener:{
              onStartTrim: ()=>{
                console.log('dodo  开始裁剪')
                this.dialogController.open()
              },
              onFinishTrim:(path:string) => {
                console.log('dodo  裁剪成功 path='+path)
                this.outPath = path;
                this.dialogController.close()
              },
              onCancel:()=>{
                console.log('dodo  用户取消')
                router.replaceUrl({url:'pages/Index',params:{outFile: this.outPath}})
              }
            },
            loadFrameListener:{
              onStartLoad:()=>{
                console.log('dodo  开始获取帧数据')
                this.dialogController.open()
              },
              onFinishLoad:()=>{
                console.log('dodo  获取帧数据结束')
                this.dialogController.close()
              }
            },
            frameBackground: "#FF669900",
            framePlaceholder: pixelmap
          }
        })


      })
  1. 界面build()中使用VideoTrimmerView组件,传入VideoTrimmerOption对象
build() {
    Row() {
      Column() {
        VideoTrimmerView( {videoTrimmerOption:this.videoTrimmerOption!!})
      }
      .width('100%')
    }
    .height('100%')
  }
 

接口说明

VideoTrimmerOption 视频剪辑选项

字段 描述
srcFilePath 视频源路径
listener 裁剪回调
loadFrameListener 加载帧回调
VIDEO_MAX_TIME 指定裁剪长度 默认值10秒
VIDEO_MIN_TIME 最小剪辑时间
MAX_COUNT_RANGE seekBar的区域内一共有多少张图片
THUMB_WIDTH 裁剪视频预览长方形条状左右边缘宽度
PAD_LINE_WIDTH 裁剪视频预览长方形条状上下边缘高度
framePlaceholder 当加载帧没有完成,默认的占位图
frameBackground 裁剪视频预览长方形条状区域背景颜色

VideoTrimListener 视频剪辑回调

方法名 入参 接口描述
onStartTrim(); 开始剪辑
onFinishTrim(outputFile:string); outputFile:string 完成剪辑
onCancel(); 取消剪辑

VideoLoadFramesListener 视频加载回调

方法名 入参 接口描述
onStartLoad(); 开始加载视频帧
onFinishLoad(); 完成加载视频帧

约束与限制

在下述版本验证通过:

DevEco Studio: NEXT Beta1-5.0.3.806, SDK: API12 Release (5.0.0.66)

DevEco Studio: NEXT Developer Beta3-5.0.3.530, SDK: API12 (5.0.0.35)

HSP场景适配:

VideoTrimmerOption配置类新增可选参数context,在HSP场景下需要传入正确的context,才能保证三方库后续正确获取Resource资源。

非HSP场景不影响原功能,context可以不传。

目录结构

|----ohos_video_trimmer
|     |----entry  # 示例代码文件夹
			|----pages # 页面测试代码
				|----index.ets #测试入口页面
				|----Video.ets 		#剪辑主要测试页面
				|----FileUtils.ets	#工具类
|     |---- screenshots #截图
|     |---- videotrimmer  # video_trimmer库文件夹
|           |---- src  # video_trimmer库核心代码
				|----components
					 |----RangeSeekBarView.ets		#自定义组件,选定视频剪辑长度
					 |----TimeUtils.ets           #时间处理工具类
					 |----VideoLoadFramesListener.ets # 加载帧回调接口
					 |----VideoThumbListView.ets     #自定义组件,视频帧列表
					 |----VideoTrimListener.ets      # 视频剪辑回调接口
					 |----VideoTrimmerOption.ets     # 视频剪辑选项
					 |----VideoTrimmerView.ets       #自定义视频剪辑组件
|     |---- README.MD  # 安装使用方法
|     |---- README_zh.MD  # 安装使用方法

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐