用AI制作历史解说视频:GPT + MidJourney + PiKa + FunSound + 剪映

news/2024/9/24 3:28:59/

1. 项目介绍

最近某站看到一个看到利用AI创作视频解说,成品画面很酷炫。对此以初学者视角进行复现,创意来源:用AI制作历史解说视频
在这里插入图片描述


2. 开始创作

我们参照原作者展示的内容,对古代人物屈原来生成解说视频。

2.1 故事脚本+分镜 【由GPT-4o支持】

2.1.1 生成分镜

GPT对话:
以屈原人物解说为主题,写一个具有传奇色彩和反差感的人物传记故事脚本,一共涵盖10个分镜(包含画面和旁白)
在这里插入图片描述

2.1.2 细化内容(面向文生图)

GPT对话:
依次对十个分镜生成画面描述,用于midjourney绘图,并翻译成英文
在这里插入图片描述

初步得到优质的画面描述英文版

2.2 文生图【由MidJourney支持】

输入英文描述,
/Imagine promot[描述]
在这里插入图片描述
这里得到场景1生成的图片
在这里插入图片描述
接下来我们需要根据第一张图片确定人物形象风格,来保证后续人物的一致性,获取该图片的链接用于后续场景图片生成的参数在这里插入图片描述
对于后续图片的人物一致性,MidJourney 提供 ”–cref <url>“ 参数进行人物描绘参考
在这里插入图片描述
挑选了10张
在这里插入图片描述

2.3 图生视频【由PiKa支持】

上传图片到pika,Strength of motion 设置为2,增加动感
在这里插入图片描述
效果如下请添加图片描述
全部视频生成完毕,开始剪辑
在这里插入图片描述

2.4 语音旁白【由Funsound支持】

这里为每个旁边生成语音
在这里插入图片描述
在这里插入图片描述

2.5 语音视频长度对齐

因为生成的视频和生成的音频长度不对等,这里我们需要保持音频长度不变,对视频帧率进行调整,长度一致后合成,顺便添加中文字幕。
参考我另一篇博客 音视频对齐,这里我给出python批量处理脚本
在这里插入图片描述

