社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 一个快速视频剪辑编辑神器 — Moviepy

进击的Coder • 2 年前 • 347 次点击  
这是「进击的Coder」的第 445 篇技术分享
作者:Ckend
来源:Python 实用宝典

阅读本文大概需要 3 分钟。





你知道吗,用 moviepy 一行代码就能够快速剪辑视频中某个区间的片段:


clip = VideoFileClip("videoplayback.mp4").subclip(50,60)


这一段代码,能够在 3 秒内将 videoplayback.mp4 的 50 秒 -60 秒的视频片段提取出来,非常方便。


不仅如此,moviepy 还支持添加字幕、调整音量、片段链接等功能。下面看看详细的操作方法。

1.准备



开始之前,你要确保 Python 和 pip 已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细 Python 安装指南 进行安装。

(可选 1) 如果你用 Python 的目的是数据分析,可以直接安装 Anaconda:Python 数据分析与挖掘好帮手 —Anaconda,它内置了 Python 和 pip.

(可选2) 此外,推荐大家用 VSCode 编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南

请选择以下任一种方式输入命令安装依赖
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+ 空格输入 Terminal)。
3. 如果你用的是 VSCode 编辑器或 Pycharm,可以直接使用界面下方的 Terminal.

pip install moviepy


2.视频剪辑



剪辑个视频,多大点事,比起下载 PR,用 Python 写 3 行代码,3 秒剪辑不香吗?


from moviepy.editor import*


# 剪辑50-60秒的音乐 00:00:50 - 00:00:60
video =CompositeVideoClip([VideoFileClip("videoplayback.mp4").subclip(50,60)])


# 写入剪辑完成的音乐
video.write_videofile("done.mp4")

3.视频拼接



“哦?Python?哼,那你肯定很难进行拼接工作吧,PR 多方便,拖拽即可完成拼接。”


那你可真是太小看 Python 了,moviepy 几行代码随随便便就能拼接许多片段:




    
from moviepy.editor importVideoFileClip, concatenate_videoclips

clip1 =VideoFileClip("myvideo.mp4")

# 结合剪辑,你甚至能够完全自动化剪辑拼接视频的操作
clip2 =VideoFileClip("myvideo2.mp4").subclip(50,60)
clip3 =VideoFileClip("myvideo3.mp4")

final_clip = concatenate_videoclips([clip1,clip2,clip3])
final_clip.write_videofile("my_concatenation.mp4")


结合剪辑,你甚至能够完全自动化剪辑拼接视频的操作。


4.逐帧变化



“那你能完成针对每一帧图像的快速图像处理吗?PR 可是做得到的哦”


那当然可以,教你如何反转视频每一帧的绿色和蓝色通道:


from moviepy.editor importVideoFileClip

my_clip =VideoFileClip("videoplayback.mp4")


def scroll(get_frame, t):
    """
    处理每一帧图像
    """


    frame = get_frame(t)
    frame_region = frame[:,:,[0,2,1]]
    return frame_region


modifiedClip = my_clip.fl(scroll)

modifiedClip.write_videofile("test.mp4")


5.导出GIF



哇,听起来好像挺牛逼的,那用来导出到 GIF 吗?


当然可以:


from moviepy.editor import*

# 剪辑50-60秒的音乐 00:00:50 - 00:00:60
video = CompositeVideoClip([VideoFileClip("videoplayback.mp4").subclip(50,60)])

my_clip.write_gif('test.gif', fps=12)


怎么样,moviepy 的这些技巧你学会了吗?它还有更多的功能和技巧,详情请见官方文档哦:
https://zulko.github.io/moviepy/

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。


看完记得关注@进击的Coder
及时收看更多好文
↓↓↓




好文和朋友一起看~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/116039
 
347 次点击