diff --git a/README.md b/README.md
index 667e38e..b89bdca 100644
--- a/README.md
+++ b/README.md
@@ -25,10 +25,6 @@ NarratoAI 是一个自动化影视解说工具,基于LLM实现文案撰写、

-
视频审查界面
-
-
-
## 许可证
@@ -45,18 +41,29 @@ NarratoAI 是一个自动化影视解说工具,基于LLM实现文案撰写、
- 2024.11.10 发布新版本 v0.3.5;优化视频剪辑流程,
## 重磅福利 🎉
-即日起全面支持国产模型!注册即享2000万免费Token(价值14元平台配额),剪辑10分钟视频仅需0.1元!
+> 1️⃣
+> **开发者专属福利:一站式AI平台,注册即送体验金!**
+>
+> 还在为接入各种AI模型烦恼吗?向您推荐 302.ai,一个企业级的AI资源中心。一次接入,即可调用上百种AI模型,涵盖语言、图像、音视频等,按量付费,极大降低开发成本。
+>
+> 通过下方我的专属链接注册,**立获1美元免费体验金**,助您轻松开启AI开发之旅。
+>
+> **立即注册领取:** [https://share.302.ai/I9P6mP](https://share.302.ai/I9P6mP)
-🔥 快速领福利:
-1️⃣ 点击链接注册:https://cloud.siliconflow.cn/i/pyOKqFCV
-2️⃣ 使用手机号登录,**务必填写邀请码:pyOKqFCV**
-3️⃣ 领取14元配额,极速体验高性价比AI剪辑
-
-💡 小成本大创作:
-硅基流动API Key一键接入,智能剪辑效率翻倍!
-(注:邀请码为福利领取唯一凭证,注册后自动到账)
-
-立即行动,用「pyOKqFCV」解锁你的AI生产力!
+---
+> 2️⃣
+> 即日起全面支持硅基流动!注册即享2000万免费Token(价值14元平台配额),剪辑10分钟视频仅需0.1元!
+>
+> 🔥 快速领福利:
+> 1️⃣ 点击链接注册:https://cloud.siliconflow.cn/i/pyOKqFCV
+> 2️⃣ 使用手机号登录,**务必填写邀请码:pyOKqFCV**
+> 3️⃣ 领取14元配额,极速体验高性价比AI剪辑
+>
+> 💡 小成本大创作:
+> 硅基流动API Key一键接入,智能剪辑效率翻倍!
+> (注:邀请码为福利领取唯一凭证,注册后自动到账)
+>
+> 立即行动,用「pyOKqFCV」解锁你的AI生产力!
## ⚠️谨防被骗 📢
@@ -90,6 +97,44 @@ _**1. NarratoAI 是一款完全免费的软件,近期在社交媒体(抖音,B
- [ ] 支持更多 TTS 引擎
- [ ] ...
+## 快速启动 🚀
+
+### 方式一:macos Docker 部署(macos 推荐)
+```bash
+# 1. 克隆项目
+git clone https://github.com/linyqh/NarratoAI.git
+cd NarratoAI
+
+# 2. 一键部署
+docker compose up -d
+
+# 3. 访问应用
+# 浏览器打开 http://localhost:8501
+```
+### 方式二:整合包(Windows 推荐)
+> *关注微信公众号 **NarratoAI 助手** 右下角菜单栏获取下载链接*
+
+### 方式三:本地运行
+```bash
+# 1. 克隆项目
+git clone https://github.com/linyqh/NarratoAI.git
+cd NarratoAI
+
+# 2. 安装依赖
+pip install -r requirements.txt
+
+# 3. 复制配置文件
+cp config.example.toml config.toml
+
+# 4. 编辑 config.toml,配置你的 API 密钥
+
+# 5. 启动应用
+streamlit run webui.py --server.maxUploadSize=2048
+
+# 6. 访问应用
+# 浏览器打开 http://localhost:8501
+```
+
## 配置要求 📦
- 建议最低 CPU 4核或以上,内存 8G 或以上,显卡非必须
diff --git a/config.example.toml b/config.example.toml
index feaa4ee..ba185fa 100644
--- a/config.example.toml
+++ b/config.example.toml
@@ -1,5 +1,5 @@
[app]
- project_version="0.7.1"
+ project_version="0.7.2"
# 模型验证模式配置
# true: 严格模式,只允许使用预定义支持列表中的模型(默认)
diff --git a/project_version b/project_version
index 7deb86f..d5cc44d 100644
--- a/project_version
+++ b/project_version
@@ -1 +1 @@
-0.7.1
\ No newline at end of file
+0.7.2
\ No newline at end of file
diff --git a/webui.txt b/webui.txt
deleted file mode 100644
index b26a723..0000000
--- a/webui.txt
+++ /dev/null
@@ -1,376 +0,0 @@
-@echo off
-set CURRENT_DIR=%CD%
-echo ***** Current directory: %CURRENT_DIR% *****
-set PYTHONPATH=%CURRENT_DIR%
-
-set "vpn_proxy_url=%http://127.0.0.1:7890%"
-
-:: 使用VPN代理进行一些操作,例如通过代理下载文件
-set "http_proxy=%vpn_proxy_url%"
-set "https_proxy=%vpn_proxy_url%"
-
-@echo off
-setlocal enabledelayedexpansion
-
-rem 创建链接和路径的数组
-set "urls_paths[0]=https://zenodo.org/records/13293144/files/MicrosoftYaHeiBold.ttc|.\resource\fonts"
-set "urls_paths[1]=https://zenodo.org/records/13293144/files/MicrosoftYaHeiNormal.ttc|.\resource\fonts"
-set "urls_paths[2]=https://zenodo.org/records/13293144/files/STHeitiLight.ttc|.\resource\fonts"
-set "urls_paths[3]=https://zenodo.org/records/13293144/files/STHeitiMedium.ttc|.\resource\fonts"
-set "urls_paths[4]=https://zenodo.org/records/13293144/files/UTM%20Kabel%20KT.ttf|.\resource\fonts"
-set "urls_paths[5]=https://zenodo.org/records/14167125/files/test.mp4|.\resource\videos"
-set "urls_paths[6]=https://zenodo.org/records/13293150/files/output000.mp3|.\resource\songs"
-set "urls_paths[7]=https://zenodo.org/records/13293150/files/output001.mp3|.\resource\songs"
-set "urls_paths[8]=https://zenodo.org/records/13293150/files/output002.mp3|.\resource\songs"
-set "urls_paths[9]=https://zenodo.org/records/13293150/files/output003.mp3|.\resource\songs"
-set "urls_paths[10]=https://zenodo.org/records/13293150/files/output004.mp3|.\resource\songs"
-set "urls_paths[11]=https://zenodo.org/records/13293150/files/output005.mp3|.\resource\songs"
-set "urls_paths[12]=https://zenodo.org/records/13293150/files/output006.mp3|.\resource\songs"
-set "urls_paths[13]=https://zenodo.org/records/13293150/files/output007.mp3|.\resource\songs"
-set "urls_paths[14]=https://zenodo.org/records/13293150/files/output008.mp3|.\resource\songs"
-set "urls_paths[15]=https://zenodo.org/records/13293150/files/output009.mp3|.\resource\songs"
-set "urls_paths[16]=https://zenodo.org/records/13293150/files/output010.mp3|.\resource\songs"
-
-rem 循环下载所有文件并保存到指定路径
-for /L %%i in (0,1,16) do (
- for /f "tokens=1,2 delims=|" %%a in ("!urls_paths[%%i]!") do (
- if not exist "%%b" mkdir "%%b"
- echo 正在下载 %%a 到 %%b
- curl -o "%%b\%%~nxa" %%a
- )
-)
-
-echo 所有文件已成功下载到指定目录
-endlocal
-pause
-
-
-rem set HF_ENDPOINT=https://hf-mirror.com
-streamlit run webui.py --browser.serverAddress="127.0.0.1" --server.enableCORS=True --server.maxUploadSize=2048 --browser.gatherUsageStats=False
-
-streamlit run webui.py --server.maxUploadSize=2048
-
-请求0:
-curl -X 'POST' \
- 'http://127.0.0.1:8080/api/v2/youtube/download' \
- -H 'accept: application/json' \
- -H 'Content-Type: application/json' \
- -d '{
- "url": "https://www.youtube.com/watch?v=Kenm35gdqtk",
- "resolution": "1080p",
- "output_format": "mp4",
- "rename": "2024-11-19"
-}'
-{
- "url": "https://www.youtube.com/watch?v=Kenm35gdqtk",
- "resolution": "1080p",
- "output_format": "mp4",
- "rename": "2024-11-19"
-}
-
-请求1:
-curl -X 'POST' \
- 'http://127.0.0.1:8080/api/v2/scripts/generate' \
- -H 'accept: application/json' \
- -H 'Content-Type: application/json' \
- -d '{
- "video_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "skip_seconds": 0,
- "threshold": 30,
- "vision_batch_size": 10,
- "vision_llm_provider": "gemini"
-}'
-{
- "video_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "skip_seconds": 0,
- "threshold": 30,
- "vision_batch_size": 10,
- "vision_llm_provider": "gemini"
-}
-
-请求2:
-curl -X 'POST' \
- 'http://127.0.0.1:8080/api/v2/scripts/crop' \
- -H 'accept: application/json' \
- -H 'Content-Type: application/json' \
- -d '{
- "video_origin_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "video_script": [
- {
- "timestamp": "00:10-01:01",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频展现一名留着胡须的男子在森林里挖掘。\n\n画面首先展现男子从后方视角,背着军绿色背包,穿着卡其色长裤和深色T恤,走向一个泥土斜坡。背包上似乎有一个镐头。\n\n下一个镜头特写展现了该背包,一个镐头从背包里伸出来,包里还有一些其他工具。\n\n然后,视频显示该男子用镐头挖掘泥土斜坡。\n\n接下来是一些近景镜头,展现男子的靴子在泥土中行走,以及男子用手清理泥土。\n\n其他镜头从不同角度展现该男子在挖掘,包括从侧面和上方。\n\n可以看到他用工具挖掘,清理泥土,并检查挖出的土壤。\n\n最后,一个镜头展现了挖出的土壤的质地和颜色。",
- "narration": "好的,接下来就是我们这位“胡须大侠”的精彩冒险了!只见他背着军绿色的背包,迈着比我上班还不情愿的步伐走向那泥土斜坡。哎呀,这个背包可真是个宝贝,里面藏着一把镐头和一些工具,简直像是个随身携带的“建筑工具箱”! \n\n看他挥舞着镐头,挖掘泥土的姿势,仿佛在进行一场“挖土大赛”,结果却比我做饭还要糟糕。泥土飞扬中,他的靴子也成了“泥巴艺术家”。最后,那堆色泽各异的土壤就像他心情的写照——五彩斑斓又略显混乱!真是一次让人捧腹的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:00-00:51"
- },
- {
- "timestamp": "01:07-01:53",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频以一系列森林环境的镜头开头。\n\n第一个镜头是一个特写镜头,镜头中显示的是一些带有水滴的绿色叶子。\n\n第二个镜头显示一个留着胡须的男子在森林中挖掘一个洞。 他跪在地上,用工具挖土。\n\n第三个镜头是一个中等镜头,显示同一个人坐在他挖好的洞边休息。\n\n第四个镜头显示该洞的内部结构,该洞在树根和地面之间。\n\n第五个镜头显示该男子用斧头砍树枝。\n\n第六个镜头显示一堆树枝横跨一个泥泞的小水坑。\n\n第七个镜头显示更多茂盛的树叶和树枝在阳光下。\n\n第八个镜头显示更多茂盛的树叶和树枝。\n\n\n",
- "narration": "接下来,我们的“挖土大师”又开始了他的森林探险。看这镜头,水滴在叶子上闪烁,仿佛在说:“快来,快来,这里有故事!”他一边挖洞,一边像个新手厨师试图切洋葱——每一下都小心翼翼,生怕自己不小心挖出个“历史遗址”。坐下休息的时候,脸上的表情就像发现新大陆一样!然后,他拿起斧头砍树枝,简直是现代版的“神雕侠侣”,只不过对象是树木。最后,那堆树枝架过泥泞的小水坑,仿佛在说:“我就是不怕湿脚的勇士!”这就是我们的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:51-01:37"
- }
- ]
-}'
-{
- "video_origin_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "video_script": [
- {
- "timestamp": "00:10-01:01",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频展现一名留着胡须的男子在森林里挖掘。\n\n画面首先展现男子从后方视角,背着军绿色背包,穿着卡其色长裤和深色T恤,走向一个泥土斜坡。背包上似乎有一个镐头。\n\n下一个镜头特写展现了该背包,一个镐头从背包里伸出来,包里还有一些其他工具。\n\n然后,视频显示该男子用镐头挖掘泥土斜坡。\n\n接下来是一些近景镜头,展现男子的靴子在泥土中行走,以及男子用手清理泥土。\n\n其他镜头从不同角度展现该男子在挖掘,包括从侧面和上方。\n\n可以看到他用工具挖掘,清理泥土,并检查挖出的土壤。\n\n最后,一个镜头展现了挖出的土壤的质地和颜色。",
- "narration": "好的,接下来就是我们这位“胡须大侠”的精彩冒险了!只见他背着军绿色的背包,迈着比我上班还不情愿的步伐走向那泥土斜坡。哎呀,这个背包可真是个宝贝,里面藏着一把镐头和一些工具,简直像是个随身携带的“建筑工具箱”! \n\n看他挥舞着镐头,挖掘泥土的姿势,仿佛在进行一场“挖土大赛”,结果却比我做饭还要糟糕。泥土飞扬中,他的靴子也成了“泥巴艺术家”。最后,那堆色泽各异的土壤就像他心情的写照——五彩斑斓又略显混乱!真是一次让人捧腹的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:00-00:51"
- },
- {
- "timestamp": "01:07-01:53",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频以一系列森林环境的镜头开头。\n\n第一个镜头是一个特写镜头,镜头中显示的是一些带有水滴的绿色叶子。\n\n第二个镜头显示一个留着胡须的男子在森林中挖掘一个洞。 他跪在地上,用工具挖土。\n\n第三个镜头是一个中等镜头,显示同一个人坐在他挖好的洞边休息。\n\n第四个镜头显示该洞的内部结构,该洞在树根和地面之间。\n\n第五个镜头显示该男子用斧头砍树枝。\n\n第六个镜头显示一堆树枝横跨一个泥泞的小水坑。\n\n第七个镜头显示更多茂盛的树叶和树枝在阳光下。\n\n第八个镜头显示更多茂盛的树叶和树枝。\n\n\n",
- "narration": "接下来,我们的“挖土大师”又开始了他的森林探险。看这镜头,水滴在叶子上闪烁,仿佛在说:“快来,快来,这里有故事!”他一边挖洞,一边像个新手厨师试图切洋葱——每一下都小心翼翼,生怕自己不小心挖出个“历史遗址”。坐下休息的时候,脸上的表情就像发现新大陆一样!然后,他拿起斧头砍树枝,简直是现代版的“神雕侠侣”,只不过对象是树木。最后,那堆树枝架过泥泞的小水坑,仿佛在说:“我就是不怕湿脚的勇士!”这就是我们的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:51-01:37"
- }
- ]
-}
-
-请求3:
-curl -X 'POST' \
- 'http://127.0.0.1:8080/api/v2/scripts/start-subclip?task_id=12121' \
- -H 'accept: application/json' \
- -H 'Content-Type: application/json' \
- -d '{
- "request": {
- "video_clip_json": [
- {
- "timestamp": "00:10-01:01",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频展现一名留着胡须的男子在森林里挖掘。\n\n画面首先展现男子从后方视角,背着军绿色背包,穿着卡其色长裤和深色T恤,走向一个泥土斜坡。背包上似乎有一个镐头。\n\n下一个镜头特写展现了该背包,一个镐头从背包里伸出来,包里还有一些其他工具。\n\n然后,视频显示该男子用镐头挖掘泥土斜坡。\n\n接下来是一些近景镜头,展现男子的靴子在泥土中行走,以及男子用手清理泥土。\n\n其他镜头从不同角度展现该男子在挖掘,包括从侧面和上方。\n\n可以看到他用工具挖掘,清理泥土,并检查挖出的土壤。\n\n最后,一个镜头展现了挖出的土壤的质地和颜色。",
- "narration": "好的,接下来就是我们这位“胡须大侠”的精彩冒险了!只见他背着军绿色的背包,迈着比我上班还不情愿的步伐走向那泥土斜坡。哎呀,这个背包可真是个宝贝,里面藏着一把镐头和一些工具,简直像是个随身携带的“建筑工具箱”! \n\n看他挥舞着镐头,挖掘泥土的姿势,仿佛在进行一场“挖土大赛”,结果却比我做饭还要糟糕。泥土飞扬中,他的靴子也成了“泥巴艺术家”。最后,那堆色泽各异的土壤就像他心情的写照——五彩斑斓又略显混乱!真是一次让人捧腹的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:00-00:51"
- },
- {
- "timestamp": "01:07-01:53",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频以一系列森林环境的镜头开头。\n\n第一个镜头是一个特写镜头,镜头中显示的是一些带有水滴的绿色叶子。\n\n第二个镜头显示一个留着胡须的男子在森林中挖掘一个洞。 他跪在地上,用工具挖土。\n\n第三个镜头是一个中等镜头,显示同一个人坐在他挖好的洞边休息。\n\n第四个镜头显示该洞的内部结构,该洞在树根和地面之间。\n\n第五个镜头显示该男子用斧头砍树枝。\n\n第六个镜头显示一堆树枝横跨一个泥泞的小水坑。\n\n第七个镜头显示更多茂盛的树叶和树枝在阳光下。\n\n第八个镜头显示更多茂盛的树叶和树枝。\n\n\n",
- "narration": "接下来,我们的“挖土大师”又开始了他的森林探险。看这镜头,水滴在叶子上闪烁,仿佛在说:“快来,快来,这里有故事!”他一边挖洞,一边像个新手厨师试图切洋葱——每一下都小心翼翼,生怕自己不小心挖出个“历史遗址”。坐下休息的时候,脸上的表情就像发现新大陆一样!然后,他拿起斧头砍树枝,简直是现代版的“神雕侠侣”,只不过对象是树木。最后,那堆树枝架过泥泞的小水坑,仿佛在说:“我就是不怕湿脚的勇士!”这就是我们的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:51-01:37"
- }
- ],
- "video_clip_json_path": "E:\\projects\\NarratoAI\\resource\\scripts\\2024-1118-230421.json",
- "video_origin_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "video_aspect": "16:9",
- "video_language": "zh-CN",
- "voice_name": "zh-CN-YunjianNeural",
- "voice_volume": 1,
- "voice_rate": 1.2,
- "voice_pitch": 1,
- "bgm_name": "random",
- "bgm_type": "random",
- "bgm_file": "",
- "bgm_volume": 0.3,
- "subtitle_enabled": true,
- "subtitle_position": "bottom",
- "font_name": "STHeitiMedium.ttc",
- "text_fore_color": "#FFFFFF",
- "text_background_color": "transparent",
- "font_size": 75,
- "stroke_color": "#000000",
- "stroke_width": 1.5,
- "custom_position": 70,
- "n_threads": 8
- },
- "subclip_videos": {
- "00:10-01:01": "E:\\projects\\NarratoAI\\storage\\cache_videos/vid-00_10-01_01.mp4",
- "01:07-01:53": "E:\\projects\\NarratoAI\\storage\\cache_videos/vid-01_07-01_53.mp4"
- }
-}'
-{
- "request": {
- "video_clip_json": [
- {
- "timestamp": "00:10-01:01",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频展现一名留着胡须的男子在森林里挖掘。\n\n画面首先展现男子从后方视角,背着军绿色背包,穿着卡其色长裤和深色T恤,走向一个泥土斜坡。背包上似乎有一个镐头。\n\n下一个镜头特写展现了该背包,一个镐头从背包里伸出来,包里还有一些其他工具。\n\n然后,视频显示该男子用镐头挖掘泥土斜坡。\n\n接下来是一些近景镜头,展现男子的靴子在泥土中行走,以及男子用手清理泥土。\n\n其他镜头从不同角度展现该男子在挖掘,包括从侧面和上方。\n\n可以看到他用工具挖掘,清理泥土,并检查挖出的土壤。\n\n最后,一个镜头展现了挖出的土壤的质地和颜色。",
- "narration": "好的,接下来就是我们这位“胡须大侠”的精彩冒险了!只见他背着军绿色的背包,迈着比我上班还不情愿的步伐走向那泥土斜坡。哎呀,这个背包可真是个宝贝,里面藏着一把镐头和一些工具,简直像是个随身携带的“建筑工具箱”! \n\n看他挥舞着镐头,挖掘泥土的姿势,仿佛在进行一场“挖土大赛”,结果却比我做饭还要糟糕。泥土飞扬中,他的靴子也成了“泥巴艺术家”。最后,那堆色泽各异的土壤就像他心情的写照——五彩斑斓又略显混乱!真是一次让人捧腹的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:00-00:51"
- },
- {
- "timestamp": "01:07-01:53",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频以一系列森林环境的镜头开头。\n\n第一个镜头是一个特写镜头,镜头中显示的是一些带有水滴的绿色叶子。\n\n第二个镜头显示一个留着胡须的男子在森林中挖掘一个洞。 他跪在地上,用工具挖土。\n\n第三个镜头是一个中等镜头,显示同一个人坐在他挖好的洞边休息。\n\n第四个镜头显示该洞的内部结构,该洞在树根和地面之间。\n\n第五个镜头显示该男子用斧头砍树枝。\n\n第六个镜头显示一堆树枝横跨一个泥泞的小水坑。\n\n第七个镜头显示更多茂盛的树叶和树枝在阳光下。\n\n第八个镜头显示更多茂盛的树叶和树枝。\n\n\n",
- "narration": "接下来,我们的“挖土大师”又开始了他的森林探险。看这镜头,水滴在叶子上闪烁,仿佛在说:“快来,快来,这里有故事!”他一边挖洞,一边像个新手厨师试图切洋葱——每一下都小心翼翼,生怕自己不小心挖出个“历史遗址”。坐下休息的时候,脸上的表情就像发现新大陆一样!然后,他拿起斧头砍树枝,简直是现代版的“神雕侠侣”,只不过对象是树木。最后,那堆树枝架过泥泞的小水坑,仿佛在说:“我就是不怕湿脚的勇士!”这就是我们的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:51-01:37"
- }
- ],
- "video_clip_json_path": "E:\\projects\\NarratoAI\\resource\\scripts\\2024-1118-230421.json",
- "video_origin_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "video_aspect": "16:9",
- "video_language": "zh-CN",
- "voice_name": "zh-CN-YunjianNeural",
- "voice_volume": 1,
- "voice_rate": 1.2,
- "voice_pitch": 1,
- "bgm_name": "random",
- "bgm_type": "random",
- "bgm_file": "",
- "bgm_volume": 0.3,
- "subtitle_enabled": true,
- "subtitle_position": "bottom",
- "font_name": "STHeitiMedium.ttc",
- "text_fore_color": "#FFFFFF",
- "text_background_color": "transparent",
- "font_size": 75,
- "stroke_color": "#000000",
- "stroke_width": 1.5,
- "custom_position": 70,
- "n_threads": 8
- },
- "subclip_videos": {
- "00:10-01:01": "E:\\projects\\NarratoAI\\storage\\cache_videos/vid-00_10-01_01.mp4",
- "01:07-01:53": "E:\\projects\\NarratoAI\\storage\\cache_videos/vid-01_07-01_53.mp4"
- }
-}
-
-
-请在最外层新建一个pipeline 工作流执行逻辑的代码;
-他会按照下面的顺序请求接口
-1.下载视频
-curl -X 'POST' \
- 'http://127.0.0.1:8080/api/v2/youtube/download' \
- -H 'accept: application/json' \
- -H 'Content-Type: application/json' \
- -d '{
- "url": "https://www.youtube.com/watch?v=Kenm35gdqtk",
- "resolution": "1080p",
- "output_format": "mp4",
- "rename": "2024-11-19"
-}'
-2.生成脚本
-curl -X 'POST' \
- 'http://127.0.0.1:8080/api/v2/scripts/generate' \
- -H 'accept: application/json' \
- -H 'Content-Type: application/json' \
- -d '{
- "video_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "skip_seconds": 0,
- "threshold": 30,
- "vision_batch_size": 10,
- "vision_llm_provider": "gemini"
-}'
-3. 剪辑视频
-curl -X 'POST' \
- 'http://127.0.0.1:8080/api/v2/scripts/crop' \
- -H 'accept: application/json' \
- -H 'Content-Type: application/json' \
- -d '{
- "video_origin_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "video_script": [
- {
- "timestamp": "00:10-01:01",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频展现一名留着胡须的男子在森林里挖掘。\n\n画面首先展现男子从后方视角,背着军绿色背包,穿着卡其色长裤和深色T恤,走向一个泥土斜坡。背包上似乎有一个镐头。\n\n下一个镜头特写展现了该背包,一个镐头从背包里伸出来,包里还有一些其他工具。\n\n然后,视频显示该男子用镐头挖掘泥土斜坡。\n\n接下来是一些近景镜头,展现男子的靴子在泥土中行走,以及男子用手清理泥土。\n\n其他镜头从不同角度展现该男子在挖掘,包括从侧面和上方。\n\n可以看到他用工具挖掘,清理泥土,并检查挖出的土壤。\n\n最后,一个镜头展现了挖出的土壤的质地和颜色。",
- "narration": "好的,接下来就是我们这位“胡须大侠”的精彩冒险了!只见他背着军绿色的背包,迈着比我上班还不情愿的步伐走向那泥土斜坡。哎呀,这个背包可真是个宝贝,里面藏着一把镐头和一些工具,简直像是个随身携带的“建筑工具箱”! \n\n看他挥舞着镐头,挖掘泥土的姿势,仿佛在进行一场“挖土大赛”,结果却比我做饭还要糟糕。泥土飞扬中,他的靴子也成了“泥巴艺术家”。最后,那堆色泽各异的土壤就像他心情的写照——五彩斑斓又略显混乱!真是一次让人捧腹的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:00-00:51"
- },
- {
- "timestamp": "01:07-01:53",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频以一系列森林环境的镜头开头。\n\n第一个镜头是一个特写镜头,镜头中显示的是一些带有水滴的绿色叶子。\n\n第二个镜头显示一个留着胡须的男子在森林中挖掘一个洞。 他跪在地上,用工具挖土。\n\n第三个镜头是一个中等镜头,显示同一个人坐在他挖好的洞边休息。\n\n第四个镜头显示该洞的内部结构,该洞在树根和地面之间。\n\n第五个镜头显示该男子用斧头砍树枝。\n\n第六个镜头显示一堆树枝横跨一个泥泞的小水坑。\n\n第七个镜头显示更多茂盛的树叶和树枝在阳光下。\n\n第八个镜头显示更多茂盛的树叶和树枝。\n\n\n",
- "narration": "接下来,我们的“挖土大师”又开始了他的森林探险。看这镜头,水滴在叶子上闪烁,仿佛在说:“快来,快来,这里有故事!”他一边挖洞,一边像个新手厨师试图切洋葱——每一下都小心翼翼,生怕自己不小心挖出个“历史遗址”。坐下休息的时候,脸上的表情就像发现新大陆一样!然后,他拿起斧头砍树枝,简直是现代版的“神雕侠侣”,只不过对象是树木。最后,那堆树枝架过泥泞的小水坑,仿佛在说:“我就是不怕湿脚的勇士!”这就是我们的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:51-01:37"
- }
- ]
-}'
-4.生成视频
-curl -X 'POST' \
- 'http://127.0.0.1:8080/api/v2/scripts/start-subclip?task_id=12121' \
- -H 'accept: application/json' \
- -H 'Content-Type: application/json' \
- -d '{
- "request": {
- "video_clip_json": [
- {
- "timestamp": "00:10-01:01",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频展现一名留着胡须的男子在森林里挖掘。\n\n画面首先展现男子从后方视角,背着军绿色背包,穿着卡其色长裤和深色T恤,走向一个泥土斜坡。背包上似乎有一个镐头。\n\n下一个镜头特写展现了该背包,一个镐头从背包里伸出来,包里还有一些其他工具。\n\n然后,视频显示该男子用镐头挖掘泥土斜坡。\n\n接下来是一些近景镜头,展现男子的靴子在泥土中行走,以及男子用手清理泥土。\n\n其他镜头从不同角度展现该男子在挖掘,包括从侧面和上方。\n\n可以看到他用工具挖掘,清理泥土,并检查挖出的土壤。\n\n最后,一个镜头展现了挖出的土壤的质地和颜色。",
- "narration": "好的,接下来就是我们这位“胡须大侠”的精彩冒险了!只见他背着军绿色的背包,迈着比我上班还不情愿的步伐走向那泥土斜坡。哎呀,这个背包可真是个宝贝,里面藏着一把镐头和一些工具,简直像是个随身携带的“建筑工具箱”! \n\n看他挥舞着镐头,挖掘泥土的姿势,仿佛在进行一场“挖土大赛”,结果却比我做饭还要糟糕。泥土飞扬中,他的靴子也成了“泥巴艺术家”。最后,那堆色泽各异的土壤就像他心情的写照——五彩斑斓又略显混乱!真是一次让人捧腹的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:00-00:51"
- },
- {
- "timestamp": "01:07-01:53",
- "picture": "好的,以下是视频画面的客观描述:\n\n视频以一系列森林环境的镜头开头。\n\n第一个镜头是一个特写镜头,镜头中显示的是一些带有水滴的绿色叶子。\n\n第二个镜头显示一个留着胡须的男子在森林中挖掘一个洞。 他跪在地上,用工具挖土。\n\n第三个镜头是一个中等镜头,显示同一个人坐在他挖好的洞边休息。\n\n第四个镜头显示该洞的内部结构,该洞在树根和地面之间。\n\n第五个镜头显示该男子用斧头砍树枝。\n\n第六个镜头显示一堆树枝横跨一个泥泞的小水坑。\n\n第七个镜头显示更多茂盛的树叶和树枝在阳光下。\n\n第八个镜头显示更多茂盛的树叶和树枝。\n\n\n",
- "narration": "接下来,我们的“挖土大师”又开始了他的森林探险。看这镜头,水滴在叶子上闪烁,仿佛在说:“快来,快来,这里有故事!”他一边挖洞,一边像个新手厨师试图切洋葱——每一下都小心翼翼,生怕自己不小心挖出个“历史遗址”。坐下休息的时候,脸上的表情就像发现新大陆一样!然后,他拿起斧头砍树枝,简直是现代版的“神雕侠侣”,只不过对象是树木。最后,那堆树枝架过泥泞的小水坑,仿佛在说:“我就是不怕湿脚的勇士!”这就是我们的建造之旅!",
- "OST": 2,
- "new_timestamp": "00:51-01:37"
- }
- ],
- "video_clip_json_path": "E:\\projects\\NarratoAI\\resource\\scripts\\2024-1118-230421.json",
- "video_origin_path": "E:\\projects\\NarratoAI\\resource\\videos\\test.mp4",
- "video_aspect": "16:9",
- "video_language": "zh-CN",
- "voice_name": "zh-CN-YunjianNeural",
- "voice_volume": 1,
- "voice_rate": 1.2,
- "voice_pitch": 1,
- "bgm_name": "random",
- "bgm_type": "random",
- "bgm_file": "",
- "bgm_volume": 0.3,
- "subtitle_enabled": true,
- "subtitle_position": "bottom",
- "font_name": "STHeitiMedium.ttc",
- "text_fore_color": "#FFFFFF",
- "text_background_color": "transparent",
- "font_size": 75,
- "stroke_color": "#000000",
- "stroke_width": 1.5,
- "custom_position": 70,
- "n_threads": 8
- },
- "subclip_videos": {
- "00:10-01:01": "E:\\projects\\NarratoAI\\storage\\cache_videos/vid-00_10-01_01.mp4",
- "01:07-01:53": "E:\\projects\\NarratoAI\\storage\\cache_videos/vid-01_07-01_53.mp4"
- }
-}'
-
-请求1,返回的参数是:
-{
- "task_id": "4e9b575f-68c0-4ae1-b218-db42b67993d0",
- "output_path": "E:\\projects\\NarratoAI\\resource\\videos\\2024-11-19.mp4",
- "resolution": "1080p",
- "format": "mp4",
- "filename": "2024-11-19.mp4"
-}
-output_path需要传递给请求2
-请求2,返回数据为:
-{
- "task_id": "04497017-953c-44b4-bf1d-9d8ed3ebbbce",
- "script": [
- {
- "timestamp": "00:10-01:01",
- "picture": "好的,以下是對影片畫面的客觀描述:\n\n影片顯示一名留著鬍鬚的男子在一處樹林茂密的斜坡上挖掘。\n\n畫面一:男子從後方出現,背著一個軍綠色的背包,背包裡似乎裝有工具。他穿著卡其色的長褲和深色的登山鞋。\n\n畫面二:特寫鏡頭顯示男子的背包,一個舊的鎬頭從包裡露出來,包裡還有其他工具,包括一個鏟子。\n\n畫面三:男子用鎬頭在斜坡上挖土,背包放在他旁邊。\n\n畫面四:特寫鏡頭顯示男子的登山鞋在泥土中。\n\n畫面五:男子坐在斜坡上,用手清理樹根和泥土。\n\n畫面六:地上有一些鬆動的泥土和落葉。\n\n畫面七:男子的背包近景鏡頭,他正在挖掘。\n\n畫面八:男子在斜坡上挖掘,揚起一陣塵土。\n\n畫面九:特寫鏡頭顯示男子用手清理泥土。\n\n畫面十:特寫鏡頭顯示挖出的泥土剖面,可以看到土壤的層次。",
- "narration": "上一个画面是我在绝美的自然中,准备开启我的“土豪”挖掘之旅。现在,你们看到这位留着胡子的“大哥”,他背着个军绿色的包,里面装的可不仅仅是工具,还有我对生活的无限热爱(以及一丝不安)。看!这把旧镐头就像我的前任——用起来费劲,但又舍不得扔掉。\n\n他在斜坡上挖土,泥土飞扬,仿佛在跟大地进行一场“泥巴大战”。每一铲下去,都能听到大地微微的呻吟:哎呀,我这颗小树根可比我当年的情感纠葛还难处理呢!别担心,这些泥土层次分明,简直可以开个“泥土博物馆”。所以,朋友们,跟着我一起享受这场泥泞中的乐趣吧!",
- "OST": 2,
- "new_timestamp": "00:00-00:51"
- },
- {
- "timestamp": "01:07-01:53",
- "picture": "好的,以下是對影片畫面內容的客觀描述:\n\n影片以一系列森林環境的鏡頭開始。第一個鏡頭展示了綠葉植物的特寫鏡頭,葉子上有一些水珠。接下來的鏡頭是一個男人在森林裡挖掘一個小坑,他跪在地上,用鏟子挖土。\n\n接下來的鏡頭是同一個男人坐在他挖的坑旁邊,望著前方。然後,鏡頭顯示該坑的廣角鏡頭,顯示其結構和大小。\n\n之後的鏡頭,同一個男人在樹林裡劈柴。鏡頭最後呈現出一潭渾濁的水,周圍環繞著樹枝。然後鏡頭又回到了森林裡生長茂盛的植物特寫鏡頭。",
- "narration": "好嘞,朋友们,我们已经在泥土博物馆里捣鼓了一阵子,现在是时候跟大自然亲密接触了!看看这片森林,绿叶上水珠闪闪发光,就像我曾经的爱情,虽然短暂,却美得让人心碎。\n\n现在,我在这里挖个小坑,感觉自己就像是一位新晋“挖土大王”,不过说实话,这手艺真不敢恭维,连铲子都快对我崩溃了。再说劈柴,这动作简直比我前任的情绪波动还要激烈!最后这一潭浑浊的水,别担心,它只是告诉我:生活就像这水,总有些杂质,但也别忘了,要勇敢面对哦!",
- "OST": 2,
- "new_timestamp": "00:51-01:37"
- }
- ]
-}
-output_path和script参数需要传递给请求3
-请求3返回参数是
-{
- "task_id": "b6f5a98a-b2e0-4e3d-89c5-64fb90db2ec1",
- "subclip_videos": {
- "00:10-01:01": "E:\\projects\\NarratoAI\\storage\\cache_videos/vid-00_10-01_01.mp4",
- "01:07-01:53": "E:\\projects\\NarratoAI\\storage\\cache_videos/vid-01_07-01_53.mp4"
- }
-}
-subclip_videos和 output_path和script参数需要传递给请求4
-最后完成工作流
-
-0代表只播放文案音频,禁用视频原声;1代表只播放视频原声,不需要播放文案音频和字幕;2代表即播放文案音频也要播放视频原声;
\ No newline at end of file