{"_id":"@ai-media/provider-aliyun-bailian","_rev":"6-65d8464d081b72747fa143d111ac30a5","name":"@ai-media/provider-aliyun-bailian","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@ai-media/provider-aliyun-bailian","version":"0.1.0","license":"MIT","_id":"@ai-media/provider-aliyun-bailian@0.1.0","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"dist":{"shasum":"1e160a14891310cb72750930bd827a2951850a8a","tarball":"https://registry.npmjs.org/@ai-media/provider-aliyun-bailian/-/provider-aliyun-bailian-0.1.0.tgz","fileCount":5,"integrity":"sha512-jAclDnPeEgnIdulyIVtXJq0FBeT3n1YaCLtDQl9UTDE+1XOe6RK8o7prAXoVESySD+EqWuSfbwXMDK0XtKDLvA==","signatures":[{"sig":"MEYCIQC4H+hb6dimZAhiVhTtLCELJiA6TQ4KnW724seLjleF6AIhAK/47eVZV1dA+Rn2AJhzRlTjZ4V1d9pCxxCpELP5bG1x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46710},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"554268b9348db1e0795cc2e407fe175b654e025c","scripts":{"lint":"eslint","test":"bun test","build":"tsup src/index.ts --format esm --dts --out-dir dist --clean --external @ai-media/sdk","format":"prettier --write \"**/*.{ts,tsx}\"","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"11.13.0","description":"Alibaba Bailian image and video provider for AI Media SDK","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@ai-media/sdk":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9","@types/bun":"^1.2.0","typescript":"^5","@types/node":"^20","@workspace/eslint-config":"workspace:*","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/provider-aliyun-bailian_0.1.0_1786090731933_0.032069782654296386","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ai-media/provider-aliyun-bailian","version":"0.1.1","license":"MIT","_id":"@ai-media/provider-aliyun-bailian@0.1.1","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"dist":{"shasum":"d211e18a1413621c7603f635f3f2d46dff15577f","tarball":"https://registry.npmjs.org/@ai-media/provider-aliyun-bailian/-/provider-aliyun-bailian-0.1.1.tgz","fileCount":10,"integrity":"sha512-9VTxc72DAAeL2YhWsurhsDEHRlfGjRrRTDEnGl4gAC1x9oJcoVB1JLJOx2ZWKgq1nPx2u4Jc38/QYL6V98gkzQ==","signatures":[{"sig":"MEUCIDBPDXndveDAFEm4RjghExP6xkbtDuY2kk1nPulqaou4AiEAjW2Jyu7Ue+WntMEeXNwa4UmmVn2RyiIKH+cTVUe6jI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68070},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"2424f1f89827219fc8467a3752f06b84bef86807","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"11.13.0","description":"Alibaba Bailian image and video provider for AI Media SDK","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@ai-media/sdk":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/provider-aliyun-bailian_0.1.1_1786609212820_0.5683404136727861","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ai-media/provider-aliyun-bailian","version":"0.1.2","license":"MIT","_id":"@ai-media/provider-aliyun-bailian@0.1.2","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"dist":{"shasum":"e08c77c8daea9bddaad2b072e1ae48f75754a49a","tarball":"https://registry.npmjs.org/@ai-media/provider-aliyun-bailian/-/provider-aliyun-bailian-0.1.2.tgz","fileCount":10,"integrity":"sha512-X/nnPMERzegTUj4Rri4PKCHFsG+kiMe1H+VxnniL8zc5Oz+mSPMCN6ZReelD4Rt/UmhT3zvroQTdnnByc4fADg==","signatures":[{"sig":"MEQCIGz/WxWeEJackfjgSPpOulmTMFev6sYi3G8ZtPB38cP0AiANm7GbndmF/Cz+6UyIr9XJw9V0tV9RaGJBNcn6rYurqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68070},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ea34b4d9d1140bae548933472771a6dd44d7865b","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"11.13.0","description":"Alibaba Bailian image and video provider for AI Media SDK","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@ai-media/sdk":"^0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/provider-aliyun-bailian_0.1.2_1786617046869_0.6454583548733761","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ai-media/provider-aliyun-bailian","version":"0.1.3","license":"MIT","_id":"@ai-media/provider-aliyun-bailian@0.1.3","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"dist":{"shasum":"3865ae9ee4f11459f2ed2a98247f51e612cc7c26","tarball":"https://registry.npmjs.org/@ai-media/provider-aliyun-bailian/-/provider-aliyun-bailian-0.1.3.tgz","fileCount":12,"integrity":"sha512-XiuDPIra0hTSuQ+DViBIt3V1Owvifw9CVIM4poRX7MYabMsJjyeEFpusapWnMj1H+meMFMOSckak1Z+UIRbmWQ==","signatures":[{"sig":"MEUCIE0tVCbEwFFpUsniZzEdrqHztLNWYYbAB3QrNDXV9kSrAiEAsP7w/t6WyhP9yLKBxWKtChoKySrk9D8aq4gjyucslWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100033},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6c3b3f554fde04c18b01ab1db1a640c686a1b627","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"11.13.0","description":"Alibaba Bailian image and video provider for AI Media SDK","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@ai-media/sdk":"^0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/provider-aliyun-bailian_0.1.3_1788338221464_0.12417646030129936","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ai-media/provider-aliyun-bailian","version":"0.1.4","license":"MIT","_id":"@ai-media/provider-aliyun-bailian@0.1.4","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"dist":{"shasum":"1fd1038ef9947e867b239127848debb24df7d3f5","tarball":"https://registry.npmjs.org/@ai-media/provider-aliyun-bailian/-/provider-aliyun-bailian-0.1.4.tgz","fileCount":12,"integrity":"sha512-EhoGflEkHOGgXkdLi3PPRgygPMDpHcpjUUHD+XvnHCOLwCs2J+xHKS2atRcPth1rvNl11BrqzVFrVD/nYWT7Sw==","signatures":[{"sig":"MEYCIQCcmNbGCL6el3NkX9XLc/R0TJiZNNE1d45GdHqlt8SS0gIhALDlHAZE/CIFZwRW4oq/RV70oRGwqNOSGm+/jDMnD1tB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCI1EvMGnMVwG/mBxAsCSxBPAcWKom4idXOeCX+jxXlsQIgLmyewgz1uy2+NBvE4iNlHVN/S5kEVXYNn1PqjpWC5hg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100033},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"5c8cd107a8ccb6238e595123b53eff87d2da7f26","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"10.9.3","description":"Alibaba Bailian image and video provider for AI Media SDK","directories":{},"_nodeVersion":"22.18.0","dependencies":{"@ai-media/sdk":"^0.1.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/provider-aliyun-bailian_0.1.4_1788873620039_0.0649626031609638","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"_id":"@ai-media/provider-aliyun-bailian@0.1.5","dist":{"shasum":"4d10f374bcb079c7a0c9a1c162b30b8e8e7d65df","tarball":"https://registry.npmjs.org/@ai-media/provider-aliyun-bailian/-/provider-aliyun-bailian-0.1.5.tgz","fileCount":12,"integrity":"sha512-1eqOVnRNLEwvT9VH3TXUjRUkxQD6ipig3/HUsQBPIeRwNcVcADkrfyqySHmimJKnm23WN9JRk5Y2HS2JzE0W4A==","signatures":[{"sig":"MEUCIQCBWFbM/cwnNvmJCq7RM7p5Pr0tKW2jM2Eqjl0qp72B9wIgJy5PChAeE+MQeMy9psTVyQ6Ye4WTl/OLz3a7wZjcd0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHAChRZULIvixrjSNmA0FDQKB0U+UIqHJjGTNUF2JO02AiEA6D/ZM15DCFrxc9Kqxa72KKSHrtnUaNNBgSQJOaqEfEM="}],"unpackedSize":100033},"main":"./dist/index.js","name":"@ai-media/provider-aliyun-bailian","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ca953c8881ebb066181712b134a2e559b827aa9f","license":"MIT","scripts":{"test":"bun test","build":"tsup src/index.ts --format esm --out-dir dist --clean --external @ai-media/sdk && tsc -p tsconfig.emit-dts.json","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","typecheck:release":"tsc -p tsconfig.json --noEmit"},"version":"0.1.5","_npmUser":{"name":"windzb","email":"windzb@qq.com"},"_npmVersion":"10.9.3","description":"Alibaba Bailian image and video provider for AI Media SDK","directories":{},"maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"_nodeVersion":"22.18.0","dependencies":{"@ai-media/sdk":"^0.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.2.0","typescript":"^7.0.2","@types/node":"^20","@workspace/typescript-config":"workspace:*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/provider-aliyun-bailian_0.1.5_1789053418674_0.7652639219095947"}}},"time":{"created":"2026-08-07T08:18:51.765Z","modified":"2026-09-10T15:16:58.975Z","0.1.0":"2026-08-07T08:18:52.156Z","0.1.1":"2026-08-13T08:20:12.992Z","0.1.2":"2026-08-13T10:30:47.038Z","0.1.3":"2026-09-02T08:37:01.634Z","0.1.4":"2026-09-08T13:20:20.128Z","0.1.5":"2026-09-10T15:16:58.767Z"},"license":"MIT","description":"Alibaba Bailian image and video provider for AI Media SDK","maintainers":[{"name":"windzb","email":"windzb@qq.com"}],"readme":"# @ai-media/provider-aliyun-bailian\n\n[![npm version](https://img.shields.io/npm/v/@ai-media/provider-aliyun-bailian.svg)](https://www.npmjs.com/package/@ai-media/provider-aliyun-bailian)\n[![npm downloads](https://img.shields.io/npm/dm/@ai-media/provider-aliyun-bailian.svg)](https://www.npmjs.com/package/@ai-media/provider-aliyun-bailian)\n[![License](https://img.shields.io/npm/l/@ai-media/provider-aliyun-bailian.svg)](https://github.com/ecafe8/ai-media-sdk/blob/main/packages/provider-aliyun-bailian/LICENSE)\n\n[AI Media SDK](../ai-media-sdk/README.md) 的阿里云百炼（DashScope）Provider，支持图像生成/编辑、视频生成、非实时语音合成、声音复刻与声音设计。基于原生 `fetch` 直接调用 DashScope REST API，不依赖平台 SDK。\n\n> **注意**：本项目处于快速迭代期间，API 可能随时变更，生产使用请锁定版本。\n\n## 安装\n\n```bash\nnpm install @ai-media/sdk @ai-media/provider-aliyun-bailian\n```\n\n运行时要求：Node.js >= 20（或 Bun），ESM-only。\n\n## 配置\n\n通过 `createAliyunBailianProvider(config)` 传入配置对象：\n\n```ts\nimport { createAliyunBailianProvider } from \"@ai-media/provider-aliyun-bailian\";\n\nconst provider = createAliyunBailianProvider({\n  /** DashScope API key，作为 `Authorization: Bearer` 凭据发送 */\n  apiKey: \"<your-api-key>\",\n  /** 区域化的 DashScope API base，内嵌 workspace id 与 region */\n  baseUrl: \"https://<WorkspaceId>.cn-beijing.maas.aliyuncs.com/api/v1\",\n});\n```\n\n## 图像生成（Qwen：同步）\n\nQwen 系列走同步接口，支持生成与编辑：\n\n```ts\nimport { generateImage, editImage } from \"@ai-media/sdk\";\n\nconst result = await generateImage({\n  model: provider.image(\"qwen-image-2.0-pro\"),\n  prompt: \"江南小镇的清晨，水彩画风格\",\n  n: 1,\n  size: \"1024*1024\", // 任意 WxH / W*H 像素值，不超过 2048x2048\n});\n\nconst edited = await editImage({\n  model: provider.image(\"qwen-image-2.0-pro\"),\n  prompt: \"把画面改成雪天\",\n  images: [{ url: \"https://example.com/input.png\" }], // 1-3 张，URL 或 base64\n});\n```\n\n## 非实时语音合成\n\n使用 `provider.audio(model)` 绑定音频模型，再通过 `generateAudio` 合成语音。Qwen-Audio-TTS/CosyVoice 使用 `SpeechSynthesizer`，Qwen-TTS 和 MiniMax 使用多模态生成接口。\n\n```ts\nimport { generateAudio } from \"@ai-media/sdk\";\n\nconst speech = await generateAudio({\n  model: provider.audio(\"qwen-audio-3.0-tts-flash\"),\n  text: \"你好，欢迎使用 AI Media SDK。\",\n  voice: \"longanhuan_v3.6\",\n  providerOptions: {\n    aliyun: { format: \"wav\", sampleRate: 24000 },\n  },\n});\n\nconsole.log(speech.content[0]?.url);\n```\n\nMiniMax 使用独立的 `voiceSetting` 和 `audioSetting` 参数：\n\n```ts\nconst speech = await generateAudio({\n  model: provider.audio(\"MiniMax/speech-2.8-hd\"),\n  text: \"今天天气真不错。\",\n  voice: \"male-qn-qingse\",\n  providerOptions: {\n    aliyun: {\n      voiceSetting: { emotion: \"happy\", speed: 1 },\n      audioSetting: { format: \"mp3\", sampleRate: 32000 },\n    },\n  },\n});\n```\n\n## 声音复刻与声音设计\n\n声音复刻和声音设计是独立的资源管理器。复刻从参考音频创建音色，设计从文字描述创建音色；两者都需要使用创建时指定的 `targetModel` 进行后续合成。\n\n```ts\nconst cloned = await provider.voiceCloning.create({\n  protocol: \"qwen-audio\",\n  targetModel: \"qwen-audio-3.0-tts-flash\",\n  prefix: \"myvoice\",\n  audioUrl: \"https://example.com/sample.wav\",\n  languageHints: [\"zh\"],\n});\n\nconst designed = await provider.voiceDesign.create({\n  protocol: \"qwen-audio\",\n  targetModel: \"cosyvoice-v3.5-plus\",\n  prefix: \"announcer\",\n  voicePrompt: \"沉稳的中年男性，音色低沉浑厚\",\n  previewText: \"各位听众朋友们大家好，欢迎收听本期节目\",\n});\n\nconsole.log(cloned.voice?.id, designed.voice?.id);\nconsole.log(designed.previewAudio?.base64);\n```\n\nHTTP SSE 流式 TTS 使用 `streamAudio`；WebSocket 实时 TTS 不属于当前 HTTP Provider 边界。音频 URL 通常有效 24 小时，设计预览音频以 Base64 形式返回，请按需及时持久化。\n\n## 图像生成（Wan：异步任务）\n\nWan 系列为异步模型，使用 `submitImageTask` 提交并轮询：\n\n```ts\nimport { submitImageTask } from \"@ai-media/sdk\";\n\nconst task = await submitImageTask({\n  model: provider.image(\"wan2.7-image-pro\"),\n  prompt: \"江南小镇的清晨，水彩画风格\",\n  n: 1,\n  size: \"2K\", // 档位形式\n});\nconst result = await task.wait({ pollIntervalMs: 15_000, timeoutMs: 600_000 });\n```\n\n## 图像模型一览\n\n| 模型                            | 调用方式 | 生成 | 编辑        | size                                    | n 上限 |\n| ------------------------------- | -------- | ---- | ----------- | --------------------------------------- | ------ |\n| `qwen-image-3.0-pro`            | 同步     | ✅   | ✅（≤3 张） | 像素值 ≤2048x2048                       | 6      |\n| `qwen-image-3.0`                | 同步     | ✅   | ✅（≤3 张） | 像素值 ≤2048x2048                       | 6      |\n| `qwen-image-2.0-pro`            | 同步     | ✅   | ✅（≤3 张） | 像素值 ≤2048x2048                       | 6      |\n| `qwen-image-2.0-pro-2026-06-22` | 同步     | ✅   | ✅（≤3 张） | 像素值 ≤2048x2048                       | 6      |\n| `qwen-image-2.0`                | 同步     | ✅   | ✅（≤3 张） | 像素值 ≤2048x2048                       | 6      |\n| `wan2.7-image-pro`              | 异步     | ✅   | ❌          | `1K` / `2K` / `4K`（像素值 ≤4096x4096） | 4      |\n| `wan2.7-image`                  | 异步     | ✅   | ❌          | `1K` / `2K`（像素值 ≤2048x2048）        | 4      |\n| `wan2.6-t2i`                    | 异步     | ✅   | ❌          | 像素值 ≤1440x1440（仅像素形式）         | 4      |\n\n## 视频生成（HappyHorse）\n\n视频均为异步任务，使用 `submitVideoTask` 提交。四种模式对应不同媒体输入：\n\n```ts\nimport { submitVideoTask } from \"@ai-media/sdk\";\n\n// 文生视频（t2v）\nconst t2v = await submitVideoTask({\n  model: provider.video(\"happyhorse-1.1-t2v\"),\n  prompt: \"清晨的江南水乡，镜头缓缓推进\",\n  providerOptions: {\n    aliyun: {\n      resolution: \"720P\",\n      ratio: \"16:9\",\n      duration: 15,\n      watermark: false,\n    },\n  },\n});\n\n// 首帧图生视频（i2v）：比例自动跟随首帧，不接受 ratio\nconst i2v = await submitVideoTask({\n  model: provider.video(\"happyhorse-1.1-i2v\"),\n  prompt: \"画面中的水面泛起涟漪\",\n  firstFrame: { url: \"https://example.com/first.png\" },\n});\n\n// 参考图生视频（r2v）：1-9 张参考图，prompt 中用 [Image N] 按顺序指代\nconst r2v = await submitVideoTask({\n  model: provider.video(\"happyhorse-1.1-r2v\"),\n  prompt: \"[Image 1] 中的人物走向 [Image 2] 的场景\",\n  referenceImages: [{ url: \"https://example.com/ref1.png\" }],\n  providerOptions: {\n    aliyun: { resolution: \"720P\", ratio: \"16:9\", duration: 15 },\n  },\n});\n\n// 源视频编辑（video-edit）：ratio/duration 由 audio_setting 替代\nconst edit = await submitVideoTask({\n  model: provider.video(\"happyhorse-1.0-video-edit\"),\n  prompt: \"把画面转为赛博朋克风格\",\n  inputVideo: { url: \"https://example.com/source.mp4\" }, // 公开 http/https URL\n  referenceImages: [], // 可选 0-5 张\n  providerOptions: { aliyun: { resolution: \"720P\", audio_setting: \"auto\" } },\n});\n\nconst result = await t2v.wait({ pollIntervalMs: 15_000, timeoutMs: 600_000 });\nconsole.log(result.content); // VideoContent[]\n```\n\n| 模式       | 模型                        | 必需输入                            | 可选输入                 | 专属参数差异                                                        |\n| ---------- | --------------------------- | ----------------------------------- | ------------------------ | ------------------------------------------------------------------- |\n| t2v        | `happyhorse-1.1-t2v`        | `prompt`                            | —                        | `resolution` 480P/720P/1080P、`ratio`、`duration`                   |\n| i2v        | `happyhorse-1.1-i2v`        | `prompt` + `firstFrame`             | —                        | 无 `ratio`（自动跟随首帧）                                          |\n| r2v        | `happyhorse-1.1-r2v`        | `prompt` + `referenceImages`（1-9） | —                        | `ratio` 可显式指定                                                  |\n| video-edit | `happyhorse-1.0-video-edit` | `prompt` + `inputVideo`             | `referenceImages`（0-5） | `resolution` 仅 720P/1080P，`audio_setting` 替代 `ratio`/`duration` |\n\n`t2v`/`i2v`/`r2v` 的 `providerOptions.aliyun` 支持 `resolution`、`ratio`（`16:9` `9:16` `1:1` `4:3` `3:4` `4:5` `5:4` `9:21` `21:9`）、`duration`、`watermark`、`seed`；video-edit 支持 `resolution`、`watermark`、`seed`、`audio_setting`（`auto` / `origin`）。\n\n## provider 专属图像参数\n\n图像请求的 Aliyun 专属字段放在 `providerOptions.aliyun` 命名空间下，按模型家族转发：\n\n| 字段                 | 适用范围            | 说明                                                         |\n| -------------------- | ------------------- | ------------------------------------------------------------ |\n| `negative_prompt`    | Qwen + `wan2.6-t2i` | 负向提示词                                                   |\n| `prompt_extend`      | Qwen + `wan2.6-t2i` | 智能改写 prompt（API 默认开启）                              |\n| `prompt_extend_mode` | Qwen + `wan2.6-t2i` | `direct`（默认）/ `agent`（仅 T2I）                          |\n| `watermark` / `seed` | 全部                | 水印 / 复现种子（0-2147483647）                              |\n| `thinking_mode`      | Wan 2.7             | 推理模式（默认 true；需关闭 `enable_sequential` 且无图输入） |\n| `color_palette`      | Wan 2.7             | 自定义色彩主题（3-10 个 `{hex, ratio}`，ratio 合计 100%）    |\n| `enable_sequential`  | Wan 2.7             | 组图连拍模式                                                 |\n| `bbox_list`          | Wan 2.7             | 交互式编辑包围框 `[x1, y1, x2, y2]`                          |\n\n```ts\nconst result = await generateImage({\n  model: provider.image(\"qwen-image-2.0-pro\"),\n  prompt: \"江南小镇的清晨\",\n  providerOptions: {\n    aliyun: { negative_prompt: \"人物\", watermark: false, seed: 42 },\n  },\n});\n```\n\n## 本地文件输入\n\n配合 `@ai-media/uploader/aliyun` 可将本地文件上传为 DashScope 临时 `oss://` URL。当请求中出现 `oss://` URL 时，本 Provider 会自动注入 `X-DashScope-OssResourceResolve: enable` 请求头，无需手动处理：\n\n```ts\nimport { createAliyunUploader } from \"@ai-media/uploader/aliyun\";\n\nconst uploader = createAliyunUploader({ apiKey: \"<your-api-key>\" });\nconst uploaded = await uploader.upload({\n  model: \"qwen-image-2.0-pro\", // 必须与下游生成调用的模型一致\n  filePath: \"./input.png\",\n});\n\nconst edited = await editImage({\n  model: provider.image(\"qwen-image-2.0-pro\"),\n  prompt: \"把画面改成雪天\",\n  images: [{ url: uploaded.url }],\n});\n```\n\n## 其他\n\n```ts\nfor (const model of provider.listModels()) {\n  console.log(model.id, model.modality, model.capabilities);\n}\n```\n\n## 注意事项\n\n- 任务 ID 与结果 URL 为临时资源（约 24 小时过期），请及时下载并持久化结果。\n- 临时上传的 `oss://` URL 48 小时过期，仅供开发测试；生产请使用持久存储。\n- 错误统一为 `@ai-media/sdk` 的 `SdkError`，错误信息不包含凭据；未知模型 id 抛出 `UNKNOWN_MODEL`。\n\n## License\n\nMIT\n","readmeFilename":"README.md"}