# kitty-transcode **Repository Path**: jiapengCode/kitty-transcode ## Basic Information - **Project Name**: kitty-transcode - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-01 - **Last Updated**: 2026-02-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gin-statistic 基于 Go 的 DDD 风格统计与转码服务,集成 Gin、gRPC、MongoDB、FFmpeg/FFprobe 等组件,支持点击统计与视频转码、进度回调等功能。 ## 项目目录结构(简要) ```text . ├── docs/ # Swagger 文档 ├── internal/ │ ├── application/ # 应用服务(用例编排) │ ├── domain/ # 领域实体与领域服务 │ ├── infrastructure/ # 基础设施实现(HTTP/gRPC/FFmpeg/Mongo 等) │ ├── config/ # 配置加载 │ ├── logger/ # 日志封装(zap) │ └── mock/ # 测试用 mock ├── pkg/errs/ # 公共错误 DTO ├── tools/ # 构建与辅助工具 ├── main.go # 入口程序(依赖注入、启动 HTTP/gRPC) ├── wire.go # Wire 注入定义 └── Dockerfile # 容器镜像构建 ``` 如需查看完整目录树,可以使用工具命令: ```bash # 在项目根目录执行 go run ./tools/build.go -tree ``` ## 转码与媒体信息 - **转码任务**: - 请求体中可以指定: - `output_preset`:转码预设标识,例如 `mp4_1080p_4M` - `video_width` / `video_height`:输出分辨率 - `video_bitrate` / `audio_bitrate`:视频/音频码率 - 应用层根据这些参数调用 FFmpeg 执行转码,并通过仓储与回调接口更新进度与结果。 - **FFmpeg / FFprobe 接口**: - 通过 `TranscodeExecutor` Port 抽象: - `TranscodeWithProgress(...)`:执行转码并回调进度 - `GetMediaInfo(path)`:使用 FFprobe 获取媒体元信息(时长、分辨率、码率、编解码器等) ## AK/SK 验签 - 在 `internal/infrastructure/auth/aksk.go` 中提供了基于 AK/SK 的签名与验签工具: - `BuildSignedQuery`:对查询参数进行 ASCII 正序排序后附加签名(SHA256) - `VerifySignedQuery`:根据提供的 `lookupSK` 函数验证签名正确性 - 可在 HTTP Handler 或 gRPC 拦截器中统一调用,用于保护对外接口。 ## gRPC 接口(转码相关) - 在 `internal/infrastructure/grpc/proto/transcode.proto` 中定义了转码相关 gRPC 服务: - `CreateTask`:创建转码任务 - `GetMediaInfo`:获取媒体元信息 - `WatchProgress`:服务端流式返回任务进度,便于 Java 媒资库订阅单次任务的完整进度 - 使用前需要根据该 proto 生成对应的 Go 代码(`protoc` + `protoc-gen-go` / `protoc-gen-go-grpc`)。 ## 构建与运行 ```bash # 生成 Wire 注入代码并构建 go run ./tools/build.go # 直接构建 go build ./... ``` ## License 自动生成工具(建议) 本项目当前未自动集成 License 生成工具,如需在项目中批量添加或校验 License,可考虑: - **`addlicense`**: - 地址:`https://github.com/google/addlicense` - 功能:在 Go 等源文件头部批量添加 License 头; - **GitHub License 模板**: - 在 GitHub 仓库界面中通过 “Add file → Create new file → 选择 `LICENSE` 模板” 自动生成常见开源协议文件; - **`go-licenses`**: - 地址:`https://github.com/google/go-licenses` - 功能:扫描 Go 依赖并生成依赖 License 报告,适合发布前合规检查。 根据你的实际开源计划选择合适的协议(如 MIT、Apache-2.0 等),然后再考虑是否需要集成上述工具到 CI / 构建流程中。