从Java转行大模型应用,使用Python + LangChain + 大模型进行视频创作(含剪映字幕)实战案例
本文介绍一个可直接运行的视频创作实战案例一键生成完整的短视频脚本 剪映可导入字幕SRT格式 视频解说词 标题文案全程使用 LangChain 调度大模型通义千问/文心一言/DeepSeek/OpenAI 都兼容新增剪映字幕生成功能无需手动排版导入即可使用的实战案例。实战目标输入一个视频主题如Python 零基础入门自动输出视频标题爆款风格完整分镜脚本解说文案可直接配音剪映可直接导入的 SRT 字幕文件精准匹配解说词带时间轴视频发布文案环境准备1. 安装依赖pip install langchain langchain-core langchain-openai python-dotenv2. 配置大模型 API Key创建.env文件填入你的大模型密钥任选一个即可# OpenAI可选 OPENAI_API_KEY你的key OPENAI_BASE_URLhttps://api.openai.com/v1 # 通义千问阿里推荐国内使用 DASHSCOPE_API_KEY你的key # DeepSeek/其他兼容 OpenAI 格式的大模型 # OPENAI_API_KEY你的key # OPENAI_BASE_URLhttps://api.deepseek.com完整实战代码含剪映SRT字幕可直接运行import os import math from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser # 加载环境变量 load_dotenv() # 1. 初始化大模型 # 方案1使用 OpenAI # llm ChatOpenAI( # modelgpt-3.5-turbo, # temperature0.7, # 创意度0严谨1创意强 # ) # 方案2使用 通义千问国内免翻墙推荐 llm ChatOpenAI( modelqwen-turbo, api_keyos.getenv(DASHSCOPE_API_KEY), base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, temperature0.7, ) # 方案3使用 DeepSeek # llm ChatOpenAI( # modeldeepseek-chat, # api_keyos.getenv(OPENAI_API_KEY), # base_urlos.getenv(OPENAI_BASE_URL), # temperature0.7, # ) # 2. 核心工具函数生成剪映SRT字幕 def generate_srt(subtitle_lines, duration, output_file剪映字幕.srt): 生成剪映可直接导入的SRT字幕文件 :param subtitle_lines: 字幕短句列表从大模型生成的字幕文案中提取 :param duration: 视频总时长如60秒 :param output_file: SRT文件保存路径 # 解析视频总时长转为秒 total_seconds int(duration.replace(秒, ).strip()) # 计算每句字幕的时长平均分配可根据实际解说语速调整 if len(subtitle_lines) 0: print(❌ 未提取到字幕内容无法生成SRT文件) return per_line_duration total_seconds / len(subtitle_lines) # 生成SRT格式内容 srt_content for i, line in enumerate(subtitle_lines, 1): # 跳过空行 if not line.strip(): continue # 计算当前句的开始时间和结束时间格式时:分:秒,毫秒 start_seconds (i - 1) * per_line_duration end_seconds i * per_line_duration # 格式化时间剪映SRT标准格式00:00:00,000 def format_time(seconds): hours math.floor(seconds / 3600) minutes math.floor((seconds % 3600) / 60) secs math.floor(seconds % 60) ms math.floor((seconds - secs) * 1000) return f{hours:02d}:{minutes:02d}:{secs:02d},{ms:03d} start_time format_time(start_seconds) end_time format_time(end_seconds) # 拼接SRT每一段序号 时间轴 字幕内容 srt_content f{i}\n{start_time} -- {end_time}\n{line.strip()}\n\n # 保存SRT文件剪映可直接导入编码为UTF-8避免乱码 with open(output_file, w, encodingutf-8) as f: f.write(srt_content.strip()) print(f 剪映SRT字幕已生成{output_file}) print(f✅ 提示打开剪映 → 导入视频 → 点击「字幕」→ 「导入字幕」→ 选择该SRT文件即可自动匹配画面) # 3. 定义视频创作 Prompt 模板新增字幕提取要求 video_creator_prompt ChatPromptTemplate.from_messages([ (system, 你是一位专业的短视频创作专家擅长制作知识类、科普类、教程类短视频精通剪映字幕排版逻辑。 请根据用户提供的视频主题和时长严格按照以下格式输出完整内容不要多余文字确保每个模块清晰可提取 【1】爆款标题5个吸睛、短平快不超过20字 【2】视频核心定位目标观众 视频价值1-2句话 【3】完整分镜脚本时长建议 画面内容 台词台词需与解说文案一致 【4】纯解说文案可直接用于配音连贯流畅短句为主适配视频时长 【5】字幕文案短句适合视频滚动与解说文案一一对应每句不超过15字每行1句无多余标点按顺序排列 【6】发布文案适合抖音/小红书/B站带相关话题标签 重点要求【5】字幕文案必须严格对应【4】解说文案一句解说对应一句字幕无遗漏、无多余内容方便后续提取生成SRT文件。 ), (user, 视频主题{topic}视频时长{duration}) ]) # 4. 构建 LangChain 调用链 video_chain video_creator_prompt | llm | StrOutputParser() # 5. 执行视频创作整合SRT字幕生成 def create_video_script(topic: str, duration: str 60秒): print( * 60) print(f 正在生成【{topic}】视频脚本及剪映字幕...) print( * 60) # 调用链生成内容 result video_chain.invoke({ topic: topic, duration: duration }) # 保存完整脚本到文件 with open(视频创作脚本.txt, w, encodingutf-8) as f: f.write(result) # ---------------------- 提取字幕文案生成剪映SRT文件 ---------------------- # 提取【5】字幕文案部分按格式分割避免干扰 if 【5】字幕文案 in result: subtitle_part result.split(【5】字幕文案)[1].split(【6】发布文案)[0].strip() # 按换行分割得到每句字幕过滤空行 subtitle_lines [line for line in subtitle_part.split(\n) if line.strip()] # 生成SRT字幕 generate_srt(subtitle_lines, duration) else: print(❌ 未提取到字幕文案无法生成SRT字幕请检查大模型输出格式) # 打印结果 print(\n✅ 脚本生成完成) print( 完整脚本已保存到视频创作脚本.txt) print(\n * 60) print(result) print( * 60) # 6. 运行实战 if __name__ __main__: # 输入你的视频主题和时长 create_video_script( topicPython 零基础入门5分钟学会, duration60秒 # 可修改为90秒、3分钟等 )剪映字幕使用1. SRT字幕生成逻辑核心逻辑根据视频总时长将字幕短句平均分配时间轴比如60秒视频10句字幕每句6秒生成剪映标准SRT格式UTF-8编码避免乱码无需手动调整时间轴导入即可自动匹配画面。可优化如果解说语速有快有慢可修改generate_srt函数中的per_line_duration逻辑手动调整某句字幕的时长比如重点内容延长废话缩短。2. 剪映导入字幕步骤超简单打开剪映点击「开始创作」导入你制作好的视频或AI生成的视频。点击底部菜单栏的「字幕」选项然后点击右上角「导入字幕」。找到生成的「剪映字幕.srt」文件选中导入字幕会自动匹配视频时间轴显示在画面中。可手动调整字幕的字体、颜色、位置无需逐句输入节省90%的字幕排版时间。3. 常见问题解决问题1SRT导入剪映乱码 → 解决方案确保生成的SRT文件是UTF-8编码代码中已默认设置无需修改。问题2字幕时间轴不匹配 → 解决方案修改duration参数确保与实际视频时长一致或调整per_line_duration调整单句时长。问题3提取不到字幕文案 → 解决方案检查大模型输出格式确保「5】字幕文案」和「【6】发布文案」标签清晰无多余空格。运行效果新增SRT字幕运行代码后除了生成「视频创作脚本.txt」还会自动生成「剪映字幕.srt」SRT文件内容示例剪映可直接识别1 00:00:00,000 -- 00:00:06,000 Python零基础入门 2 00:00:06,000 -- 00:00:12,000 5分钟直接上手 3 00:00:12,000 -- 00:00:18,000 首先安装Python 4 00:00:18,000 -- 00:00:24,000 打开官网一键下载 ...后续字幕按顺序排列进阶扩展可选1. 字幕时间轴精准优化结合TTS配音时长自动匹配字幕时间轴无需平均分配需要新增TTS时长获取功能# 需安装pip install edge-tts import edge_tts import asyncio async def get_tts_duration(text): 获取TTS配音时长用于精准匹配字幕时间轴 communicate edge_tts.Communicate(text, zh-CN-XiaoxiaoNeural) # 获取音频时长秒 duration (await communicate.save(temp.mp3)) / 1000 os.remove(temp.mp3) # 删除临时音频 return duration # 然后在generate_srt函数中用每句解说的TTS时长替代平均时长实现精准匹配 # 具体可留言可补充完整代码2. 批量生成剪映字幕循环调用函数一次性生成多个视频的脚本和SRT字幕topics [ Python 自动化办公, LangChain 入门实战, AI大模型使用技巧 ] for idx, t in enumerate(topics, 1): create_video_script(topict, duration90秒) # 重命名SRT文件避免覆盖 os.rename(剪映字幕.srt, f剪映字幕_{idx}_{t[:6]}.srt)案例核心价值**全流程自动化**输入主题 → 一键出「脚本解说剪映字幕发布文案」无需手动排版字幕。**剪映无缝衔接**SRT字幕直接导入节省大量字幕制作时间适合批量创作短视频。**可定制化**字幕时长、格式可灵活调整适配不同语速和视频风格。**零门槛**无需懂剪映字幕排版代码自动生成新手也能快速上手。总结案例实现了「视频创作全流程自动化」重点解决了剪映字幕手动排版的痛点生成的SRT文件可直接导入剪映搭配解说文案配音后可快速完成视频制作。代码可直接运行兼容所有主流大模型可根据自己的需求修改主题、时长和字幕格式。