# OpenHarmony_VideoCompress **Repository Path**: vickybb/open-harmony_-video-compress ## Basic Information - **Project Name**: OpenHarmony_VideoCompress - **Description**: 当前库是基于ohos高性能视频压缩器。 支持通过设置bitrate、frameRate来调节视频压缩大小、 支持实时获取视频压缩进度、 支持实时取消压缩进度。 支持并行多个视频压缩任务。 灵感参考:https://gitee.com/openharmony-sig/ohos_videocompressor - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 10 - **Created**: 2025-04-19 - **Last Updated**: 2025-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenHarmony_VideoCompress #### 介绍&版本 **本三方库是一款基于ohos高性能视频压缩器。** **_基于DevStudio5.0.0Release版本 & OpenHarmonySDK12版本构建。_** #### 支持 - _**设置bitrate、frameRate来调节视频压缩的程度。**_ - _**实时获取视频压缩进度。**_ - **_实时取消当前压缩视频流程。_** - **_多个视频压缩任务并行。_** #### 软件架构 - OpenHarmony_VideoCompress - - entry # 示例代码文件夹 - - - index.ets # 对外接口 #### 使用样例代码 _**启动压缩:**_ ``` this.compressor.compressVideo(getContext(this), cacheFilePath, compressConditions) .then((result) => { let newFIle = fs.openSync(result.outputPath, fs.OpenMode.READ_ONLY); console.info(`compressTrace|rawPath${result.outputPath} NewPath:${newFIle.path} Result:${result.code.toString()} compressedSize:${fs.statSync(newFIle.fd) .size}`) }) ``` **_获取压缩进度:_** ``` let compressProgress = { progress: 0, taskID: '0' } as progressInfo; //启用定时器定向获取压缩视频id compressProgress.overFlag = setInterval(() => { //这里获取进度 compressProgress.progress = this.compressor.getCurrentProgress(compressProgress.taskID); if (compressProgress.progress >= 100) { promptAction.showToast({ message: '压缩流程结束 -> 任务ID:' + compressProgress.taskID }) clearInterval(compressProgress.overFlag); } else if (compressProgress.progress == -1) { promptAction.showToast({ message: '压缩中断 -> 任务ID:' + compressProgress.taskID }) clearInterval(compressProgress.overFlag); } }, 300); ``` **_取消压缩进度:_** ``` cancelCompress(this.cancelTaskID) //成功取消返回0,失败返回-1 ``` #### 支持的视频规格 支持的解封装格式: | 视频 | mp4、mpeg.ts | |----|-------------| 支持的视频解码格式: |AVC(H.264)、 HEVC(H.265)| |--| 支持的音频解码格式: | AAC | |-----| 支持的视频编码格式: | AVC(H.264)、 HEVC(H.265) | |-------------------------| 支持的音频编码格式: | AAC | |-----| 支持的封装格式: | MP4 | |-----| #### 使用本三方库方法 1、使用git链接到本地: https://gitee.com/Cq_6Git/open-harmony_-video-compress.git 2、下载三方库工程至本地,将compressVideo\entry\src\main\cpp目录与compressVideo\entry\src\main\ets\compactVideo目录应用至本地。 随后根据compressVideo\entry\src\main\ets\pages\Index.ets中的样例,对接口进行封装调用即可。 #### 接口说明 | 接口函数 | 参数 | 描述&返回值 | |--------------------|-----------------------------------------------------------------------------------|-----------------------------------| | compressVideo | context: 上下文;inputFilePath: 需要压缩的文件路径;compressConditions: 设置帧率与比特率与压缩文件的唯一ID | 返回目标视频压缩后的文件路径、压缩码(成功0 失败-1)、压缩信息 | | getCurrentProgress | target:目标视频的唯一ID | 目标视频当前压缩进度。返回整形0-100 | | cancelCompress | target: 目标视频的唯一ID | 取消目标视频的压缩流程.成功返回0,失败-1 | #### 效果展示视频 https://gitee.com/Cq_6Git/open-harmony_-video-compress/blob/master/ExampleDisplay.mp4