当前位置: 首页 > news >正文

python moviepy 自动化音视频处理实践

MoviePy是一个用于视频编辑的Python库。它提供了一种简单且直观的方式来处理视频文件,包括剪辑、合并、裁剪、添加文本、添加音频等操作。使用MoviePy,你可以通过编写Python代码来创建和编辑视频,而无需使用复杂的视频编辑软件。

MoviePy建立在另一个库Pygame和软件MoviePy Editor的基础上,它使用了众多其他功能强大的库,如Numpy和ImageMagick。它支持多种视频格式,并且可以与其他Python库(如Pillow和OpenCV)进行集成,以进一步扩展其功能。

MoviePy的主要特点包括:

  • 基本的视频剪辑操作,如剪切、拼接、裁剪、旋转等。
  • 添加文本、标题和字幕到视频中。
  • 添加音频轨道、合并音频和视频。
  • 对视频进行转码和压缩。
  • 支持多种视频格式,如MP4、AVI、GIF等。
  • 可以在Jupyter Notebook中进行交互式视频编辑。

总之,MoviePy是一个功能强大且易于使用的Python库,适用于处理和编辑视频文件。你可以使用它来创建自定义的视频编辑工具,制作动画,添加效果以及进行各种视频处理操作。


环境安装

brew install imagemagick
brew install ffmpeg

中文支持

安装下载中文字体

https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf

在使用MoviePy库的TextClip类创建文本剪辑时,如果要支持中文,需要确保以下两点:

1. 字体文件:选择一个包含中文字体的字体文件(.ttf格式),并将其下载到本地。可以从互联网上找到一些免费的中文字体,例如"SimHei.ttf"、"SimSun.ttf"等。

2. 字体设置:在创建TextClip对象时,通过font参数指定所选中文字体的路径,并设置合适的字体大小、颜色等属性。

下面是一个示例代码,演示如何使用TextClip创建支持中文的文本剪辑:

from moviepy.editor import *# 设置中文字体路径
font_path = "/path/to/your/font/SimHei.ttf"# 创建文本剪辑
text = "你好,世界!"
text_clip = TextClip(text, fontsize=50, color='white', font=font_path)# 设置视频参数
duration = 5  # 视频时长(秒)
fps = 25  # 帧率# 创建视频剪辑
video = CompositeVideoClip([text_clip], size=(1920, 1080)).set_duration(duration)# 保存视频
video.write_videofile("output.mp4", fps=fps)

在上述代码中,需要将`font_path`变量替换为你下载的中文字体文件的实际路径。然后,通过设置`fontsize`、`color`等参数来自定义文本剪辑的样式。

请注意,为了确保中文字符正确显示,字体文件的路径应使用绝对路径,并且需要将字体文件的格式设置为.ttf。此外,还可以根据需要调整视频的大小、时长和帧率等参数。

通过以上步骤,你应该能够创建一个支持中文的文本剪辑。

API

  • Clip 剪辑
    • clip 剪辑
  • Classes of Video Clips 视频剪辑的类型
    • VideoClip 视频剪辑
      • VideoFileClip 视频文件剪辑
      • ImageClip 图片剪辑
      • ColorClip 颜色剪辑
      • TextClip 文字剪辑
      • CompositeVideoClip 合成视频剪辑
  • AudioClip 音频剪辑
    • AudioClip 音频剪辑
    • AudioFileClip 音频文件剪辑
    • CompositeAudioClip 合成视频剪辑

生成视频

from moviepy.editor import *# 1. 创建一个空白的视频片段
duration = 5  # 视频时长(秒)
width, height = 640, 480  # 视频分辨率
fps = 30  # 帧率
background_color = (255, 255, 255)  # 背景颜色(RGB)
video = ColorClip((width, height), background_color, duration=duration)# 2. 添加文字
text = TextClip("Hello, World!", fontsize=50, color='black', size=(width, height))
text = text.set_position(('center', 'center')).set_duration(duration)# 3. 添加图片
image = ImageClip("path/to/image.jpg")
image = image.set_position(('center', 'center')).set_duration(duration)
video = CompositeVideoClip([video, image, text])# 4. 设置视频参数
video = video.set_fps(fps)# 5. 保存视频
output_path = "output.mp4"
video.write_videofile(output_path, codec='libx264')

上述代码的步骤如下:

  1. 创建一个空白的视频片段,指定时长、分辨率和背景颜色。
  2. 创建一个文字片段,设置文字内容、字体大小、颜色和位置,并指定持续时间。
  3. 创建一个图片片段,加载指定的图片文件,设置位置和持续时间。
  4. 设置视频的帧率。
  5. 将文字片段和图片片段合成到空白视频片段中。
  6. 保存合成后的视频到指定路径。

请确保将代码中的"path/to/image.jpg"替换为你要使用的图片的实际路径,并指定输出视频的路径。

运行代码后,将生成一个包含文字和图片的视频文件,并保存在指定的输出路径output.mp4中。你可以根据需要调整视频的时长、分辨率、文字内容、字体样式、图片位置等参数。

提取音频

def fetch_audio():video = VideoFileClip("/Users/youfu/Movies/output1.mp4")audio = video.audio  # 取出聲音audio.write_audiofile("output1.mp3")         # 輸出聲音為 mp3

更多优秀文章和工具请移步个人博客

无心插柳 - 三尺微命,一介书生。而浮生若梦,为欢几何?

http://www.lryc.cn/news/109943.html

相关文章:

  • 聊聊混合动力汽车和纯电骑车的优势和劣势
  • 算法训练Day39|62.不同路径 ● 63. 不同路径 II
  • react中hooks分享
  • LeetCode1207. 独一无二的出现次数
  • 【maven】构建项目前clean和不clean的区别
  • Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer
  • 从零开始理解Linux中断架构(24)软中断核心函数__do_softirq
  • 【云原生】Kubernetes中deployment是什么?
  • sk_buff操作函数学习
  • conda create时候出现JSONDecoderError解决方法
  • Electron 工具进程utilityProcess 使用中遇到的坑点汇集
  • JdbcTemplate
  • PROFINET转TCP/IP网关profinet网线接头接法
  • 【FPGA IP系列】FIFO的通俗理解
  • Kylin v10基于cephadm工具离线部署ceph分布式存储
  • 框架的前置学习-反射
  • 【使用bat脚本实现批量创建文件夹、批量复制文件至对应文件夹中】
  • 面向视频会议场景的 H.266/VVC 码率控制算法研究
  • 【网络基础实战之路】设计网络划分的实战详解
  • MacBook触控板窗口管理 Swish for Mac
  • VS开发Qt程序,无法打印QDebug调试信息,VS进行Qt开发时Qt Designer无法使用“转到槽”选项
  • MySQL操作命令详解:增删改查
  • MySQL字段类型与存储空间的关系
  • 红船元宇宙 上海布袋除尘器后一家太平洋百货月底停业
  • vue 图片回显标签
  • 《向量数据库指南》——使用SQuAD 数据集演示Faiss 功能
  • java多线程并发面试题总结(史上最全40道)
  • IDEA强大的VisualGC插件
  • 桐乡上元教育室内设计培训班-CAD学习
  • h5浏览pdf文件