- 部分 I. Python 入门
- 第 1 章 Python 入门
- 第 2 章 Python Package Index (PyPI)
- 第 3 章 Python 模块
- 第 4 章 数据类型
- 第 5 章 数据结构
- 第 6 章 Class
- 第 7 章 Input/Output
- 第 8 章 Pipe
- 第 9 章 Library
- 9.2. 随机数
- 9.3. Python 多线程
- 9.13. syslog
- 9.5. Socket
- 9.6. subprocess
- 9.7. YAML
- 9.8. Daemon
- 9.9. python-memcached
- 9.10. Pyro - Pyro is short for PYthon Remote Objects
- 9.11. Python Imaging Library
- 9.12. getopt – Command line option parsing
- 9.14. python-subversion
- 9.15. SimpleHTTPServer
- 9.16. fuse-python.x86_64 : Python bindings for FUSE - filesystem in userspace
- 9.17. Network
- 9.18. Python-spdylay - Spdylay Python Extension Module
- 9.19. mechanize
- 9.20. Dominate
- 第 10 章 Frameworks
- 第 12 章 终端环境开发
- 部分 II. Python 数据分析
- 第 13 章 Crawler
- 第 14 章 Scrapy - Python web scraping and crawling framework
- 第 15 章 Pandas - Python Data Analysis Library
- 第 16 章 股票
- 第 17 章 数据可视化
- 部分 III. 人工智能 AI
- 第 18 章 OCR
- 第 19 章 语音处理
- 第 20 章 视频
- 第 21 章 人脸识别
- 第 22 章 自然语言处理
- 第 23 章 自动化运维
- 第 24 章 办公自动化
- 第 25 章 OpenCV
- 第 26 章 图形开发
- 第 27 章 3rdparty toolkit
- 第 29 章 实用代码
- 第 30 章 FAQ
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
20.2. MoviePy
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论