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}") # 添加字幕到视频 def add_subtitle_to_video(video_file, subtitle_text, output_file): video_clip = VideoFileClip(video_file) # 创建字幕 subtitle = TextClip( subtitle_text, fontsize=34, color='white', font='SimHei', stroke_color='black', stroke_width=1, method='caption', size=(video_clip.size[0], 60), align='center' # 字幕高度为60px ) # 设置字幕位置(底部居中) subtitle = subtitle.set_position(('center', video_clip.size[1] - 80)).set_duration(video_clip.duration) # 合成视频和字幕 final_clip = CompositeVideoClip([video_clip, subtitle]) final_clip.write_videofile(output_file, codec="libx264") print(f"字幕已添加到视频: {output_file}") # 调用API生成故事脚本 def generate_story(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": "你是一个专业的编剧,请根据用户提供的主题编写剧本,字数300字。" }, { "role": "user", "content": f"请根据以下主题生成一个短片的剧本,{topic}" } ] } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: # 返回的剧本数据 content = response.json()['choices'][0]['message']['content'] return content else: raise Exception(f"Failed to generate story: {response.text}") # 生成短视频任务 def generate_video(prompt, size): url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis" headers = { "Authorization": f"Bearer {DASHSCOPE_API_KEY}", "Content-Type": "application/json".........完整代码请登录后点击上方下载按钮下载查看
网友评论0