当前位置: 首页 > news >正文

【原创】基于gemini-2.5-flash-preview-05-20多模态模型实现短视频的自动化二创

 画面和解说保持一致,这个模型就是NB

[16:57:37] [*] 正在从视频中提取帧和时长 (频率: 1.0 帧/秒)...
[16:57:55] [+] 提取完成。视频时长: 83.40秒, 提取了 84 帧。
[16:57:55] [*] 使用AI供应商: gemini
[16:57:55] [*] 正在进行视觉分析...
[16:57:55]   L-> 正在向Vision API (gemini-2.5-flash-preview-05-20) 发送 84 帧图像...
[16:57:55]   L-> 请求URL: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-05-20:generateContent?key=...
[16:58:28]   L<-收到API原始响应 (片段): {'candidates': [{'content': {'parts': [{'text': '{\n  "timeline": [\n    {\n      "time": 0,\n      "event": "视频开场,展示零食盒并提出盲测挑战。"\n    },\n    {\n      "time": 8,\n      "event": "首位挑战者品尝零食后,表情显示其味道偏辣。"\n    },\n    {\n      "time": 17,\n      "event": "男性挑战者品尝后夸张表示手中零食有“1000件小东西”,引人发笑。"\n    },\n    {\n      "time": 50,\n      "event": "女性挑战者闻到下一款零食,直呼“闻起来很辣”的强烈反应。"\n    },\n    {\n      "time": 58,\n      "event": "成功猜中“印度”为零食原产国,引发全场欢呼。"\n    }\n  ]\n}'}], 'role': 'model'}, 'finishReason': 'S...
[16:58:28]   L<-从响应中提取的文本内容:
---
{"timeline": [{"time": 0,"event": "视频开场,展示零食盒并提出盲测挑战。"},{"time": 8,"event": "首位挑战者品尝零食后,表情显示其味道偏辣。"},{"time": 17,"event": "男性挑战者品尝后夸张表示手中零食有“1000件小东西”,引人发笑。"},{"time": 50,"event": "女性挑战者闻到下一款零食,直呼“闻起来很辣”的强烈反应。"},{"time": 58,"event": "成功猜中“印度”为零食原产国,引发全场欢呼。"}]
}
---
[16:58:28] [+] 视觉分析完成。
[16:58:28] [*] 正在生成解说文案...
[16:58:28]   L-> 正在向Script API (gemini-2.5-flash-preview-05-20) 发送指令...
[16:58:28]   L-> 请求URL: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-05-20:generateContent?key=...
[16:58:41]   L<-收到API原始响应 (片段): {'candidates': [{'content': {'parts': [{'text': '{\n  "script": [\n    {\n      "time": 0.5,\n      "text": "各位观众,欢迎来到今天的盲测挑战赛!一场味蕾的极限考验即将展开!"\n    },\n    {\n      "time": 8.5,\n      "text": "首位挑战者,眉头紧锁!看来这股辣味,直冲天灵盖啊!"\n    },\n    {\n      "time": 17.5,\n      "text": "哇!这位选手表情夸张,直呼有“1000件小东西”!这零食到底藏了什么玄机?!"\n    },\n    {\n      "time": 50.5,\n      "text": "还没入口!她就直呼“闻起来很辣”!这嗅觉反应也太强烈了吧!"\n    },\n    {\n      "time": 58.5,\n      "text": "成功猜中!“印度”!全场沸腾!恭喜这位挑战者,完美通关!"\n    },\n    {\n      ...
[16:58:41]   L<-从响应中提取的文本内容:
---
{"script": [{"time": 0.5,"text": "各位观众,欢迎来到今天的盲测挑战赛!一场味蕾的极限考验即将展开!"},{"time": 8.5,"text": "首位挑战者,眉头紧锁!看来这股辣味,直冲天灵盖啊!"},{"time": 17.5,"text": "哇!这位选手表情夸张,直呼有“1000件小东西”!这零食到底藏了什么玄机?!"},{"time": 50.5,"text": "还没入口!她就直呼“闻起来很辣”!这嗅觉反应也太强烈了吧!"},{"time": 58.5,"text": "成功猜中!“印度”!全场沸腾!恭喜这位挑战者,完美通关!"},{"time": 80.0,"text": "今天的精彩挑战到这里就告一段落!喜欢我们的节目,记得点赞、分享、关注!下期再见!"}]
}
---
[16:58:41] [+] 文案生成完成。
[16:58:41] --- 生成的脚本 ---
[16:58:41] [0.5s] 各位观众,欢迎来到今天的盲测挑战赛!一场味蕾的极限考验即将展开!
[16:58:41] [8.5s] 首位挑战者,眉头紧锁!看来这股辣味,直冲天灵盖啊!
[16:58:41] [17.5s] 哇!这位选手表情夸张,直呼有“1000件小东西”!这零食到底藏了什么玄机?!
[16:58:41] [50.5s] 还没入口!她就直呼“闻起来很辣”!这嗅觉反应也太强烈了吧!
[16:58:41] [58.5s] 成功猜中!“印度”!全场沸腾!恭喜这位挑战者,完美通关!
[16:58:41] [80.0s] 今天的精彩挑战到这里就告一段落!喜欢我们的节目,记得点赞、分享、关注!下期再见!
[16:58:41] --------------------
[16:58:41] [*] 正在为每一句解说合成语音...
[16:58:41]   - 合成第 1/6 句...
[16:58:41]   L-> 正在向本地TTS服务 (http://127.0.0.1:5002/api/tts) 发送文本: '各位观众,欢迎来到今天的盲测挑战赛!一场味蕾的极限考验即将展开!'
[16:58:44]   L<- 收到来自本地TTS的音频数据 (大小: 396008 bytes)
[16:58:44]   - 合成第 2/6 句...
[16:58:44]   L-> 正在向本地TTS服务 (http://127.0.0.1:5002/api/tts) 发送文本: '首位挑战者,眉头紧锁!看来这股辣味,直冲天灵盖啊!'
[16:58:47]   L<- 收到来自本地TTS的音频数据 (大小: 341392 bytes)
[16:58:47]   - 合成第 3/6 句...
[16:58:47]   L-> 正在向本地TTS服务 (http://127.0.0.1:5002/api/tts) 发送文本: '哇!这位选手表情夸张,直呼有“1000件小东西”!这零食到底藏了什么玄机?!'
[16:58:50]   L<- 收到来自本地TTS的音频数据 (大小: 379624 bytes)
[16:58:50]   - 合成第 4/6 句...
[16:58:50]   L-> 正在向本地TTS服务 (http://127.0.0.1:5002/api/tts) 发送文本: '还没入口!她就直呼“闻起来很辣”!这嗅觉反应也太强烈了吧!'
[16:58:53]   L<- 收到来自本地TTS的音频数据 (大小: 333200 bytes)
[16:58:53]   - 合成第 5/6 句...
[16:58:53]   L-> 正在向本地TTS服务 (http://127.0.0.1:5002/api/tts) 发送文本: '成功猜中!“印度”!全场沸腾!恭喜这位挑战者,完美通关!'
[16:58:56]   L<- 收到来自本地TTS的音频数据 (大小: 333200 bytes)
[16:58:56]   - 合成第 6/6 句...
[16:58:56]   L-> 正在向本地TTS服务 (http://127.0.0.1:5002/api/tts) 发送文本: '今天的精彩挑战到这里就告一段落!喜欢我们的节目,记得点赞、分享、关注!下期再见!'
[16:59:00]   L<- 收到来自本地TTS的音频数据 (大小: 497040 bytes)
[16:59:00] [+] 语音合成完成。
[16:59:00] [*] 正在使用ffmpeg合并视频和所有音轨...
[17:00:01] 
[+] 成功!二创视频已保存为 'H:/013-AI/instagram搬运/downloadfile/thesmilyfam\2025-08-02_Blindfolded taste testing this month’s @Universal _7401325663703092511_translated_recreated.mp4'
[17:00:01] [*] 正在清理临时音频文件...
[17:00:01] [+] 清理完成。

成本预算,我使用的是本地tts

1. 视觉分析 (Vision)

  • 抽帧频率: 根据您的 config.ini 设置,是 0.5 帧/秒。

  • 消耗计算: 120秒 × 0.5帧/秒 = 60帧

  • API消耗: 这60张图片会在1次API请求中全部发送给Gemini进行分析。所以,这里会消耗您每日1000次免费额度中的 1次

2. 文案生成 (Script)

  • 消耗计算: 程序会根据视觉分析的结果,再向AI发起1次请求,让它生成解说脚本。

  • API消耗: 这里会再消耗您每日1000次免费额度中的 1次

3. 语音合成 (TTS)

  • AI判断: 根据我们的智能规则,一个120秒的视频,AI大概会生成 120 / 25 = 4.8,也就是4-6句左右的解说词。

  • API消耗: 因为您在 config.ini 中已经将 tts_model 设置为了 local,所以这一步的所有请求都会发送到您自己的本地TTS服务

  • 云端API消耗: 0次


总结

处理一个2分钟的视频,总共会消耗您云端API的:

  • Gemini API (视觉+文案): 1 + 1 = 2次请求 (在您每日1000次的免费额度内)。

  • TTS API: 0次请求 (因为使用的是您自己的本地服务)。

 

http://www.xdnf.cn/news/1244881.html

相关文章:

  • 将普通用户添加到 Docker 用户组
  • promise类方法
  • 阿里云百炼平台创建智能体-上传文档
  • Java学习第一百零六部分——Lucene
  • 2.4 组件通信
  • deepseek、GPT与claude在MATLAB编程上的准确性对比——以卡尔曼滤波调试为例
  • 大模型之后,机器人正在等待它的“GPT-1 时刻”
  • 本机部署K8S集群
  • 力扣:2246. 相邻字符不同的最长路径
  • ESP-idf框架下的HTTP服务器\HTML 485温湿度采集并长传
  • 14.Home-新鲜好物和人气推荐实现
  • 编程算法:技术创新与业务增长的核心引擎
  • Linux操作系统从入门到实战(十三)版本控制器Git基础概念讲解
  • 深入浅出 RabbitMQ-路由模式详解
  • 自由学习记录(77)
  • 24. 前端-js框架-Vue
  • vite面试题及详细答案120题(01-30)
  • 【工程化】tree-shaking 的作用以及配置
  • 研发团队看板协作中的自动化实践:集成CI/CD与任务流转
  • 【Linux系统】进程间通信:基于匿名管道实现进程池
  • linux_https,udp,tcp协议(更新中)
  • C语言基础_随机数、数组、函数、指针
  • 【机器学习深度学习】模型压缩简介
  • C++ - 基于多设计模式下的同步异步日志系统(11w字)
  • NLP——BERT模型全面解析:从基础架构到优化演进
  • AWS EKS节点扩容时NLB与Ingress的故障处理与优化方案
  • LSTM + 自注意力机制:精准预测天气变化的创新方案
  • 深入剖析 RAG 检索系统中的召回方式:BM25、向量召回、混合策略全解析
  • JS-第二十一天-尺寸位置
  • Android UI 组件系列(十一):RecyclerView 多类型布局与数据刷新实战