[AI相关]生成视频-第一个项目,20k星开源MoneyPrinterTurbo

ops/2025/2/23 11:58:22/

还是之前文章介绍过地几个工具之一

[AI相关]各平台AI使用对比,包含大模型学习,生成视频等-CSDN博客

问问AI其结构,框架等,虽然不太完全对,但真地DeepSeek已经回答得很好了:

重点关注就两个类

  • video_engine和(实际上是video.py)
  • ai_generation(ai.py)

下面这个图,AI-DeepSeek直接给出得的是目录名,这就肯定不可能对的了,软件是不停迭代的,肯定会改名,也会在半年,一年内大幅度更新,目录名肯定不会“正确的”;但是整体框架(AI对框架的理解是非常好的,对我问的问题的立即也是非常好,这就。。。。。。。。非常恐怖了)

video.py

task.py 合成视频

# task.py
def generate_final_videos(task_id, params, downloaded_videos, audio_file, subtitle_path
):final_video_paths = []combined_video_paths = []video_concat_mode = (params.video_concat_mode if params.video_count == 1 else VideoConcatMode.random)_progress = 50for i in range(params.video_count):index = i + 1combined_video_path = path.join(utils.task_dir(task_id), f"combined-{index}.mp4")logger.info(f"\n\n## combining video: {index} => {combined_video_path}")video.combine_videos(combined_video_path=combined_video_path,video_paths=downloaded_videos,audio_file=audio_file,video_aspect=params.video_aspect,video_concat_mode=video_concat_mode,max_clip_duration=params.video_clip_duration,threads=params.n_threads,)

最终还是回到 video.py

video.py 生成视频

def preprocess_video(materials: List[MaterialInfo], clip_duration=4):for material in materials:if not material.url:continueext = utils.parse_extension(material.url)try:clip = VideoFileClip(material.url)except Exception:clip = ImageClip(material.url)width = clip.size[0]height = clip.size[1]if width < 480 or height < 480:logger.warning(f"video is too small, width: {width}, height: {height}")continue

python fileClip库

material.py

def download_videos(task_id: str,search_terms: List[str],source: str = "pexels",video_aspect: VideoAspect = VideoAspect.portrait,video_contact_mode: VideoConcatMode = VideoConcatMode.random,audio_duration: float = 0.0,max_clip_duration: int = 5,
) -> List[str]:valid_video_items = []valid_video_urls = []found_duration = 0.0search_videos = search_videos_pexelsif source == "pixabay":search_videos = search_videos_pixabayfor search_term in search_terms:video_items = search_videos(search_term=search_term,minimum_duration=max_clip_duration,video_aspect=video_aspect,)logger.info(f"found {len(video_items)} videos for '{search_term}'")for item in video_items:if item.url not in valid_video_urls:valid_video_items.append(item)valid_video_urls.append(item.url)found_duration += item.durationlogger.info(f"found total videos: {len(valid_video_items)}, required duration: {audio_duration} seconds, found duration: {found_duration} seconds")

logger 打印输出 

ai

《AI识别文字,视频稿部分》没写完

缺点?

基本上只是利用了pelex 等网站的视频搜索功能

(可以想象,是很传统的,标签tag管理,设置都没有什么多属性,多维度等科学的数据管理的)

然后,把搜索到的视频,胡乱拼凑

甚至都没有一点视频分析,视频AI自动生成地过程

整个项目地结构就是

(优点就是很简单,我这个0基础地门外汉,2个小时就把这个项目框架看透了)

1.基础框架steamlts

2.加上一点点功能,如互联网搜索,加上视频合成

3.最后辅佐上,最新人工智能AI-API地计息

4.当然,最后Python是一个很好的胶水作用,把各个功能有机地粘连在一起了


http://www.ppmy.cn/ops/160757.html

相关文章

gsplat 抗锯齿

关键代码 无论时候开启抗锯齿&#xff0c;都会进行二维膨胀&#xff1a; template <typename T> inline __device__ T add_blur(const T eps2d, mat2<T> &covar, T &compensation) {T det_orig covar[0][0] * covar[1][1] - covar[0][1] * covar[1][0];…

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(一)

项目包含5个模块 1.首页 (聊天主页) 2.注册 3.登录 4.个人资料 5.设置主题 一、配置开发环境 建立项目文件夹 mkdir chat-project cd chat-project mkdir server && mkdir webcd server npm init cd web npm create vitelatest 创建前端项目时我们选择javascrip…

Docker下的Elastic search

一、安装 &#xff08;一&#xff09;Elastic search 1.创建配置文件 &#xff1a;我是在win系统中&#xff0c;创建文件【G:\dockermount\es\elasticsearch.yml】 添加【http.host: 0.0.0.0】 2. 拉取镜像&#xff1a;docker pull elasticsearch 3. 创建容器(注意我挂载的…

当 OpenAI 不再 open,DeepSeek 如何掀起 AI 开源革命?

开源与闭源的路线之争成为了行业瞩目的焦点&#xff0c;DeepSeek掀起的 AI 开源风暴&#xff01; 一、硅谷“斯普特尼克时刻” 1957年&#xff0c;苏联将人类首颗人造卫星“斯普特尼克”送上太空&#xff0c;美国举国震动。 这颗“篮球”般的卫星&#xff0c;刺痛了自诩科技霸…

【开放词汇分割】Image Segmentation Using Text and Image Prompts

论文链接&#xff1a;[2112.10003] Image Segmentation Using Text and Image Prompts 代码链接&#xff1a;GitHub - timojl/clipseg: This repository contains the code of the CVPR 2022 paper "Image Segmentation Using Text and Image Prompts". 作者&#…

如何在 React 中测试高阶组件?

在 React 中测试高阶组件可以采用多种策略&#xff0c;以下是常见的测试方法&#xff1a; 1. 测试高阶组件返回的组件 高阶组件本身是一个函数&#xff0c;它返回一个新的组件。因此&#xff0c;可以通过测试这个返回的组件来间接测试高阶组件的功能。通常使用 Jest 作为测试…

碳基生物的悲歌-DeepSeek思考实现Linux动态库递归收集工具

这是碳基生命的悲歌&#xff0c;还是地球文明的拐点&#xff1f; 今天因为复杂的Linux so 依赖问题&#xff0c;想写一个递归ldd收集所有依赖的工具。抱着试试看的态度&#xff0c;问了DeepSeek&#xff0c;经过5分钟的思考&#xff0c;给出的脚本一次运行通过&#xff0c;我的…

深入浅出机器学习:概念、算法与实践

目录 引言 机器学习的基本概念 什么是机器学习 机器学习的基本要素 机器学习的主要类型 监督学习&#xff08;Supervised Learning&#xff09; 无监督学习&#xff08;Unsupervised Learning&#xff09; 强化学习&#xff08;Reinforcement Learning&#xff09; 机器…