import os
from av_alignment import sync_audio_video_add_subtitledef process(audio_dir,video_dir,text_file,output_dir,output_list_file,font_path="./NotoSansCJKsc-Regular.ttf"):if not os.path.exists(output_dir):os.makedirs(output_dir)if os.path.exists(output_list_file):os.remove(output_list_file)audio_list = os.listdir(audio_dir)video_list = os.listdir(video_dir)text_list = open(text_file,'rt',encoding='utf-8').readlines()audio_list.sort()video_list.sort()i = 1f = open(output_list_file,'a+')for audio_file,video_file,text in zip(audio_list,video_list,text_list):audio_file = os.path.join(audio_dir,audio_file)video_file = os.path.join(video_dir,video_file)text = text.strip()out_file = '%s/%08d.mp4'%(output_dir,i)print("audio_file:",audio_file)print("video_file:",video_file)print("text:",text)sync_audio_video_add_subtitle(audio_path=audio_file,video_path=video_file,subtitle_text=text,output_path=out_file,font_path=font_path,font_size=30, # 设置字体大小font_color=(255, 255, 255), # 设置字体颜色subtitle_bottom_margin=80)i += 1print(f"{out_file}",file=f)f.close()if __name__ == "__main__":audio_dir = r"C:\Users\60568\Pictures\create\屈原\mp3"video_dir = r"C:\Users\60568\Pictures\create\屈原\mp4"text_file = r"C:\Users\60568\Pictures\create\屈原\subtitle.txt"output_dir = "./sync"output_list_file="./sync.txt"output_video_file = "./output.mp4"# 音视频对齐process(audio_dir,video_dir,text_file,output_dir=output_dir,output_list_file=output_list_file)

2.6 视频融合润色【由剪映支持】

将所有片段对齐好后,在剪映上进行对齐并配上bgm,然后导出完整视频
在这里插入图片描述

3. 成品展示

写到这终于完成了第一个ai视频的创作,比较粗糙,来看看成品吧:一分钟了解历史人物屈原
欢迎大家提出建议,感谢大家关注,博主会持续更新有趣的技术内容。

4.参考

https://www.bilibili.com/video/BV1im411m7UF/?spm_id_from=333.880.my_history.page.click&vd_source=3f579fa4291151f1bdf85bf803ae2d3f

https://mmmnote.com/article/7e8/03/article-ed3f6a082982ceb0.shtml

https://www.funsound.cn

https://blog.csdn.net/Ephemeroptera/article/details/139553597?spm=1001.2014.3001.5502


http://www.ppmy.cn/news/1468732.html

相关文章

融云:应用出海新增长引擎,GPT-4o 后的 AI 创新与用户运营

近日&#xff0c;融云与 TikTok、维卓联合在京举办了“十年出海&#xff0c;遇上 AI”私享会。 会上&#xff0c;融云解决方案架构师于洪达带来了《应用出海新增长引擎&#xff0c;AI 创新与用户精细化运营》主题分享&#xff0c;探讨在 AI 技术大潮下应用出海通过创新运营方式…

ITIL简介重要组成部分

ITIL简介&重要组成部分 ITIL&#xff08;Information Technology Infrastructure Library&#xff09;是一个IT服务管理的最佳实践框架&#xff0c;通过服务战略、服务设计、服务过渡、服务运营和持续服务改进五个核心模块&#xff0c;帮助组织优化IT服务流程&#xff0c;…

Java从入门到放弃

线程池的主要作用 线程池的设计主要是为了管理线程&#xff0c;为了让用户不需要再关系线程的创建和销毁&#xff0c;只需要使用线程池中的线程即可。 同时线程池的出现也为性能的提升做出了很多贡献&#xff1a; 降低了资源的消耗&#xff1a;不会频繁的创建、销毁线程&…

mac node版本切换 nvm install nvm ls-remote N/A问题

mac 使用nvm 切换node版本失败或者 nvm install &nvm ls-remote N/A问题 一、出现情况 输入 nvm install v16.18.0输出结果 Version 16.18.0 not found try nvm is-remote•to browse available versions.输入 nvm ls-remote输出结果 N/A二、原因分析 1. 镜像包获取…

定个小目标之刷LeetCode热题(13)

今天来看看这道题&#xff0c;介绍两种解法 第一种动态规划&#xff0c;代码如下 class Solution {public int maxSubArray(int[] nums) {int pre 0, maxAns nums[0];for (int x : nums) {// 计算当前最大前缀和pre Math.max(pre x, x);// 更新最大前缀和maxAns Math.ma…

构建高效爬虫系统:设计思路与案例分析

构建高效爬虫系统&#xff1a;设计思路与案例分析 引言 在信息爆炸的数字时代&#xff0c;爬虫技术成为获取网络数据的重要手段。一个优秀的爬虫系统不仅要高效稳定&#xff0c;还需具备良好的扩展性和健壮性。本文将探讨爬虫系统的常见模块结构&#xff0c;评估项目复杂性的…

matlab演示银河系转动动画

代码 function GalaxyRotationSimulation()% 参数设置num_stars 1000; % 恒星数量galaxy_radius 1; % 银河系半径rotation_speed 0.05; % 旋转速度% 生成银河系中的恒星分布theta 2 * pi * rand(num_stars, 1); % 角度r galaxy_radius * sqrt(rand(num_stars, 1)); % 半径…

关于烫烫烫和屯屯屯

微较的msvc编译器&#xff0c;调试模式下为了方便检测内存的非法访问&#xff0c;对于不同的内存做了初始化&#xff0c; 未初始化栈&#xff1a; 0xCCCCCCCC 未初始化堆&#xff1a; 0xCDCDCDCD 已释放的堆&#xff1a; 0xDDDDDDDD 0xCCCC解释为GB2312字符即是烫&#xff…