Harmony 短视频 SDK
Harmony 短视频 SDK
1. 概述
qnshortvideokit 是七牛推出的一款适用于 Harmony 平台的短视频 SDK,提供了包括美颜、滤镜、水印、断点录制、分段回删、视频编辑、混音特效、MV 特效、本地/云端存储在内的多种功能,支持高度定制以及二次开发。
2. 核心接口
核心的接口类说明如下:
接口类名 | 功能 | 备注 |
---|---|---|
QNShortVideoRecorder | 负责视频的拍摄 | 音视频采集、美颜、编码、封包等 |
QNShortVideoEditor | 负责视频内容的编辑 | 添加滤镜、水印、文字特效以及导出等 |
3. 环境准备
3.1 系统要求
- 操作系统:HarmonyOS 5.0+
- 开发工具:DevEco Studio 5.0+
- 设备内存:≥2GB RAM
3.2 SDK集成
在项目的oh-package.json5
中添加依赖:
"dependencies": {
"@qiniu/qnshortvideokit"
},
4. 快速入门
4.1 添加权限说明
我们需要在 module.json 文件中添加相应权限的说明
- 麦克风权限:ohos.permission.MICROPHONE 是否允许 App 使用麦克风
- 相机权限: ohos.permission.CAMERA 是否允许 App 使用相机
4.2 初始化SDK
import { QNShortVideoRecorder } from '@qiniu/qnshortvideokit';
// 初始化录制实例
const recorder = new QNShortVideoRecorder();
// 配置视频参数
const videoConfig = QNVideoConfiguration.defaultConfiguration();
// 初始化摄像头
recorder.initCamera(videoConfig, null);
4.3 基础拍摄功能
// 开始预览
recorder.startCapture();
// 开始录制
recorder.startRecordVideo();
// 停止录制
recorder.stopRecordVideo();
// 切换摄像头
recorder.changeCameraPosition(camera.CameraPosition.CAMERA_POSITION_FRONT);
5. 核心功能使用
5.1 视频编辑
import { QNShortVideoEditor } from '@qiniu/qnshortvideokit';
const editor = new QNShortVideoEditor();
let path = getContext(this).cacheDir + "/resource.json";
this.shortVideoEditor.createEditor(path);
// 添加编辑视频段
this.shortVideoEditor.insertClip(path, 0, value.duration, Common.PLAY_TYPE_VIDEO);
5.2 特效处理
// 添加变速效果(2倍速)
this.shortVideoRecorder.setSpeed(2.0);
// 应用滤镜
this.shortVideoRecorder.addFilter(this.filterPath)
6. 导出与分享
6.1 视频导出
let path = getContext(this).cacheDir + "/resource.json";
let output_path = getContext(this).cacheDir + "/export.mp4";
editor.exportVideo(path, output_path,
720,
1280,
25,
2500,
44100,
2,
128
);
// 进度监听
editor.exportProgressCallback((progress) => {
console.log(`导出进度: ${progress}%`);
});
// 完成回调
editor.exportCompletionCallback(() => {
console.log('导出完成');
});
7. 最佳实践
7.1 拍摄参数建议
场景 | 分辨率 | 帧率 | 比特率 |
---|---|---|---|
普通短视频 | 720x1280 | 30fps | 2.5Mbps |
直播推流 | 540x960 | 25fps | 1.2Mbps |
7.2 异常处理
try {
await recorder.startRecordVideo();
} catch (error) {
if (error.code === 'STORAGE_FULL') {
console.error('存储空间不足');
} else if (error.code === 'NO_PERMISSION') {
console.error('请授予相机权限');
}
}
8. 常见问题
Q1:如何实现分段录制?
// 开始第一段
recorder.startRecordVideo();
// 暂停录制
recorder.stopRecordVideo();
// 开始第二段
recorder.startRecordVideo();
// 第二段暂停录制
recorder.stopRecordVideo();
9. 技术支持
- 官方文档:https://developer.qiniu.com/short-video
- 技术支持邮箱:support@qiniu.com
- 紧急联系电话:400-123-4567
文档反馈
(如有产品使用问题,请 提交工单)