python moviepy 图文批量合成带字幕口播视频

最近在研究将图片和文本批量合成为带字幕口播视频

主要是基于python的moviepy库

python 复制代码
from generator import audio, pics, subs, video


def main():
    texts_input = 'example'
    pics_input = 'example'

    # 图片分辨率预处理
    pics.adjust(pics_input)

    # 文字转语音
    audio.text_to_audio(texts_input)

    # 语音转视频
    video.audio_to_video(texts_input, pics_input)

    # 生成字幕
    subs.download_subs(texts_input)

    # 生成字幕视频
    video.attach_subs(texts_input)


if __name__ == "__main__":
    main()

以下是核心的图片+文本转视频逻辑

python 复制代码
import json
from mutagen.mp3 import MP3
from moviepy import editor
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
import generator.pics as pics


def audio_to_video(text_input, pics_input):
    audio_filepath = './output/audios/' + text_input.replace(' ', '_') + '.mp3'
    video_filepath = './output/videos/' + text_input.replace(' ', '_') + '.mp4'
    pics_dir = './output/pics/' + pics_input.replace(' ', '_')

    list_of_images = pics.preprocess_pics(pics_dir)

    audio = MP3(audio_filepath)
    audio_length = audio.info.length
    fps = len(list_of_images) / audio_length
    
    # 生成视频
    video = editor.ImageSequenceClip(pics_dir, fps=fps)
    audio = editor.AudioFileClip(audio_filepath)
    final_video = video.set_audio(audio)

    final_video.write_videofile(video_filepath, codec="libx264", fps=10)

以下是我实现的示例项目,可参考和star一下下哈!

https://github.com/chengxs1994/text-img-generator-vedio

相关推荐
卷无止境9 小时前
LangExtract:让LLM从杂乱文本中"抠"出结构化数据的开源工具
后端·python
栈溢出的浪漫9 小时前
码界领航:Python拓界-机器学习Web跨平台
python·机器学习·跨平台·web开发·个人项目
卷无止境10 小时前
软件复杂度:那些让代码变得难以理解的东西,到底能不能量化?
后端·python
老白干12 小时前
jjwt 0.9.1 在 JDK 11+ 上的两个“坑”与完整解决方案
java·python·log4j
笨鸟先飞,勤能补拙18 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能19 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂19 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study20 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境21 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境21 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python