改变影片尺寸、旋转翻转
这篇文章会介绍使用 Python 的 moviepy 第三方函数库,改变影片的长宽尺寸、裁切出指定大小的影片,以及将影片套用旋转、左右翻转、上下翻转的效果。
快速导览:
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
安装 moviepy
输入下列指令安装 moviepy,根据个人环境使用 pip 或 pip3。
!pip install moviepy
由于影片转档会使用 ffmpeg,因此也要安装 ffmpeg ( 影片存档常见错误“TypeError: must be real number, not NoneType”往往都是 ffmpeg 没有安装导致 ),根据个人环境使用 pip 或 pip3,Anaconda Jupyter 可以使用 conda install。
!pip install ffmpeg
改变影片尺寸
加载 moviepy 读取影片后,使用 resize 方法,参数使用 tuple 格式填入长度和宽度,就能改变影片的尺寸。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
video = VideoFileClip("oxxostudio.mp4") # 讀取影片
output = video.resize((480,360)) # 改變尺寸
output.write_videofile("output.mp4", fps=30, temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
print('ok')
如果不确定影片的长宽比例,也可以单独指定宽度 width 或高度 height,就会根据比例,自动计算出另外的宽度或高度。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
video = VideoFileClip("oxxostudio.mp4")
output = video.resize(width=480) # 改變尺寸,設定寬度改變為 480
output.write_videofile("output.mp4", fps=30, temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
print('ok')
裁切出指定的尺寸
加载 moviepy.video.fx.all 的特效模组,使用 moviepy 读取影片后,使用 crop 方法中可以在影片中裁切出特定区域 ( 更多特效方法参考:moviepy.video.fx (vfx) ),并将这个区域输出成为新的影片。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
from moviepy.video.fx.all import *
video = VideoFileClip("oxxostudio.mp4")
output_1 = crop(video, x1=10, y1=10, width=50, height=50) # 方法 1,指定左上 (x1, y1) 座標和寬高
output_2 = crop(video, x1=10, y1=10, x2=50, y2=50) # 方法 2,指定左上 (x1, y1) 座標和右下 ( x2, y2 )座標
output_3 = crop(video, x1=10, width=100) # 方法 3,指定左上 x1 座標和寬度,就會自動採用 y1=0 和影片高度
output_1.write_videofile("output.mp4", fps=30, temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
print('ok')
旋转影片
使用 rotate 方法,可以将影片旋转到指定的角度,如果不是 90、-90、180、-180 之类的数值,空白的区域会变成黑色。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
video = VideoFileClip("oxxostudio.mp4")
output = video.rotate(90) # 影片旋轉 90 度
output.write_videofile("output.mp4", fps=30, temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
print('ok')
翻转影片
加载 moviepy.video.fx.all 的特效模组,使用 moviepy 读取影片后,使用 fx 方法中的 mirror_x 可以将影片水平翻转,mirror_y 可以将影片垂直翻转 ( 更多特效方法参考:moviepy.video.fx (vfx) )。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
from moviepy.video.fx.all import *
video = VideoFileClip("oxxostudio.mp4")
output_x = mirror_x(video) # 左右翻轉
output_y = mirror_y(video) # 垂直翻轉
output_x.write_videofile("output_x.mp4", fps=30, temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
output_y.write_videofile("output_y.mp4", fps=30, temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
print('ok')
微信扫码关注
抖音扫码关注