• 使用python库moviepy完成视频剪辑


    1.关于moviepy和原理

    moviepy事github上面的一个开源项目,地址是:GitHub - Zulko/moviepy: Video editing with Python

    官方文档地址:

    User Guide — MoviePy 1.0.2 documentation

    中文版文档可参考:

    MoviePy中文手册 — moviepy-cn 文档

    底层是调用其他开源的视频、图片等开源软件,操作视频使用的ffmpeg,地址为:

    https://github.com/FFmpeg/FFmpeg

    操作图片使用ImageMagick,地址为:

    https://github.com/ImageMagick/ImageMagick

    2.windows上安装

    a.下载和安装FFmpeg,地址为:Download FFmpeg ,安装完成后设置环境变量

    b.下载和安装ImageMagick,地址为:ImageMagick – Download

    c.安装moviepy,使用命令 pip install moviepy

    d.修改 moviepy/config_defaults.py 中的IMAGEMAGICK_BINARY的值为本地magic.exe的绝对路径

    3.实操和代码示例

    1. from moviepy.editor import *
    2. inPath = r'E:\songhq\video\car_concatenate.mp4'
    3. outPath = r'E:\songhq\video\car_concatenate_word.mp4'
    4. clip = VideoFileClip(inPath)
    5. print(TextClip.list('font'))
    6. # 添加文本
    7. text_clip = TextClip("端午节六折大甩卖!", fontsize=70, color="red", font='simfang.ttf')
    8. text_clip = text_clip.set_position((800, 50)).set_duration(3)
    9. final_clip = CompositeVideoClip([clip, text_clip])
    10. final_clip.write_videofile(outPath)
    11. if __name__ == '__main__':
    12. # processors.reverse_video(r'E:\songhq\video\login.mp4',r'E:\songhq\video\aa.mp4')
    13. # clip = VideoFileClip(r'E:\songhq\video\login.mp4').rotate(180)
    14. # clip.write_videofile(r'E:\songhq\video\login_180.mp4')
    15. # font = TextClip.list('font')
    16. # for a in font:
    17. # print("字体" + a)
    18. inputPath = r'E:\songhq\video\login.mp4'
    19. inputPath2 = r'E:\songhq\video\video.mp4'
    20. outPath = r'E:\songhq\video\login_hebing.mp4'
    21. musicPath = r'E:\songhq\video\追光者.mp3'
    22. start_time = 0
    23. end_time = 7
    24. video = VideoFileClip(inputPath)
    25. video2 = VideoFileClip(inputPath2)
    26. # 对视频进行剪辑
    27. clipped_video = video.subclip(start_time, end_time)
    28. video2 = video2.subclip(0, 3)
    29. final_clip = concatenate_videoclips([clipped_video, video2])
    30. # 添加文字
    31. # txtclip = TextClip(inf, font='仿宋_GB2312.ttf', fontsize=18, color='blue', bg_color='white', transparent=True).set_duration(30).resize((clip.size[0], clip.size[1] * 2)).set_fps(clip.fps)
    32. text = TextClip("MyHolidays", fontsize=90, color='white', font='simfang.ttf')
    33. # 插入图片
    34. text = text.set_position('center').set_duration(5)
    35. # 添加音乐 .subclip(0, 7) 可以截片段
    36. audio = AudioFileClip(musicPath).subclip(40, 50)
    37. # 将文字和音乐添加到视频中
    38. final_video = CompositeVideoClip([final_clip, text])
    39. final_video = final_video.set_audio(audio)
    40. final_video.write_videofile(outPath)
    
                    
  • 相关阅读:
    负载均衡有哪些?
    推荐一款免费的内网穿透工具ngrok
    MySQL索引事务
    Altium Designer培训 | 4 - 原理图创建篇
    gom传奇引擎无限蜂功能插件安装图文教程
    Spring与Web环境集成
    【网页设计】基于HTML在线图书商城购物项目设计与实现
    python asyncio websockets server
    Servlet详解(下)
    半解析快速傅里叶变换
  • 原文地址:https://blog.csdn.net/weixin_42739473/article/details/139744131