使用VideoProcessing对视频处理
介绍
本场景解决方案主要面向视频编辑相关开发人员,指导开发者使用VideoProcessing对视频进行缩放增强,动态元数据生成,色彩空间转换的操作。
效果预览

使用说明
- 点击选择视频,选择需要处理的视频。
- 点击视频缩放,弹出视频缩放增强等级弹窗,选择对应增强等级对视频进行增强。
- 点击元数据生成,弹出元数据生成弹窗,选择元数据格式,生成相应元数据信息的视频。
- 点击色彩空间转换,弹出色彩空间转换弹窗,根据色彩空间格式,生成相应色彩空间的视频。
- 点击播放视频按钮,播放视频,不处理。
- 如果视频不支持此处理,则点击处理时,提示“该视频不支持当前操作”。
工程目录
├──entry/src/main/ets/
│ ├──common
│ │ ├──entryability
│ │ │ └──CommonConstants.ets // 公共常量类
│ │ └──utils
│ │ ├──DateTimeUtil.ets // 日期工具类
│ │ ├──Logger.ets // 日志工具类
│ │ └──WindowUtil.ets // 窗口设置工具类
│ ├──entryability
│ │ └──EntryAbility.ets // 程序入口类
│ ├──page
│ │ └──VideoPage.ets // 视频处理页
│ └──view
│ └──MultiStatusButton.ets // 自定义状态按钮
├──entry/src/main/cpp/
│ ├──CMakeLists.txt // 构建脚本
│ ├──capbilities
│ │ ├──AudioDecoder.cpp // 音频解码实现类
│ │ ├──Demuxer.cpp // 解封装实现类
│ │ ├──VideoDecoder.cpp // 视频解码实现类
│ │ └──include
│ │ ├──AudioDecoder.h // 音频解码头文件
│ │ ├──Demuxer.h // 解封装头文件
│ │ └──VideoDecoder.h // 视频解码头文件
│ ├──common
│ │ ├──SampleCallback.cpp // 回调实现类
│ │ ├──SampleCallback.h // 回调头文件
│ │ ├──SampleInfo.h // 数据实体类
│ │ └──dfx
│ │ ├──error
│ │ │ └──AVCodecSampleError.h // 错误码常量类
│ │ └──log
│ │ └──AVCodecSampleLog.h // 日志工具类
│ ├──render
│ │ ├──PluginManager.cpp // 插件管理实现类
│ │ ├──PluginRender.cpp // 渲染插件实现类
│ │ └──include
│ │ ├──PluginManager.h // 插件管理头文件
│ │ └──PluginRender.h // 渲染插件头文件
│ ├──sample
│ │ └──player
│ │ ├──Player.cpp // 播放实现类
│ │ ├──Player.h // 播放头文件
│ │ ├──PlayerNative.cpp // NAPI实现类
│ │ └──PlayerNative.h // NAPI头文件
│ └──types
│ └──player
│ ├──index.d.ts // NAPI接口
│ └──oh-package.json5 // 播放器so与d.ts定义
└──entry/src/main/resources // 应用静态资源目录
相关权限
获取媒体文件访问权限:ohos.permission.READ_MEDIA
约束与限制
- 本示例仅支持标准系统上运行,支持设备:华为手机。
- HarmonyOS系统:HarmonyOS 5.0.4 Release及以上。
- DevEco Studio版本:DevEco Studio 5.0.4 Release及以上。
- HarmonyOS SDK版本:HarmonyOS 5.0.4 Release SDK及以上。
具体实现
- 色彩空间转换相关接口调用换封装在PluginManager中,源码参考PluginManager.cpp。
- 视频动态元数据生成相关接口调用换封装在PluginManager中,源码参考PluginManager.cpp。