python结合阿里通义大模型实现ai写剧本并生成多镜头视频短片代码

代码语言:python

所属分类:人工智能

代码描述:python结合阿里通义大模型实现ai写剧本并生成多镜头视频短片代码,分三步,第一步生成剧本,第二部生成分镜头文本描述,第三部生成所有的分镜头视频,最后一步合并视频。

代码标签: python 结合 阿里 通义 大模型 ai 剧本 生成 多镜头 视频 短片 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

import requests
import json
import time
import os
import concurrent.futures

from moviepy.audio.fx.all import audio_loop

from moviepy.editor import VideoFileClip, concatenate_videoclips, TextClip, CompositeVideoClip, vfx
from moviepy.audio.io.AudioFileClip import AudioFileClip  # 导入 AudioFileClip
from moviepy.audio.AudioClip import concatenate_audioclips  # 导入 concatenate_audioclips
import dashscope

from dashscope.audio.tts import SpeechSynthesizer

# 替换为你的API Key
DASHSCOPE_API_KEY
= "sk-"#APIkey申请地址https://bailian.console.aliyun.com/?apiKey=1
PI_KEY
= "sk-a81d6343fba847249e189d184b1f858c"


# 调用API生成分镜头数据
def generate_shots(topic):
    url
= "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"
    headers
= {
       
"Authorization": f"Bearer {DASHSCOPE_API_KEY}",
       
"Content-Type": "application/json"
   
}
    data
= {
       
"model": "qwen-plus",
       
"messages": [
           
{
               
"role": "system",
               
"content": "你是一个专业的视频分镜头脚本生成助手。请根据用户提供的剧本生成分镜头脚本json数组,每个数组元素包含分镜头画面图像文本描述提示词和文字解说。例如:[{'prompt':'分镜头文本提示词','sayword':'文字解说'}]"
           
},
           
{
               
"role": "user",
               
"content": f"请根据以下剧本生成一个短片的分镜头脚本,每个分镜头画面包含画面图像文本描述提示词和30字以内的文字解说,以JSON格式返回:{topic}"
           
}
       
],
       
"response_format": { "type": "json_object" }
   
}
    response
= requests.post(url, headers=headers, data=json.dumps(data))
   
if response.status_code == 200:
       
# 解析API返回的分镜头数据
        content
= response.json()['choices'][0]['message']['content']
       
try:
           
# 假设API返回的是合法的JSON字符串
            shots
= json.loads(content)
           
return shots
       
except json.JSONDecodeError:
           
raise Exception("API返回的分镜头数据不是合法的JSON格式")
   
else:
       
raise Exception(f"Failed to generate shots: {response.text}")
   
# 添加字.........完整代码请登录后点击上方下载按钮下载查看

网友评论0