新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/14 4:30:22来源:尧图网络
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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/13 10:09:00

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/13 13:31:48

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/13 16:11:45

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