Skip to content
itflashPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

说明

通过邀请链接:https://agentearth.ai/r/GQvDHBSU 注册可获得5000积分(官方活动,先到先得),目前可生成10个720P seedance2视频

如果需要首尾帧/参考图/图生图,则需要自己注册七牛云/缤纷云存储。

都有一定的免费空间及流量,基本都够用

七牛/缤纷云配置参考:https://gmev6z07ix.feishu.cn/wiki/WZv1w4igziY0jkkddIscvusNnOb?from=from_copylink

Mova

Mova 是一个纯客户端的 Flutter 创作应用,面向“图像生成、视频生成、素材管理、任务追踪”这一整条工作流。

目前项目已经打通了:

  • 图片生成工作流
  • Seedance2 生视频工作流
  • 本地视频剪辑、转场、BGM 与合成导出工作流
  • 素材上传、管理、分类、分组、引用与回收
  • 本地任务记录、结果追踪、失败重试与结果回看

这个项目的定位不是一个重后端平台,而是一个把密钥、工具参数、素材、任务状态都尽量收在本地侧的创作客户端。

项目亮点

  • 纯客户端架构 所有配置都在本地维护,适合个人工作流、内部小范围使用或快速原型验证,不依赖自建中台即可开始使用。

  • 一套界面串起图片和视频创作 当前应用同时覆盖图片生成与视频生成,两类任务共用素材库、任务队列、结果回看与导入逻辑。

  • 面向 Seedance2 的多模式视频工作流 已支持文本生视频、首帧图生视频、首尾帧图生视频、参考素材生成等模式。

  • 面向图片生成的独立任务流 图片任务与视频任务拆分管理,支持结果列表、状态追踪、失败重试、入库回流等能力。

  • 素材库不是“附件列表”,而是可复用工作区 支持图片、视频、音频素材管理,支持分类、重命名、筛选、同任务结果折叠、紧凑/舒适视图、预览、复制引用链接、删除、保存、回流创作等操作。

  • 视频截帧直接接进创作流程 可以从本地视频、云端素材或历史任务结果里截帧,并把截出的画面重新作为素材或创作输入继续使用。

  • 本地视频剪辑接入素材工作流 可以从本地文件、素材库或任务结果选择视频片段,裁剪起止时间、调整顺序、设置转场、BGM、输出比例、分辨率、帧率和码率,并将合成结果保存到本地或重新导入素材库继续复用。

  • 大素材列表做了性能优化 图片缩略图使用缓存加载,视频素材会抽取首帧并做本地缓存;下载进度也做了节流,降低素材库滚动和批量下载时的卡顿。

  • 提交前可预览工具和参数 在真正发起任务前,可以先查看要提交给上游工具的参数结构,减少误触发和误扣费。

  • 私有素材链接按素材来源处理 七牛私有空间支持预览和下载签名,素材会记录上传时的存储域名,切换空间后旧素材仍会优先使用自己的原始域名。

  • 本地保存最近状态 设置、素材、任务、分类、剪辑草稿和最近使用记录会保存在本地,方便持续迭代使用。

当前使用的第三方服务

1. AgentEarth

项目当前通过 AgentEarth 做工具发现与执行入口,用于衔接上游图片生成与视频生成能力。

这里需要特别说明:

  • 这里提到 AgentEarth,只是说明当前项目“已经接入并验证可用”
  • 这不是推荐、背书或投资建议
  • 你在购买、开通、充值、调用任何第三方服务前,请自行甄别其稳定性、合规性、计费规则和风险

2. Seedance2

当前视频生成工作流基于 Seedance2 系列能力,已经在应用中接入了多种常见模式:

  • 文本生视频
  • 首帧图生视频
  • 首尾帧图生视频
  • 参考图 / 参考视频 / 参考音频生成

同样说明一下:

  • 当前使用 Seedance2,是因为它适合现阶段这条工作流
  • 这不是对任何上游模型或服务商的推荐
  • 具体服务质量、价格、可用性与合规性,请自行评估

