• 【Python音视频技术】用moviepy实现图文成片功能


    今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感,趁着下班写一篇。这里用到 python的moviepy库, 之前文章介绍过。

    大体思路:假定有4张图片,每张图片将在视频中展示2秒钟,并且图片会按照顺序循环播放,直到音频结束。

    from moviepy.efrom moviepy.editor import ImageClip, AudioFileClip, concatenate_videoclips, CompositeVideoClip
    from moviepy.audio.fx.all import audio_loop
    from PIL import Image
    import os
    
    
    def resize_images(image_files, desired_size):
        resized_images = []
        for image_file in image_files:
            # 打开一张图片文件
            with Image.open(image_file) as img:
                # 调整图片大小到目标尺寸
                img = img.resize(desired_size, Image.ANTIALIAS)
                # 将调整后的图片保存到临时文件
                temp_file = f"temp_{os.path.basename(image_file)}"
                img.save(temp_file)
                resized_images.append(temp_file)
        return resized_images
    
    
    def create_video_from_images(image_files, audio_file, output_file, fps=24, desired_size=(1280, 720)):
        # 将图片调整到目标尺寸
        resized_images = resize_images(image_files, desired_size)
    
        # 加载音频文件
        audio = AudioFileClip(audio_file)
    
        # 设置图片展示时长为2秒
        image_duration = 2
    
        # 创建单独的图片剪辑并设置展示时长
        clips = [ImageClip(img).set_duration(image_duration).set_fps(fps) for img in resized_images]
    
        # 将所有图片剪辑拼接成循环播放的一个视频剪辑
        video_clip = concatenate_videoclips(clips, method="compose").loop(duration=audio.duration)
    
        # 给视频剪辑设置音频
        final_video = video_clip.set_audio(audio)
    
        # 将结果写入输出文件
        final_video.write_videofile(output_file, codec="libx264", audio_codec="aac", fps=fps)
    
        # 清理临时文件
        for temp_file in resized_images:
            os.remove(temp_file)
    
    
    # demo:
    image_files = ['image1.jpg', 'image2.jpg', 'image3.jpg', 'image4.jpg']  # 图片文件列表
    audio_file = 'background_music.mp3'  # 音频文件
    output_file = 'output_video.mp4'  # 输出视频文件
    
    create_video_from_images(image_files, audio_file, output_file)ditor import ImageClip, AudioFileClip, concatenate_videoclips, CompositeVideoClip
    from moviepy.audio.fx.all import audio_loop
    from PIL import Image
    import os
    
    
    def resize_images(image_files, desired_size):
        resized_images = []
        for image_file in image_files:
            # 打开一张图片文件
            with Image.open(image_file) as img:
                # 调整图片大小到目标尺寸
                img = img.resize(desired_size, Image.ANTIALIAS)
                # 将调整后的图片保存到临时文件
                temp_file = f"temp_{os.path.basename(image_file)}"
                img.save(temp_file)
                resized_images.append(temp_file)
        return resized_images
    
    
    def create_video_from_images(image_files, audio_file, output_file, fps=24, desired_size=(1280, 720)):
        # 将图片调整到目标尺寸
        resized_images = resize_images(image_files, desired_size)
    
        # 加载音频文件
        audio = AudioFileClip(audio_file)
    
        # 设置图片展示时长为2秒
        image_duration = 2
    
        # 创建单独的图片剪辑并设置展示时长
        clips = [ImageClip(img).set_duration(image_duration).set_fps(fps) for img in resized_images]
    
        # 将所有图片剪辑拼接成循环播放的一个视频剪辑
        video_clip = concatenate_videoclips(clips, method="compose").loop(duration=audio.duration)
    
        # 给视频剪辑设置音频
        final_video = video_clip.set_audio(audio)
    
        # 将结果写入输出文件
        final_video.write_videofile(output_file, codec="libx264", audio_codec="aac", fps=fps)
    
        # 清理临时文件
        for temp_file in resized_images:
            os.remove(temp_file)
    
    
    # demo:
    image_files = ['image1.jpg', 'image2.jpg', 'image3.jpg', 'image4.jpg']  # 图片文件列表
    audio_file = 'background_music.mp3'  # 音频文件
    output_file = 'output_video.mp4'  # 输出视频文件
    
    create_video_from_images(image_files, audio_file, output_file)
    

    这里的图片素材采用腾讯智影生成, 音频采用suno生成。最后的效果

    相关文章:

    【Python音视频技术】玩AI视频创作引发写Python音视频技术系列文章1—视频添加字幕

    【Python音视频技术】Python音视频技术系列文章2—视频提取音频转换文字

    【Python音视频技术】Python音视频技术系列文章3—音频转换文字技术方案

    原文链接:【Python音视频技术】用moviepy实现图文成片功能

  • 相关阅读:
    【X806开发板试用】串口数据透传阿里云IOT
    缓存相关问题:雪崩、穿透、预热、更新、降级的深度解析
    社群运营怎么做,有哪些互动玩法?
    Spring Boot项目怎么对System.setProperty(key, value)设置的属性进行读取加解密
    Vue知识系列(4)每天10个小知识点
    矩阵分析与应用-16-广义逆矩阵
    Git上传新项目
    计算机基本架构-时序逻辑电路回顾
    Unity 3D视频教程
    Primavera Unifier Project Control 项目控制要点
  • 原文地址:https://blog.csdn.net/xiaoliouc/article/details/139276823