首页/新闻资讯/正文详情

video-compress-cj 开发者指南:如何扩展新视频格式与自定义压缩质量档位

发布时间:2026/9/25 1:53:27 来源:云帆数科 栏目:资讯中心
video-compress-cj 开发者指南:如何扩展新视频格式与自定义压缩质量档位
video-compress-cj 开发者指南如何扩展新视频格式与自定义压缩质量档位【免费下载链接】video-compress-cj一个高性能的视频压缩器使用硬件解码和编码API(MediaCodec)。项目地址: https://gitcode.com/Cangjie-TPC/video-compress-cjvideo-compress-cj 是一款高性能的视频压缩三方库视频压缩 SDK面向 HarmonyOS 应用基于硬件编解码 APIMediaCodec实现低耗损的 mp4、ts 视频压缩内置高、中、低三档压缩质量。本文将带你快速上手该项目并讲解两个高频定制需求扩展新的视频格式与自定义压缩质量档位。 项目结构一览3 层架构看懂视频压缩器整个工程分为 3 层扩展功能前先弄清改哪里层级目录职责仓颉 API 层videocompressor/对外接口VideoCompressor与质量枚举CompressQualityC FFI 层videocompress_ffi/解封装、解码、编码、封装的完整压缩管线示例工程entry/高/中/低三档压缩的 UI 示例整体介绍见 README.md接口文档见 doc/feature_api.md。核心压缩流程在 cjcodec.cpp 中串联解封装DeMuxer→ 格式校验 → 视频/音频解码 → 硬件编码 → 封装输出Muxer 如何扩展新的视频格式当前支持的格式白名单如下详见 README.md 的支持的视频规格输入封装mp4、mpeg.ts视频编码AVCH.264、HEVCH.265音频编码AAC输出封装mp41. 找到格式守门员JudgeMime新格式被拒绝的地方是 cjcodec.cpp 中的JudgeMime函数——它只放行video/avc、video/hevc两种视频 mime 和audio/mp4a-latm音频 mime否则直接返回not support video mime错误。扩展新格式时只需在判断条件中追加目标 mime 即可例如想让库接受video/av01AV1if (bean-demuxer-get()-videoMime ! video/avc bean-demuxer-get()-videoMime ! video/hevc bean-demuxer-get()-videoMime ! video/av01) { // 拒绝并释放资源 }2. 确认设备硬件编解码能力这是最容易踩的坑MediaCodec 是硬件编解码框架新增格式必须先在目标设备验证硬件能力否则解码/编码器创建失败。解码端 mime 由解封装器自动识别见 DeMuxer.cpp 的GetTrackInfo无需改动编码端由 VideoEnc.cpp 的CreateVideoEncoder按 mime 创建编码器硬件不支持时该步骤会返回错误。3. 输出封装保持不变输出统一为 mp4封装参数宽高、旋转、帧率、音频通道等在 cjcodec.cpp 的CreateMutex中从解封装器透传给 Muxer新格式一般无需修改。4. 重建 FFI 库并验证选择videocompressor模块点击 Build 菜单 → Make Module 等待编译完成再用 entry 示例 压缩一个新格式样本观察resCode是否为 0。️ 如何自定义压缩质量档位现有高/中/低三档本质是原码率 × 比例高质量 0.8、中质量 0.5、低质量 0.3。新增档位需要改两处。1. 仓颉层扩展 CompressQuality 枚举在 compress_quality.cj 中新增枚举值并同步更新GetTypeNum映射为整数传递给 FFI和toStringpublic enum CompressQuality { | COMPRESS_QUALITY_HIGH | COMPRESS_QUALITY_MEDIUM | COMPRESS_QUALITY_LOW | COMPRESS_QUALITY_ULTRA // 新增超低档位 }2. C 层给档位分配码率比例在 VideoEnc.cpp 的GetQualityBitrate中为新档位增加分支例如新增ultraProportions 0.15并加对应case。函数末尾已有安全兜底码率会被钳制在 10 kbps ~ 100 Mbps 之间新档位无需担心越界。3. 参数流转路径一次压缩的完整链路调用 video_compressor.cj 的compressVideo枚举经GetTypeNum转为整数通过 FFI 声明的CompressVideo进入 C 入口 cjcodec.cppquality 存入AsyncCallbackInfoConfigureVideoEncoder用 quality 计算最终码率以 CBR 模式写入编码器配置。 本地构建与验证步骤git clone -b 具体分支名 --single-branch --recursive https://gitcode.com/Cangjie-TPC/video-compress-cj.git构建环境要求README.md 约束与限制IDEDevEco Studio 5.0.5 Release (5.0.13.200)插件DevEco Studio-Cangjie Plugin 5.0.13.200 Canary开发完成后选择videocompressor模块 → Build → Make Module 完成编译再运行 entry 示例目录 下对应档位页面验证。压缩输出文件会生成在应用沙盒路径/data/app/el2/100/base/(packagename)/haps/entry/files/见 video_compressor.cj 的命名规则。❓ 常见问题速查现象可能原因排查位置not support video mime格式未加白名单JudgeMime解码器创建失败硬件不支持该编码格式DeMuxer.cpp压缩后画质异常档位码率比例过激GetQualityBitrate回调 resultCode 非 0查看 resultStr 报错信息async_callback.cj✅ 小结扩展格式 硬件能力确认 JudgeMime白名单放行 FFI 重新编译自定义档位CompressQuality枚举加值 GetQualityBitrate加比例分支两层改动仓颉 C保持一致后重新构建videocompressor模块即可生效。按照以上步骤你可以在不破坏原有高/中/低档位行为的前提下安全地为 video-compress-cj 视频压缩器扩展新格式与专属质量档位。【免费下载链接】video-compress-cj一个高性能的视频压缩器使用硬件解码和编码API(MediaCodec)。项目地址: https://gitcode.com/Cangjie-TPC/video-compress-cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