3. 对象存储

当前项目已对接两种素材存储方案:

选择它们的原因主要是:

  • 接起来相对直接
  • 适合素材上传、回显、引用和下载
  • 方便当前这类客户端工作流快速落地

但这仍然不是推荐结论,只是“目前用起来比较方便”的现实选择。购买、开通或长期使用前,请务必自行甄别:

  • 服务可用性
  • 价格与计费方式
  • 流量 / 存储 / 出网成本
  • 鉴权方式
  • 数据安全与合规要求

如果你手里有更稳定、成本更合适、接入体验更好的 Seedance 渠道,或者更顺手的云存储 / 对象存储方案,也欢迎推荐给我后续对接。项目当前并不绑定特定供应商,后面会继续根据实际可用性、接入成本和使用体验做迭代。

安全说明

这个项目是纯客户端应用,当前 API Key、存储密钥和相关配置主要保存在本地。

这意味着它更适合:

  • 个人自用
  • 内部小规模试验
  • 原型验证
  • 对部署成本敏感、先跑通工作流的场景

但也意味着你必须注意以下风险:

  • 不要把生产级高权限密钥直接发给不可信用户使用
  • 不要把 Access Key / Secret Key / API Key 明文传播到公共群、公开仓库或截图里
  • 如果是多人分发安装包,请默认视为“客户端配置有被提取风险”
  • 尽量使用权限更小、可轮换、可撤销的密钥
  • 对存储桶、回源域名、私有读写策略、跨域和签名过期时间做额外约束

如果后续准备面向更广范围分发,建议进一步演进为:

  • 将高敏感凭据下沉到服务端
  • 由服务端签发短时上传 / 下载凭证
  • 对调用频率、用户身份和资源访问做更细的控制

当前功能概览

创作

  • 文本生视频
  • 首帧图生视频
  • 首尾帧图生视频
  • 参考素材生成视频
  • 图片生成
  • Prompt 中插入素材占位符
  • 提交前查看工具与请求参数预览

视频剪辑

  • 本地视频 / 素材库视频 / 任务结果视频加入剪辑
  • 片段裁剪、排序、删除
  • 淡入淡出、交叉溶解、黑场、白闪等转场设置
  • 原声保留、静音、混合 BGM、仅 BGM 等音频模式
  • 本地音频 / 素材库音频作为 BGM
  • 输出分辨率、比例、帧率、码率和文件名设置
  • 合成导出、保存到相册 / 文件、导入素材库

素材库

  • 图片 / 视频 / 音频上传
  • 七牛云 / Bitiful S4 上传
  • 素材分类管理、分类筛选与搜索
  • 舒适 / 紧凑两种素材视图
  • 同一图片任务生成的多张素材折叠成任务组
  • 素材重命名
  • 预览图片、视频和音频
  • 图片缩略图缓存、视频首帧抽取与缓存
  • 视频素材下载到本地后截帧
  • 删除本地素材记录
  • 可选同时删除云端对象
  • 七牛私有空间预览 / 下载签名
  • 历史素材自动回填任务归属和原始存储域名

任务

  • 图片任务与视频任务分开管理
  • 查看任务状态、日志、异常与结果
  • 手动刷新
  • 失败重试
  • 暂停 / 恢复轮询
  • 下载结果并显示下载进度
  • 结果导回素材库
  • 图片任务多结果跟踪、失败项重试和入库回流

设置

  • AgentEarth 接口地址与 API Key
  • 七牛云配置
  • Bitiful S4 配置
  • 当前存储提供商切换
  • 七牛 Bucket / 域名拉取
  • 测试 AgentEarth、七牛云和 Bitiful S4 连接
  • 自动轮询、自动下载和图片自动回退开关
  • 本地数据导出

适用场景

这个项目比较适合:

  • 想快速搭一个本地可运行的 AI 创作客户端
  • 需要把图片、视频、素材、任务统一管理
  • 希望先验证工作流,而不是先建设完整后端
  • 希望在自己的设备上直接配置和测试多家上游能力

