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库并加载你想编辑的视频文件:

from moviepy.editor import VideoFileClip 

video = VideoFileClip('input.mp4')

剪辑视频

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

# 剪辑从第10秒到第30秒的视频 
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')

截图

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

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

添加文字

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

from moviepy.editor import TextClip 

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

制作GIF

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

clip = (video.subclip((2, 45), (2, 60)).resize(0.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方法:

from moviepy.editor import *

video1 = VideoFileClip('video1.mp4') 
video2 = VideoFileClip('video2.mp4') 

# 剪辑video1的前10秒和video2的后15秒 
clip1 = video1.subclip(0, 10) 
clip2 = video2.subclip(video2.duration - 15, video2.duration) # 合并视频 
final_clip = concatenate_videoclips([clip1, clip2]) # 保存合并后的视频 final_clip.write_videofile('merged_video.mp4')

仅供参考,欢迎交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lemon2050

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值