ROCm异步拷贝深度解析:hipMemcpyAsync与任务调度机制
ROCm异步拷贝深度解析:hipMemcpyAsync与任务调度机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:53:27

PaddleHub 中 plato2_en_large 开放域对话生成模块实战指南:从模型安装、预测 API 到 Serving 部署
PaddleHub 中 plato2_en_large 开放域对话生成模块实战指南:从模型安装、预测 API 到 Serving 部署

人工智能大模型微调模型推理服务 【免费下载链接】PaddleFormers PaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleFormers 点击查看 免费下载 导读… · 2026/9/25 1:53:27

fruits分类数据集.rar实战:图像分类pipeline健壮性验证指南
fruits分类数据集.rar实战:图像分类pipeline健壮性验证指南

简介:本资源是面向人工智能与机器学习初学者及计算机视觉实践者的水果图像分类数据集,专为图像识别模型训练与评估设计,覆盖监督学习、特征工程与模型泛化等核心环节。压缩包共1310个文件,主体为1306张高质量JPG格式水果图像&… · 2026/9/25 1:53:21

老板怎么看进销存数据?2026年简道云进销存6张核心报表与经营看板指南
老板怎么看进销存数据?2026年简道云进销存6张核心报表与经营看板指南

老板看进销存数据,不需要每天翻几十张报表。一套真正适合管理者的进销存经营看板,首先应该快速回答四个问题:今天卖得怎么样?货够不够?哪些钱还没收回来?库存和资金有没有异常?因此,… · 2026/9/25 20:41:02

LangChain Tools:工具集成与自定义开发
LangChain Tools:工具集成与自定义开发

LangChain Tools:工具集成与自定义开发 专栏:AI/LLM工程化实战 - 从Prompt到Agent的完整落地指南 模块5 LangChain/LlamaIndex框架篇 第47篇 摘要 摘要:LangChain工具箱、tool装饰器、StructuredTool参数schema、bind_tools工具调用、错误处理与重试、工具复用打包,是让Agent动… · 2026/9/25 20:40:55

持续打造“可预测、可依赖、可互惠”的生存策略:从信任本能到信任工程
持续打造“可预测、可依赖、可互惠”的生存策略:从信任本能到信任工程

牛、马、狗之所以被人类信任,是因为它们在万年共同进化中,形成了一套稳定的生存策略:行为可预测、能力可依赖、关系可互惠。人类信任它们,不是因为它们“善良”,而是因为它们“稳定”。 对人、对团队、对组织,逻辑完全一样。信任不是道德问题,是系统问题。你想持续获得… · 2026/9/25 20:40:55

2026中小企业ERP选型指南:4个维度12个问题,选型前必须问清楚
2026中小企业ERP选型指南:4个维度12个问题,选型前必须问清楚

选 ERP,中小企业最容易踩的坑,不是“选错了品牌”,而是“问错了问题”。 很多人选型时习惯让厂商演示功能、比价格、看案例,最后凭感觉拍板。结果上线后才发现,真正决定成败的,是那些演示时没人主动告诉你的… · 2026/9/25 20:40:29

Atlas 300V部署YOLO实战:从环境搭建到ACL推理全流程
Atlas 300V部署YOLO实战:从环境搭建到ACL推理全流程

直接回答那个热搜问题:Atlas 300V 24G 确实是运算加速卡,但准确说是“AI推理加速卡”,它跟你能插上去当显卡的GPU不是一回事,更不能直接跑CUDA代码。最近“atlas部署yolo”这个词在后台搜索里涨得很快,说明大家已经从选… · 2026/9/25 20:40:04

多智能体协同:从单模型到工程级AI研发组织范式
多智能体协同:从单模型到工程级AI研发组织范式

1. 从单兵作战到团队协作:多智能体协同到底在解决什么问题如果你最近一年在关注 AI 研发领域的动态,大概率会频繁刷到“多智能体协同”这个词。但很多人第一次听到它时的反应是:这不就是把几个大模型 API 串起来互相调用吗?有什么… · 2026/9/25 20:40:04

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码