• MoviePy视频编辑


    安装和配置MoviePy

    首先,确保你已经安装了Python和MoviePy库。如果你还没有安装MoviePy,可以使用以下命令来安装:

    pip install moviepy

    安装完成后,你就可以开始使用MoviePy进行视频编辑了。但有些复杂的操作可能需要安装ImageMagick:

    ​​​​​​https://www.imagemagick.org/script/download.php#google_vignett

    以WIN10为例,我们还需要手动将ImageMagick的安装目录加入到环境变量中。或者可以直接修改已经安装好的MoviePy中的config_defaults.py:

    IMAGEMAGICK_BINARY = os.getenv('IMAGEMAGICK_BINARY', 'auto-detect')

    修改成:
    IMAGEMAGICK_BINARY = r"C:\ImageMagick-7.1.1-Q16-HDRI\magick.exe"

    需要将这个文件路径修改成你自己的安装路径。

    基本剪辑

    导入MoviePy库和视频文件

    首先,导入MoviePy库并加载你想编辑的视频文件:

    1. from moviepy.editor import VideoFileClip
    2. video = VideoFileClip('input.mp4')

    剪辑视频

    你可以使用剪辑方法来选择视频的一部分:

    1. # 剪辑从第10秒到第30秒的视频
    2. clip = video.subclip(10, 30)

    subclip 方法是 MoviePy 库中用于剪辑视频的重要方法之一。它允许你从原始视频中选择一个时间段(子剪辑)并返回一个新的 VideoClip 对象,该对象只包含所选时间段的视频内容。

    语法: 

    subclip(start_time, end_time)

    start_time和end_time以秒位单位,如果视频过长可以换算成秒,但也可以使用下面的格式:

    clip.subclip(): 截取视频全部,相当于没做处理
    clip.subclip(10): 从视频的 `第10秒` 截取到 `结尾`
    clip.subclip(10, -2): 从视频的 `第10秒` 截取到结尾的 `前两秒`
    clip.subclip((1, 35), (3, 10)): 从视频的 `第1分35秒` 截取到 `3分10秒`
    clip.subclip((1, 2, 18), (2, 1, 34)): 从视频的 `第1小时2分18秒` 截取到 `第2小时1分34秒`

    保存剪辑后的视频

    要保存剪辑后的视频,可以使用以下命令:

    clip.write_videofile('output.mp4')

    截图

    要在视频中截取一帧作为图片,可以使用以下命令:

    1. frame = video.get_frame(15) # 在第15秒截取一帧
    2. frame.save_frame('screenshot.png')

    添加文字

    你可以在视频上添加文字,使用MoviePy的TextClip类:

    1. from moviepy.editor import TextClip
    2. text = TextClip('Hello, MoviePy!', fontsize=50, color='white')
    3. text = text.set_pos('center').set_duration(5) # 在视频中心显示,并持续5秒
    4. final_video = CompositeVideoClip([video, text]) final_video.write_videofile('video_with_text.mp4')

    制作GIF

    要制作GIF,你可以选择视频的一部分并将其保存为GIF格式:

    1. clip = (video.subclip((2, 45), (2, 60)).resize(0.2))
    2. clip.write_gif("test.gif", fps=1)

    截取原视频2分45到2分60秒的片段,并将尺寸缩小至原来的20%,以1帧每秒保存成GIF文件。

    resize语法:

    resize(newsize, apply_to="everything", padding_color=None)
    • newsize:新的视频尺寸,可以是一个二元元组 (width, height),也可以是一个数字,表示新的宽度(高度会根据原始宽高比自动计算)。
    • apply_to:指定要调整尺寸的内容,可选值为 "mask", "video", "audio", "transition""everything"。默认为 "everything",表示将尺寸调整应用到视频、音频和过渡效果等所有内容。
    • padding_color:可选参数,指定在调整尺寸时,如果视频被裁剪或者填充的颜色。这应该是一个RGB元组或颜色名称。如果未指定,则默认使用黑色。

    write_gif语法:

    write_gif(filename, fps=None, program='imageio', opt='nq', loop=0, remove_temp=True, verbose=True)
    • filename:要保存的 GIF 文件的名称,包括文件扩展名(例如:"output.gif")。
    • fps:可选参数,GIF 的帧速率(帧每秒)。如果未指定,将使用原始视频剪辑的帧速率。
    • program:可选参数,用于生成 GIF 的程序。默认为 'imageio',但也可以选择 'ffmpeg'。
    • opt:可选参数,用于指定压缩选项的字符串。默认为 'nq',表示没有压缩。你可以根据需要更改这些选项,例如使用 'nq' 进行无损压缩,或者使用 'iq' 进行高质量压缩。
    • loop:可选参数,GIF 播放的循环次数。0 表示无限循环。
    • remove_temp:可选参数,如果为 True,则在生成 GIF 后删除临时文件。默认为 True
    • verbose:可选参数,如果为 True,则在生成 GIF 时显示详细信息。默认为 True

    视频合并

    如果你有多个视频文件想要合并,可以使用MoviePy的concatenate_videoclips方法:

    1. from moviepy.editor import *
    2. video1 = VideoFileClip('video1.mp4')
    3. video2 = VideoFileClip('video2.mp4')
    4. # 剪辑video1的前10秒和video2的后15秒
    5. clip1 = video1.subclip(0, 10)
    6. clip2 = video2.subclip(video2.duration - 15, video2.duration) # 合并视频
    7. final_clip = concatenate_videoclips([clip1, clip2]) # 保存合并后的视频 final_clip.write_videofile('merged_video.mp4')

    仅供参考,欢迎交流。

  • 相关阅读:
    SRE 的工作介绍
    x汽车登陆网站登陆rsa加密逆向
    基于Prometheus+Grafana搭建可视化监控服务 (一) Prometheus监控
    window隐私保护设置(win10)
    调整网络安全策略以适应不断升级的威胁形势
    C语言:数据的存储
    MC-4/11/01/400 ELAU 软件允许用户完全访问相机设置
    NISP-SO网络安全运维是什么?安全运维工程师
    IDEA 生成 javadoc
    玩机搞机---全网最详细的手机全机型 刷机教程 二
  • 原文地址:https://blog.csdn.net/JZF2050/article/details/132782442