ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

上传流量直接减半:VModal 360px预上传转码功能完整指南

上传流量直接减半:VModal 360px预上传转码功能完整指南 上传流量直接减半VModal 360px预上传转码功能完整指南【免费下载链接】vmodal_sdk_flutterV- Modal AI: Visual Video / Image Search - SDK Flutter项目地址: https://gitcode.com/gh_mirrors/vm/vmodal_sdk_flutterVModal Flutter SDK是一款让 Android 与 iOS 应用具备多模态视频记忆的开源 SDK上传视频后可按语义、语音、文字或画面搜索视频中的关键时刻。而在 1.3.0 之后的版本中它新增了一项非常实用的能力——360px 预上传转码在视频真正上传之前先在本地把长边压缩到 360px再上传这个小文件从而显著减少上传流量。本指南面向新手带你完整理解它的原理、启用方式与注意事项。为什么需要上传前转码 移动场景下视频是最大的流量消耗源。一段手机拍的 1080p 视频动辄几百 MB而云端做索引、抽帧、语义分析时往往并不需要这么高的分辨率——把长边压到 360px 后再上传体积通常能降到原来的几分之一。这正是 VModal Python SDK 中video_upload(reduce_size...)的移动端等价能力。官方示例中的摄像头视频素材如 downtown_traffic.mp4就属于典型受益场景 官方设计原则SDK 核心包不包含任何原生转码代码。它只负责定义转码接口和上传生命周期真正的压缩由你的应用注入如ffmpeg_kit_flutter或video_compress插件。核心机制三句话讲清楚 ⚙️默认不转码上传选项中的转码器默认是PassthroughVideoTranscoder直通即原样上传。注入即生效你在VideoUploadOptions里塞入一个自定义转码器SDK 就会先调用你的reduce(File)生成小文件上传小文件上传成功后自动删除临时文件原始视频始终不受影响。缓存可复用如果你的转码器返回的是缓存中的压缩结果标记reused: true即可SDK 会如实记录在响应里。接口定义见 lib/src/transcode.dart上传时的完整处理流程生成临时文件 → 上传 → 删除临时文件 → 回填响应字段在 lib/src/collection_uploads.dart 中实现。启用前的三个前提条件 ✅条件说明 必须是文件源使用UploadSource.fromFile(File(path))流式源配自定义转码器会直接抛ValidationException 仅限租户作用域上传受限的UserScope.upload只接受直通转码器自定义转码器仅适用于租户级 scope/client 上传路径 100MB 限制按原文件检查大小校验针对转码前的原始文件进行完整契约文档见 doc/transcode_360.md转码相关的验收测试见 test/transcode_upload_test.dart。三步接入从依赖到上传 第 1 步在你的 App 的pubspec.yaml中添加转码插件SDK 本身不依赖它例如ffmpeg_kit_flutter。第 2 步实现VideoTranscoder接口。官方给出的参考实现逻辑见 doc/transcode_360.md 的 App-side exampleclass Ffmpeg360Transcoder implements VideoTranscoder { override bool get isPassthrough false; override FutureTranscodeResult reduce(File input) async { // 1. 若临时目录已存在压缩结果直接复用 // return TranscodeResult(cached, reused: true); // 2. 否则用 FFmpeg 将长边压到 360px // 输出 .360.mp4 到临时目录 // 3. return TranscodeResult(out); } }第 3 步上传时注入转码器。通过 scope 上传final task project .scope(collectionName: user_123, streamName: clips) .upload( UploadSource.fromFile(File(/path/to/clip.mp4)), options: ScopedUploadOptions( uploadOptions: VideoUploadOptions(transcoder: Ffmpeg360Transcoder()), ), );也可以直接调用 client 扩展final task client.collections.videoUpload( UploadSource.fromFile(File(/path/to/clip.mp4)), collectionName: user_123, subCollectionName: clips, options: VideoUploadOptions(transcoder: Ffmpeg360Transcoder()), );上传完成后如何确认省了多少流量VideoUploadResponse提供了与 Python SDK 对齐的字段定义见 lib/src/models.dart方便你在产品里直接展示本次省了多少流量字段含义reduceSize本次上传是否走了转码压缩路径sizeBytes实际上传的字节数压缩后的临时文件sourceSizeBytes原始文件大小sourceFilePath本地原始文件路径temporaryFileDeletedSDK 是否已删除产生的临时文件temporaryFileReused压缩文件是否来自你的缓存只需一行对比就能算出节省比例sourceSizeBytes - sizeBytes。上传完成后视频即可进入 VModal 的语义搜索流程用一句话找出目标时刻生产环境注意事项 ⚠️先验证再上线把官方示例当作适配器起点生产使用前请自行检查原生执行是否成功、输出文件是否有效、缓存键是否稳定、并发写入同一目标路径的情况以及临时文件的归属。空文件会被拒绝转码器若产出空临时文件SDK 会抛出ValidationException。原文件永不被动SDK 只删除它知道的压缩临时文件你的原始视频路径不变。会话作用域限制用户会话UserScope上传路径强制直通转码这是有意的设计约束。参考资源 完整契约与示例代码doc/transcode_360.md转码接口与直通实现lib/src/transcode.dart上传流程实现lib/src/collection_uploads.dart响应字段定义lib/src/models.dart文档总目录doc/README.md行为验收测试test/transcode_upload_test.dart小结VModal 的 360px 预上传转码用接口 注入的方式把压缩能力交给应用、把生命周期管理交给 SDK——上传流量显著降低代码却只多了一个VideoUploadOptions(transcoder: ...)。对于视频密集的 Flutter 应用这是省流量的低垂果实。【免费下载链接】vmodal_sdk_flutterV- Modal AI: Visual Video / Image Search - SDK Flutter项目地址: https://gitcode.com/gh_mirrors/vm/vmodal_sdk_flutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表