OpenHarmony多媒体-video_trimmer

简介

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

效果展示:

安装教程

 ohpm install @ohos/videotrimmer

使用说明

目前支持MP4格式。

视频格式是否支持
MP4

目前支持H264

编解码格式是否支持
H264

使用VideoTrimmerView

  1. 构建VideoTrimmerOption对象:
      .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:$videoTrimmerOption})
      }
      .width('100%')
    }
    .height('100%')
  }

接口说明

VideoTrimmerOption 视频剪辑选项

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

VideoTrimListener 视频剪辑回调

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

VideoLoadFramesListener 视频加载回调

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

约束与限制

在下述版本验证通过:

DevEco Studio: 4.1 Canary2 (4.1.3.322), SDK: API11 (4.1.3.1)

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  # 安装使用方法
视频的处理和播放主要是视频的清晰度、观看流畅度方面的体验。在这方面来讲,可以采用“窄带高清”技术,在节省码率的同时能够提供更加清晰的观看体验,经过测试,同等视频质量下最高可以节省20-40%带宽。除了带宽之外,短视频内容的存储和CDN优化也尤为重要,通常我们需要上传到云存储服务器的内容是短视频内容和封面内容。 而CDN优化带给短视频平台的则是进一步的短视频首次载入和循环播放方面的体验。比如针对首播慢的问题,像阿里云播放器支持QUIC协议,基于CDN的调度,可以使短视频首次播放秒开的成功率达到98%,此外在循环播放时还可以边播放边缓存,用户反复观看某一短视频时就不用耗费流量了。 在Android系统当中,如果需要一台Android设备来获取到一个MP4这样的视频文件的话,主流的方式一共与三种:MediaRecorder、MediaCodec+MediaMuxer、FFmpeg。 MediaRecorder:是Android系统直接提供给我们的录制类,用于录制音频和视频的一个类,简单方便,不需要理会中间录制过程,结束录制后可以直接得到音频文件进行播放,录制的音频文件是经过压缩的,需要设置编码器,录制的音频文件可以用系统自带的播放器播放。 优点:大部分以及集成,直接调用相关接口即可,代码量小,简单稳定; 缺点:无法实时处理音频;输出的音频格式不是很多。 MediaCodec+MediaMuxer: MediaCodec 与 MediaMuxer结合使用同样能够实现录制的功能。MediaCodec是Android提供的编解码类,MediaMuxer则是复用类(生成视频文件)。从易用性的角度上来说肯定不如MediaRecorder,但是允许我们进行更加灵活的操作,比如需要给录制的视频添加水印等各种效果。 优点: 与MediaRecorder一样低功耗速度快,并且更加灵活 缺点: 支持的格式有限,兼容性问题 FFmpeg: FFmpeg(Fast forword mpeg,音视频转换器)是一个开源免费跨平台的视频和音频流方案,它提供了录制/音视频编解码、转换以及流化音视频的完整解决方案。主要的作用在于对多媒体数据进行解协议、解封装、解码以及转码等操作 优点:格式支持非常的强,十分的灵活,功能强大,兼容性好; 缺点:C语言些的音视频编解码程序,使用起来不是很方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值