返回介绍

20.2. MoviePy

发布于 2024-02-10 15:26:30 字数 3609 浏览 0 评论 0 收藏 0

20.2. MoviePy

pip install moviepy

20.2.1. 合成视频

clip1 = VideoFileClip("test1.mp4")
clip2 = VideoFileClip("test2.mp4")
clip3 = VideoFileClip("test3.mp4")

video = CompositeVideoClip([clip1,clip2,clip3],size=(1920, 1080))
video.write_videofile("video.mp4")				
from moviepy.editor import VideoFileClip, concatenate_videoclips
# 重新设置视频大小
clip1 = VideoFileClip("chip1.mp4").resize((1920, 1080)) 
# 剪切指定时间片段(单位秒)
clip2 = VideoFileClip("chip2.mp4").subclip(50,60) 
# 剪切持续时间(单位秒)
clip3 = VideoFileClip("chip3.mp4").set_duration(5) 
# 按顺序拼接视频
final_clip = concatenate_videoclips([clip1,clip2,clip3])
final_clip.write_videofile("video.mp4")			

20.2.2. 提取视频中的音频

#coding=utf-8
import moviepy.editor as mov

video = mov.VideoFileClip('test.mp4')
audio = video.audio
audio.write_audiofile('test.wav')		
neo@MacBook-Pro-Neo ~/workspace/python/video % python3 audio.py 
MoviePy - Writing audio in test.wav
MoviePy - Done.           
                                                                                                                                   
neo@MacBook-Pro-Neo ~/workspace/python/video % ls *.wav
test.wav

20.2.3. 加字幕

brew install ImageMagick			

查看可用字体

from moviepy.editor import TextClip
print ( TextClip.list("font") )		

运行结果

neo@MacBook-Pro-Neo ~/workspace/python/video % /usr/bin/python3 /Users/neo/workspace/python/video/font.py
['AvantGarde-Book', 'AvantGarde-BookOblique', 'AvantGarde-Demi', 'AvantGarde-DemiOblique', 'Bookman-Demi', 'Bookman-DemiItalic', 'Bookman-Light', 'Bookman-LightItalic', 'Courier', 'Courier-Bold', 'Courier-BoldOblique', 'Courier-Oblique', 'fixed', 'Helvetica', 'Helvetica-Bold', 'Helvetica-BoldOblique', 'Helvetica-Narrow', 'Helvetica-Narrow-Bold', 'Helvetica-Narrow-BoldOblique', 'Helvetica-Narrow-Oblique', 'Helvetica-Oblique', 'NewCenturySchlbk-Bold', 'NewCenturySchlbk-BoldItalic', 'NewCenturySchlbk-Italic', 'NewCenturySchlbk-Roman', 'Palatino-Bold', 'Palatino-BoldItalic', 'Palatino-Italic', 'Palatino-Roman', 'Symbol', 'Times-Bold', 'Times-BoldItalic', 'Times-Italic', 'Times-Roman']			

指定字体路径

from moviepy.editor import TextClip
font_path = './font/heimi.ttf'
txtClip = TextClip('《Netkiller Python 手札》',color='white', font=font_path,kerning = 5, fontsize=100)			

苹果电脑的字体安装在 /System/Library/Fonts/ 目录中。

from moviepy.editor import *

video = VideoFileClip("test.mp4").subclip(50,60)

# Make the text. Many more options are available.
txt_clip = ( TextClip("《Netkiller Python 手札》",font="/System/Library/Fonts/PingFang.ttc", fontsize=70,color='white')
             .set_position('center')
             .set_duration(10) )

result = CompositeVideoClip([video, txt_clip]) # Overlay text on video
result.write_videofile("test.webm",fps=25) # Many options...

20.2.4. 音量大小调节

VolumeMultiple = 0.8
clip = clip.volumex(VolumeMultiple)			

20.2.5. 音频合成剪辑

# 对白
dialogue1 = AudioFileClip("voice/tom.mp3")
dialogue2 = AudioFileClip("voice/jerry.mp3")

# 制作混合音轨
concat = concatenate_audioclips([dialogue1, dialogue2])
compo = CompositeAudioClip([dialogue1.volumex(1.2), # 音量设置大小
                            dialogue2.set_start(5)])# 音频起始时间				

20.2.6. 视频中设置背景音乐

bgm = AudioFileClip("music/paino.mp3")			
videoclip = videoclip.set_audio(bgm)			

20.2.7. 画面截图

# 保存视频第一帧的画面
clip.save_frame("Screenshot.jpeg") 

# 保存视频第10秒的画面
clip.save_frame("Screenshot.png", t=10) 

20.2.8. 


                  
                  
                

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文