如果你的目标是:

  • 面向大量终端用户发布
  • 做严格的多用户权限隔离
  • 在服务端统一托管密钥与审计
  • 做正式生产级结算与风控

那就建议在这个客户端基础上继续补后端能力,而不是长期停留在“纯客户端持有密钥”的模式。

开发环境

项目基于 Flutter。

已知当前版本:

  • App version: 1.0.6+2007
  • Android application id: com.jbrains.mova
  • iOS bundle id: com.jbrains.mova

本地运行

如果你的环境里没有把 Flutter 放进 PATH,请先使用 Flutter 可执行文件的绝对路径。

flutter pub get
flutter run

本机最近一次确认可用的 Flutter 路径是:

/Users/jbrains/dev/flutter-sdk/bin/flutter

如果 flutter 不在 PATH,可以改用:

/Users/jbrains/dev/flutter-sdk/bin/flutter pub get
/Users/jbrains/dev/flutter-sdk/bin/flutter run

构建

Android release APK:

flutter build apk --release --split-per-abi

只打 ARM64 v8a:

flutter build apk --release --split-per-abi --target-platform android-arm64

iOS 无签名构建:

flutter build ios --no-codesign

Android 签名说明

当前项目支持两种 Android release 构建方式:

  • 未配置正式签名时: 会回退为 debug 签名,适合本地临时打包测试

  • 配置正式签名后: 本地构建和 GitHub Actions 都可以使用同一份 release keystore,保证安装包签名一致

本地配置正式签名

  1. 把你的 keystore 文件放到 android/ 目录,例如:
android/release.keystore
  1. 复制示例文件:
cp android/key.properties.example android/key.properties
  1. 按实际内容修改 android/key.properties:
storePassword=你的 keystore 密码
keyPassword=你的 key 密码
keyAlias=你的 alias
storeFile=release.keystore

说明:

  • android/key.properties
  • android/*.jks
  • android/*.keystore

Android release 注意事项

  • 这个项目的剪辑页视频预览依赖 video_player_android 的原生通道
  • 之前曾出现过一个只在 release 包里复现的问题:R8 压缩后,dev.flutter.pigeon.video_player... 通道注册失败,debug 正常但 release 无法播放
  • 目前 android/app/build.gradle.kts 的 release 已显式关闭 isMinifyEnabled 和 isShrinkResources
  • 如果以后要重新打开 R8,必须先补齐 keep 规则并在真机 release 包上验证剪辑页视频播放
  • 只看 flutter run 的结果不够,release 包要单独装到 Android 真机确认一次

这些文件默认已加入 .gitignore,不要提交到仓库。

GitHub Actions 配置正式签名

如果希望 GitHub 构建出的 Android 包和本地签名一致,请在 GitHub Secrets 中配置同一份 keystore:

  • ANDROID_KEYSTORE_BASE64 你的 .jks 或 .keystore 文件做 base64 后的内容

  • ANDROID_KEYSTORE_PASSWORD keystore 密码

  • ANDROID_KEY_ALIAS key alias

  • ANDROID_KEY_PASSWORD key 密码

这样 GitHub Actions 会在构建时自动生成 android/key.properties 和 android/release.keystore,并使用 release 签名。

如果没有配置这些 Secrets,GitHub 仍然可以构建,但会回退到 debug 签名,因此和你本地正式签名包不会一致。

免责声明

本项目 README 中提到的 AgentEarth.ai、Seedance2、七牛云、缤纷云(Bitiful S4)仅用于说明“当前项目已接入的服务”与“当前验证过可工作的组合”。

这不构成任何推荐、背书、采购建议或安全承诺。请你在接入、购买、充值或生产使用任何第三方服务前,自行甄别并承担相应决策责任。

同时,也欢迎提供更好的 Seedance 接入渠道或云存储服务建议,后续可以继续评估并补充对接。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages