☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
{"type":"doc","content":[{"type":"paragraph","attrs":{"id":"75d3f58e-3e01-4436-8fda-e27211bb7d24","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"在数字创作的世界里,最折磨人的往往不是缺乏灵感,而是从“想做一个视频”到“看到第一个画面”之间那道漫长的环境鸿沟。依赖冲突、系统版本不对齐、缺失的底层浏览器内核……报错的红字足以在一瞬间浇灭刚燃起的创作欲。"}]},{"type":"paragraph","attrs":{"id":"ffdb8063-d458-4c69-920e-70302b6a1aa8","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"我们之所以选择容器,并不是为了追赶某种技术时髦,而是为了寻得一份安静。docker 就像是给这套复杂的 ai 程序打包了一个独立的小宇宙——里面空气清新,气候恒定,不沾染你宿主机上的一丝杂乱。"}]},{"type":"paragraph","attrs":{"id":"95ef8a50-566e-4ea9-a016-243872258c60","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"当你准备好 docker 与 docker compose 后,通往 pixelle-video 的路其实只有短短的三步:拉取代码,启动容器,然后在浏览器里配置你的生成逻辑。至于中间那些泥泞的坑洼,这份指南会陪你一一跨过。"}]},{"type":"heading","attrs":{"id":"177bf0ac-bc0d-4e51-8ff0-0d822c8c5ff9","textalign":"inherit","indent":0,"level":2,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"textstyle","attrs":{"color":"","background":""}}],"text":"1 沙盒筑基:docker 一键部署"}]},{"type":"heading","attrs":{"id":"1927607a-ff12-463b-af6d-d4d0159bfa84","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"1.1 拉取与构建"}]},{"type":"paragraph","attrs":{"id":"1e8948c7-0ab0-476a-ac66-224cf099455a","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"一切的开端,始于将代码拉取至本地:"}]},{"type":"codeblock","attrs":{"id":"a2643d8c-b40a-4ff8-b081-924dfe5b85c7","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"git clone https://github.com/aidc-ai/pixelle-video.gitcd pixelle-video"}]},{"type":"image","attrs":{"id":"5f70d315-b343-423e-bd4e-eab112947a9a","src":"https://developer.qcloudimg.com/http-save/audit-11456577/327390164ba8d39789a4a561468ef5dd.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"63c9d2a9-92e4-4e8f-b1a4-052b120e0e6a","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"随后,我们将启动构建流程。由于国内网络环境的特殊性,建议在构建时开启镜像加速。"}]},{"type":"paragraph","attrs":{"id":"d1488583-6e1b-4c85-b2e2-54b2e69f7523","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"? 终端语法差异提示: 如果你使用的是 powershell,环境变量的声明方式较为优雅,需用 "},{"type":"text","marks":[{"type":"code"}],"text":"$env:"},{"type":"text","text":" 起头,并用分号 "},{"type":"text","marks":[{"type":"code"}],"text":";"},{"type":"text","text":" 衔接后续命令:"}]},{"type":"codeblock","attrs":{"id":"513e1f3b-2a22-4d6c-9e76-31d3687f0460","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"$env:use_cn_mirror=\"true\"; docker compose build --no-cache"}]},{"type":"image","attrs":{"id":"ddc3aea2-f7be-4817-9381-65cb84c4fa8e","src":"https://developer.qcloudimg.com/http-save/audit-11456577/eb2cba9c0b6fbded4b0f9c9af9410408.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"9d200a6b-f588-42cf-970f-2123861b5aa4","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"等构建完成后,再运行启动命令(同样带上环境变量):"}]},{"type":"codeblock","attrs":{"id":"91e4e129-188a-47b1-9e98-71ac86450c1c","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"$env:use_cn_mirror=\"true\"; docker compose up -d"}]},{"type":"image","attrs":{"id":"7e6dc508-1d8a-4033-92c7-cf97a4e52ed3","src":"https://developer.qcloudimg.com/http-save/audit-11456577/0b8678501550543317ff960e9efb7de0.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"b800d1ad-e98b-427a-875f-453e8e8e7a7a","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"若你更偏爱传统的 cmd 命令行,则使用 "},{"type":"text","marks":[{"type":"code"}],"text":"set"},{"type":"text","text":" 与 "},{"type":"text","marks":[{"type":"code"}],"text":"u0026u0026"},{"type":"text","text":" 的组合:"}]},{"type":"codeblock","attrs":{"id":"cdffbb57-1536-42da-be01-68751d367137","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"set use_cn_mirror=true u0026u0026 docker compose build --no-cacheset use_cn_mirror=true u0026u0026 docker compose up -d"}]},{"type":"image","attrs":{"id":"eb1b7dd6-2876-4860-9293-7ead8dac009b","src":"https://developer.qcloudimg.com/http-save/audit-11456577/656103d84b7675a1e4d743d969798ee2.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"heading","attrs":{"id":"450f4d8e-b47b-47f3-b20a-a89367581f0d","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"1.2 破局:playwright 安装问题排查"}]},{"type":"paragraph","attrs":{"id":"e22322fc-8134-4b2d-8f11-e8f6992b48a4","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"在理想的情境下,构建会一气呵成。但现实中,你可能会在 playwright(用于无头浏览器渲染的底层库)这一步遭遇阻碍。"}]},{"type":"image","attrs":{"id":"59933e4b-e1f7-450b-86a6-a19ead39a591","src":"https://developer.qcloudimg.com/http-save/audit-11456577/3da1f21387b7724f3822f55500b0a1ea.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"48bab5d0-13f3-4306-8f6b-365671fee749","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"解决之道在于“化整为零”:"},{"type":"text","text":" 用任意编辑器打开项目根目录下的 "},{"type":"text","marks":[{"type":"code"}],"text":"dockerfile"},{"type":"text","text":",找到那段包含 "},{"type":"text","marks":[{"type":"code"}],"text":"playwright install --with-deps chromium"},{"type":"text","text":" 的代码块,将其临时删去,只保留 python 依赖的安装:"}]},{"type":"codeblock","attrs":{"id":"28769b12-fcff-4e02-985f-8fb6e2f9559b","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"run export uv_http_timeout=300 u0026u0026 \\ uv venv u0026u0026 \\ if [ \"$use_cn_mirror\" = \"true\" ]; then \\ uv pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple; \\ else \\ uv pip install -e .; \\ fi u0026u0026 \\ playwright install --with-deps chromium"}]},{"type":"paragraph","attrs":{"id":"4580d4d9-97cd-4bd1-8948-aa730208476c","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"改成:"}]},{"type":"codeblock","attrs":{"id":"ef842d84-b480-4f35-a21b-52eea7c3b083","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"run export uv_http_timeout=300 u0026u0026 \\ uv venv u0026u0026 \\ if [ \"$use_cn_mirror\" = \"true\" ]; then \\ uv pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple; \\ else \\ uv pip install -e .; \\ fi"}]},{"type":"paragraph","attrs":{"id":"65057795-a7b0-46f0-8101-c9c47466bb1f","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"保存后,重新执行上述的 build 与 up 命令。此时容器能顺利跑起来,但我们还需要把缺失的浏览器内核补上。"}]},{"type":"paragraph","attrs":{"id":"a9e63ecb-4614-4a38-8ec0-8af6b4520fa7","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"潜入容器内部:"}]},{"type":"paragraph","attrs":{"id":"f5b46f52-91c6-4f1a-8552-62df011c05cb","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"在终端输入:"}]},{"type":"codeblock","attrs":{"id":"2dd6bd73-6e0c-4e19-b8a1-9bbd450fac07","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"docker exec -it pixelle-video-api bash"}]},{"type":"paragraph","attrs":{"id":"ef72cdc7-3075-496c-8d68-899da8581e3d","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"如何判断是否进入到了容器内容,别着急,继续往下看"}]},{"type":"paragraph","attrs":{"id":"03d9fb30-418a-4d55-b964-4ae0088374e9","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"如果成功,你会发现最左边的提示符变了。"}]},{"type":"bulletlist","attrs":{"id":"767dc0bb-7a66-4e34-9d0f-632f56162be6","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"bd684a1f-12e7-4e04-b77e-a261cba979ae"},"content":[{"type":"paragraph","attrs":{"id":"494f8cd9-7e23-470e-9ebd-aa2baa469834","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"之前是:"},{"type":"text","marks":[{"type":"code"}],"text":"ps g:\\222\\pixelle-videou003e"}]}]},{"type":"listitem","attrs":{"id":"4cacd22a-d02d-4d0f-a50a-69e7a2722d54"},"content":[{"type":"paragraph","attrs":{"id":"218d08d8-6d48-4312-900f-98bfdef579de","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"现在会变成类似这样:"},{"type":"text","marks":[{"type":"code"}],"text":"root@1a2b3c4d5e6f:/app#"}]}]}]},{"type":"paragraph","attrs":{"id":"f5c2a209-aa44-4ee7-a0db-e477d2305d60","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"只要看到类似 "},{"type":"text","marks":[{"type":"code"}],"text":"root@xxx:/app#"},{"type":"text","text":",就说明你已经进入 docker 容器内部(linux 环境)了!"}]},{"type":"image","attrs":{"id":"8b7e999c-925f-4f97-9a24-61debe47c1db","src":"https://developer.qcloudimg.com/http-save/audit-11456577/f4b6fb09e28332c7d9bca328168c971d.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"3835090d-f275-494c-891d-a642b7906a15","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"然后在当前内部环境下,输入下面的命令进行安装"}]},{"type":"codeblock","attrs":{"id":"42397365-1259-4e9c-a3bf-5fea668d56ac","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"export uv_http_timeout=300uv pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simpleplaywright install --with-deps chromium"}]},{"type":"image","attrs":{"id":"679d867f-9697-459a-9904-bde847c7e939","src":"https://developer.qcloudimg.com/http-save/audit-11456577/4d2174d6251bcd07dacb2777aaa54545.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"blockquote","attrs":{"id":"7a0b6a6b-6761-4dd3-8ed0-15c2be4358bd","textalign":"inherit","ishoverdraghandle":false},"content":[{"type":"paragraph","attrs":{"id":"fd64b642-a041-4362-b65a-5d10d422147f","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"textstyle","attrs":{"color":"rgb(85, 85, 85)","background":""}},{"type":"bold"}],"text":"“"}]},{"type":"paragraph","attrs":{"id":"96228e5f-fb5b-4ca2-a992-4b3f040a3399","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"?️ 为什么不能直接输入 "},{"type":"text","marks":[{"type":"code"}],"text":"playwright"},{"type":"text","text":"? 项目使用了 "},{"type":"text","marks":[{"type":"code"}],"text":"uv venv"},{"type":"text","text":" 在 "},{"type":"text","marks":[{"type":"code"}],"text":"/app/.venv"},{"type":"text","text":" 下创建了隔离的虚拟环境。可执行文件被安放在 "},{"type":"text","marks":[{"type":"code"}],"text":".venv/bin/"},{"type":"text","text":" 的深处,而非系统的公共路径 "},{"type":"text","marks":[{"type":"code"}],"text":"/usr/local/bin/"},{"type":"text","text":"。理解了这个层级关系,就不会感到迷惑。"}]}]},{"type":"paragraph","attrs":{"id":"6a8e7b3d-b9d0-42e8-88d7-823636c9de1d","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"跑完后直接退出就行"}]},{"type":"paragraph","attrs":{"id":"f478e9bc-cbae-468a-848b-a3ac5fcc38bd","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"装好之后在容器里执行:"}]},{"type":"codeblock","attrs":{"id":"7780d416-dc7f-4a9f-a1d5-e12419b11d29","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"exit"}]},{"type":"paragraph","attrs":{"id":"51267b49-c04d-4228-870b-8f65f9accccf","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"回到 powershell,然后重启让环境生效:"}]},{"type":"codeblock","attrs":{"id":"147e4703-708e-4138-8cf1-7c107df3e86f","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"docker compose restart"}]},{"type":"image","attrs":{"id":"589c2fe5-3324-4f50-b930-3e8df9d6ee92","src":"https://developer.qcloudimg.com/http-save/audit-11456577/1b35e7b7234804679aa8523650ff996c.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"7fc39181-6002-4e90-8293-1f3ffbf390c2","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"如果你是在 "},{"type":"text","marks":[{"type":"code"}],"text":"pixelle-video-api"},{"type":"text","text":" 里装的,但 web 页面打开报浏览器/chromium 相关错,那就再对 "},{"type":"text","marks":[{"type":"code"}],"text":"pixelle-video-web"},{"type":"text","text":" 也执行一遍同样的命令:"}]},{"type":"codeblock","attrs":{"id":"3343a186-2147-4a00-8a5a-e3ad6f9d7a95","language":"javascript","theme":"atom-one-dark","runtimes":0,"ishoverdraghandle":false,"key":"","languagebyai":"javascript"},"content":[{"type":"text","text":"docker exec -it pixelle-video-web bash# 进入后再执行:export uv_http_timeout=300uv pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple.venv/bin/playwright install --with-deps chromiumexit"}]},{"type":"paragraph","attrs":{"id":"97602abd-6009-4b92-9577-05c7c9419f71","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"然后 "},{"type":"text","marks":[{"type":"code"}],"text":"docker compose restart"},{"type":"text","text":"。"}]},{"type":"heading","attrs":{"id":"32bdc486-0b8a-485a-8217-875cc91df88c","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"1.3 验证服务"}]},{"type":"paragraph","attrs":{"id":"7b1f66b6-6ad8-4f0a-8293-46496ea42ce9","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"当一切尘埃落定,docker 会在你的本机打通三个窗口:"}]},{"type":"bulletlist","attrs":{"id":"9dd36044-c367-4922-ae24-e0720996b04c","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"73b2e68e-c91c-490e-b73e-d241d6435cdc"},"content":[{"type":"paragraph","attrs":{"id":"6e7e2189-23af-4441-9366-fbd0b237ccf2","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"操作台"},{"type":"text","text":":"},{"type":"text","marks":[{"type":"code"}],"text":"http://localhost:8501"},{"type":"text","text":"(web 界面)"}]}]}]},{"type":"image","attrs":{"id":"bd1e2df8-a953-4698-8574-7dcae148b0ec","src":"https://developer.qcloudimg.com/http-save/audit-11456577/402fd5519f453c7a91e279f376a304fe.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"image","attrs":{"id":"df494d8f-97f7-4c16-acb3-a5eea3db08c8","src":"https://developer.qcloudimg.com/http-save/audit-11456577/1467e11cc357df27598a1b9006e95766.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"bulletlist","attrs":{"id":"e6db9cca-57ee-432d-a451-66e9faa99cd0","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"b0d0ad3b-e6ad-4ede-b9bf-cb6342ea5d92"},"content":[{"type":"paragraph","attrs":{"id":"b4e50de0-ce31-4dba-bb7e-30e319d4cb96","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"调度中枢"},{"type":"text","text":":"},{"type":"text","marks":[{"type":"code"}],"text":"http://localhost:8000"},{"type":"text","text":"(api 接口)"}]}]}]},{"type":"image","attrs":{"id":"fdeda39a-8f31-41b0-bf44-1853b76bd885","src":"https://developer.qcloudimg.com/http-save/audit-11456577/2cf65379ec25611a4ce3db1d2bf27396.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"bulletlist","attrs":{"id":"4ab83b84-bc6f-4178-9431-42c3fc9777e9","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"237e5805-67dd-4263-b9b2-c7973ac22ed5"},"content":[{"type":"paragraph","attrs":{"id":"473b064e-18c6-4420-8b8a-b2868dc119f6","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"说明书"},{"type":"text","text":":"},{"type":"text","marks":[{"type":"code"}],"text":"http://localhost:8000/docs"},{"type":"text","text":"(api 文档)"}]}]}]},{"type":"image","attrs":{"id":"5458025b-9a98-49b2-9d09-005041f9141e","src":"https://developer.qcloudimg.com/http-save/audit-11456577/09b40030d0e9a8bbec03e003a55e6a55.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"95490562-8676-4e40-839d-6f485d13ebb8","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"在浏览器打开 "},{"type":"text","marks":[{"type":"code"}],"text":"http://localhost:8501"},{"type":"text","text":",你将看到 pixelle-video 的全貌。"}]},{"type":"heading","attrs":{"id":"622c916e-14b1-45a3-a960-97e8437fefa7","textalign":"inherit","indent":0,"level":2,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"textstyle","attrs":{"color":"","background":""}}],"text":"2 注入灵魂:核心系统配置"}]},{"type":"paragraph","attrs":{"id":"78be59be-24e1-43b1-8f10-b027ea458fac","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"pixelle-video 本质上是一个调度中心,它自身并不生产算力,而是优雅地指挥外部的 ai 模型为你效劳。因此,首次进入 web 界面,展开左侧的「⚙️ 系统配置」是必做的功课。"}]},{"type":"paragraph","attrs":{"id":"849dc973-21a9-4950-a2fc-547d7ea81833","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"【局部流程图:系统配置与外部依赖关系】"}]},{"type":"image","attrs":{"id":"a2010ddd-deb9-4775-b457-1a2fd17fc268","src":"https://developer.qcloudimg.com/http-save/audit-11456577/31b7968065a88cb8f653f9986b893206.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"heading","attrs":{"id":"448311fb-87e2-4b3a-91d3-ef469da8a15a","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"2.1 赋予文采:配置 llm"}]},{"type":"paragraph","attrs":{"id":"93758f10-4cfc-42bf-8478-d898bebd0c7b","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"在预设下拉框中,你可以选择各类大模型厂商。若追求极致的稳定或零成本,甚至可以指向本地部署的 ollama 地址。"}]},{"type":"paragraph","attrs":{"id":"3c455613-f0db-4fc1-b489-2cb792e01eba","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"获取对应平台的 api key 并填入,这是赋予视频“思想”的钥匙。"}]},{"type":"paragraph","attrs":{"id":"e2aeb132-004e-409c-ac49-b0cb2fc08087","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"这里我选择custom自定义厂商。"}]},{"type":"image","attrs":{"id":"292bff4b-02be-4a2a-96cb-dd506abe79eb","src":"https://developer.qcloudimg.com/http-save/audit-11456577/1f67c244153e48b02c350f99d2c63b81.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"bulletlist","attrs":{"id":"96f5eaff-896f-4831-bd99-4a81811c86e0","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"972558e3-c4cd-4215-9cee-f1ec81532e9f"},"content":[{"type":"paragraph","attrs":{"id":"78bc7d75-ec41-464f-9b73-44bc630edad7","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"获取密钥:"},{"type":"text","text":" 点击「? 获取 api key」前往对应平台申请,填入输入框。"}]}]}]},{"type":"image","attrs":{"id":"a5ee5d8f-088f-4d6b-96ff-9748641bde54","src":"https://developer.qcloudimg.com/http-save/audit-11456577/92222224be6b43665432a10cda79a9ce.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"heading","attrs":{"id":"4949908b-bf27-49c0-997f-ac6681450855","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"2.2 赋予视觉:配置图像生成服务"}]},{"type":"paragraph","attrs":{"id":"1e55495f-c52c-4cc7-8dc0-58e9531cb5f9","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"这里有两种路径供你选择:"}]},{"type":"bulletlist","attrs":{"id":"609b8067-48ea-4af2-88f3-dd017174b8f3","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"586249f4-0f22-4008-bc8c-474d85050a49"},"content":[{"type":"paragraph","attrs":{"id":"73a2403f-3e85-4422-87a7-ba9433825fd9","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"本地造物:"},{"type":"text","text":" 填入本地 comfyui 的地址。"}]}]}]},{"type":"blockquote","attrs":{"id":"5977a39b-5d7e-4cce-8fe1-02026494473f","textalign":"inherit","ishoverdraghandle":false},"content":[{"type":"paragraph","attrs":{"id":"cb40cca3-f8f8-40e4-8b39-1c5b5fa671db","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"textstyle","attrs":{"color":"rgb(85, 85, 85)","background":""}},{"type":"bold"}],"text":"“"}]},{"type":"paragraph","attrs":{"id":"56f36f61-08a1-48f0-84e0-796cfc336639","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"⚠️ docker 网络的破壁法则: 切记,pixelle 运行在 docker 的沙盒内,它眼中的 "},{"type":"text","marks":[{"type":"code"}],"text":"127.0.0.1"},{"type":"text","text":" 是容器自己,而非你的电脑。因此,地址必须写为 "},{"type":"text","marks":[{"type":"code"}],"text":"host.docker.internal:8188"},{"type":"text","text":"(win/mac 适用)或宿主机的实际内网 ip(linux 适用),这样才能穿透容器壁垒,握手宿主机上的 comfyui。"}]}]},{"type":"bulletlist","attrs":{"id":"a9cd21ca-3bf7-4549-9d72-b2aee42a7f4a","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"18529e01-bcae-4da9-808c-a5be8e62d8ea"},"content":[{"type":"paragraph","attrs":{"id":"75368a48-5104-4c5f-814b-145f46c0b7aa","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"云端捷径:"},{"type":"text","text":" 填入云端服务(如 runninghub)的 api key,开箱即用。"}]}]}]},{"type":"image","attrs":{"id":"edf9cf98-8fb8-4846-aaed-4925b06b83d9","src":"https://developer.qcloudimg.com/http-save/audit-11456577/f00d6e2539756efe4dadf69ecb8acb7f.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"f3b11eb6-7302-4437-a064-1a6bb6ce01b3","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"配置妥当后,点击「测试连接」,看到绿灯亮起,即可保存配置。"}]},{"type":"heading","attrs":{"id":"09c8a39b-da83-4ff1-a44f-b1852ed03e32","textalign":"inherit","indent":0,"level":2,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"textstyle","attrs":{"color":"","background":""}}],"text":"3 挥棒指挥:视频生成操作指南"}]},{"type":"paragraph","attrs":{"id":"87abfdfd-3bcb-4b65-b01d-76bbc37a51ef","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"配置就绪后,便进入了最令人期待的流水线作业环节。整个界面的布局宛如一张调音台:左输入、中调音、右输出。"}]},{"type":"paragraph","attrs":{"id":"bef0682c-cf7b-48bb-9afa-74f3e6aed2fb","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"【全局流程图:一条视频的诞生始末】"}]},{"type":"image","attrs":{"id":"56a7f08c-69a7-487d-b6be-9407e60eb182","src":"https://developer.qcloudimg.com/http-save/audit-11456577/e76578ac10df255b8a9d4d81c6974440.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"heading","attrs":{"id":"ddf718e7-5f74-45e2-8d92-cd8032ccb5c2","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"3.1 意念落笔(左侧栏)"}]},{"type":"paragraph","attrs":{"id":"7bf77dcb-24fb-47b8-83b2-a885d6228871","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"你可以输入诸如“为什么养成阅读习惯”的主题,让 llm 为你铺陈文案;也可以直接抛入精心打磨的脚本。"}]},{"type":"image","attrs":{"id":"dc1a34f6-37c1-4913-a7d5-d39a70a16af5","src":"https://developer.qcloudimg.com/http-save/audit-11456577/1ab13610f88c41017dd913d7995cbb87.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"paragraph","attrs":{"id":"6d92c045-ea96-4f45-9922-1344e64982fd","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"关于背景音乐(bgm),除了内置音源,docker 的 volume 挂载技术允许你将本地 mp3 文件丢进宿主机的 "},{"type":"text","marks":[{"type":"code"}],"text":"data/bgm/"},{"type":"text","text":" 文件夹,容器会自动感知并映射。"}]},{"type":"heading","attrs":{"id":"476c9966-5375-4449-b6fe-96b9aa3df038","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"3.2 勾勒轮廓(中间栏)"}]},{"type":"bulletlist","attrs":{"id":"827da861-f20d-4cdd-b91e-52084dad072d","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"240c019a-07ea-45ce-a260-7ee987adcbb6"},"content":[{"type":"paragraph","attrs":{"id":"00352a9d-54af-4b90-af66-70e7b955f486","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"声音的形状:"},{"type":"text","text":" 选择 tts 工作流(如 edge-tts)。若需定制音色,上传一段几秒钟的参考音频,点击「预览语音」试听,确保叙述者的灵魂附体。"}]}]}]},{"type":"image","attrs":{"id":"67b22174-3940-4e6b-b4a6-b09089a934db","src":"https://developer.qcloudimg.com/http-save/audit-11456577/45bf55a6770bd15b39479947074ada98.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"bulletlist","attrs":{"id":"ad214c56-ced6-4098-8eba-88ad048ee1f4","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"fdf4d6d0-6a0d-4954-a835-223a24e9b49c"},"content":[{"type":"paragraph","attrs":{"id":"1bcdbd94-c4df-4dd6-aecf-2e2800e28d1d","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"画面的皮囊:"},{"type":"text","text":" 指定图像生成工作流(默认 "},{"type":"text","marks":[{"type":"code"}],"text":"image_flux.json"},{"type":"text","text":")。在提示词前缀中填入如 "},{"type":"text","marks":[{"type":"italic"}],"text":"“minimalist black-and-white matchstick figure style illustration”"},{"type":"text","text":"(极简黑白火柴人风格插画)这样的描述,点击「预览风格」进行微调。"}]}]}]},{"type":"image","attrs":{"id":"c26c1212-59a2-4954-803b-9791668545f7","src":"https://developer.qcloudimg.com/http-save/audit-11456577/e9d6ddfb821c1e520ea3475f7b771385.png","extension":"","align":"center","alt":"","showalt":false,"href":"","boxshadow":"","width":"","aspectratio":0,"status":"success","showtext":true,"ispercentage":false,"percentage":0,"ishoverdraghandle":false}},{"type":"bulletlist","attrs":{"id":"69fb9dba-d0a9-457e-91be-1b304ccca4ac","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"365eb74f-435d-4a8a-b4e0-11cd02b1f975"},"content":[{"type":"paragraph","attrs":{"id":"b5ea6e85-858e-46e7-96b3-a1adfc160259","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"承载的容器:"},{"type":"text","text":" 选择对应的 html 视频模板。同样,你可以通过替换宿主机 "},{"type":"text","marks":[{"type":"code"}],"text":"data/templates/"},{"type":"text","text":" 目录下的文件,来实现自定义模板的永久挂载。"}]}]}]},{"type":"heading","attrs":{"id":"7bbbc7ff-67d9-438d-ac7a-8fc361a920d9","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"3.3 见证奇迹(右侧栏)"}]},{"type":"paragraph","attrs":{"id":"9913b5c9-bce5-4256-b388-05e2f620cb58","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"一切设定停当,点击右上角的「? 生成视频」。 此时,你只需静静看着进度条推进。系统会在后台如同精密的钟表般运转:拆分镜头、并发生成图像与语音、混入 bgm、按照模板排版…… 最终的视频将被持久化保存在宿主机的 "},{"type":"text","marks":[{"type":"code"}],"text":"output/"},{"type":"text","text":" 目录下。无论你日后如何删除或重建容器,这份作品都不会遗失。"}]},{"type":"heading","attrs":{"id":"e8850180-836e-495e-b650-af22478cc66e","textalign":"inherit","indent":0,"level":2,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"textstyle","attrs":{"color":"","background":""}}],"text":"4 运筹帷幄:运维与自动化"}]},{"type":"heading","attrs":{"id":"bf236180-8132-4f95-963f-f5495d9416a1","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"4.1 日常运维心法"}]},{"type":"paragraph","attrs":{"id":"22238b99-b347-4458-96f9-5b74bb8006f1","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"docker 赋予了我们随时重来、却又不必担心的底气。掌握几条简单的命令,足以应对日常所需:"}]},{"type":"bulletlist","attrs":{"id":"bd8068c7-a09b-4e9e-98f4-92fa61c13691","ishoverdraghandle":false},"content":[{"type":"listitem","attrs":{"id":"2aec93fa-6404-4c9f-b99c-0ca817a0978d"},"content":[{"type":"paragraph","attrs":{"id":"7b8f4ab0-9afe-4e81-aeda-b4390e0c2524","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"听诊排错:"},{"type":"text","marks":[{"type":"code"}],"text":"docker compose logs -f"},{"type":"text","text":" (实时追踪日志,是排查报错的第一利器)"}]}]},{"type":"listitem","attrs":{"id":"9e5751f7-8d6c-480b-8963-fcc04cc9268c"},"content":[{"type":"paragraph","attrs":{"id":"ac3014af-e001-4dae-803c-57830a1d2617","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"休眠服务:"},{"type":"text","marks":[{"type":"code"}],"text":"docker compose down"},{"type":"text","text":" (优雅停止并移除容器,但不删数据)"}]}]},{"type":"listitem","attrs":{"id":"9a80f5b7-b90b-4c11-893f-bf4493bd4f1a"},"content":[{"type":"paragraph","attrs":{"id":"37a80523-001a-4424-97b4-861cd0988003","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"版本更迭:"},{"type":"text","marks":[{"type":"code"}],"text":"docker compose up -d --build"},{"type":"text","text":" (拉取最新代码后,一键重新构建并启动)"}]}]}]},{"type":"heading","attrs":{"id":"3bd7b6ec-0abf-4724-a774-891a48d0c569","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"4.2 配置的永恒"}]},{"type":"paragraph","attrs":{"id":"5311b269-5594-43bd-a8b7-8780c82351b9","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"首次启动时,系统会以 "},{"type":"text","marks":[{"type":"code"}],"text":"config.example.yaml"},{"type":"text","text":" 为蓝本,在项目根目录生成 "},{"type":"text","marks":[{"type":"code"}],"text":"config.yaml"},{"type":"text","text":"。你在 web 界面点下的每一次“保存”,都会被刻录进这个文件。得益于 docker volume 的映射机制,这份配置拥有了超越容器生命的永恒性。"}]},{"type":"heading","attrs":{"id":"163428be-db8b-485e-9446-665ebf4df553","textalign":"inherit","indent":0,"level":3,"ishoverdraghandle":false},"content":[{"type":"text","text":"4.3 跨越界面的自动化"}]},{"type":"paragraph","attrs":{"id":"d6a7f295-1672-4501-aa7b-4fc46f44aeec","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"当你不再满足于点击界面,渴望将 pixelle-video 嵌入到自己的内容生产流水线中时,api 便是对你敞开的后门。 访问 http://localhost:8000/docs 这里有基于 swagger ui 生成的详尽接口说明书。按照其中的参数格式,发送一个简单的 post 请求,你就可以在另一台服务器、一个定时脚本、甚至是一篇博客的发布钩子中,悄无声息地批量生成视频。"}]},{"type":"heading","attrs":{"id":"103c1305-9374-46a4-b7f8-f154e216703b","textalign":"inherit","indent":0,"level":2,"ishoverdraghandle":false},"content":[{"type":"text","marks":[{"type":"textstyle","attrs":{"color":"","background":""}}],"text":"尾声"}]},{"type":"paragraph","attrs":{"id":"ba98854e-ffec-4eb3-a6d0-f7656ccb1a56","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"折腾环境的过程,本质上是在和工具较劲;而创作的过程,应该是人和灵感的共舞。"}]},{"type":"paragraph","attrs":{"id":"bab67d5b-7f3c-40e5-a409-864b896693f3","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"pixelle-video 通过 docker 这种形式,把那些繁琐的依赖、冲突、环境变量统统锁进了一个黑盒里。它退到了幕布后面,安安静静地做一个不知疲倦的齿轮。"}]},{"type":"paragraph","attrs":{"id":"a7aabec3-bc5e-4ecd-9786-aceb892f5d8b","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"无论你是喜欢坐在屏幕前,在 web 界面里一点点调整提示词、试听音色,享受亲手打磨一件作品的掌控感;还是倾向于写一段脚本,通过 api 让服务器在深夜里自动渲染出上百条视频,去迎合流量的规则——这套工具都能接得住。"}]},{"type":"paragraph","attrs":{"id":"fffa31c9-3e92-4c9c-a68e-4e9e31661679","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"代码库会陈旧,框架会迭代,但把复杂留给自己、把简单交给用户的做事哲学不会变。现在,环境已经跑通了,浏览器里的页面正空空荡荡地等着你。"}]},{"type":"paragraph","attrs":{"id":"3b82e617-15c9-46f4-9aa5-28aa00fdb7c7","textalign":"inherit","indent":0,"color":null,"background":null,"ishoverdraghandle":false},"content":[{"type":"text","text":"去填满它吧。去输入你的第一个主题,去生成属于你的第一帧画面。至于剩下的事,交给容器就好。"}]}]}











