利用opencv + moviepy制作批量剪辑脚本

2023-10-17 11:30

本文主要是介绍利用opencv + moviepy制作批量剪辑脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近工作上需要剪辑大量的视频,网上找不到合适的模板。所以直接用python 做一个

完整代码如下:

from moviepy.editor import * 
from PIL import Image 
import cv2
import os
import numpy as np
def format_img(path):img = cv2.imread(path)print(path)top = (1280 - img.shape[0])//2left = (720 - img.shape[1])//2img_new = cv2.copyMakeBorder(img, top, top, left, left, cv2.BORDER_CONSTANT, None, (0,0, 0))cv2.imwrite(path, img_new)def format_mask():path = './mask'for file in os.listdir(path):out_path = f'{path}/{file}'img = cv2.imread(out_path)img1 =cv2.resize(img, (720, 1280), interpolation=cv2.INTER_CUBIC)cv2.imwrite(out_path, img1)    # format_mask()
def format_video(fileName, input_path, out_path):my_clip = VideoFileClip(input_path, audio=False)#获取书法作品hand_path = f'./photo/{fileName}.png'# 人物照片man_path = f'./man/{fileName}.png'format_img(hand_path)format_img(man_path)# 获取音乐music_list = os.listdir('./music')music_path = np.random.choice(music_list)music = AudioFileClip(f'./music/{music_path}')music.max_volume()# 字幕text_clip = TextClip('小金熊趣味硬笔', fontsize=70, font='./msyhl.ttc').set_duration(my_clip.duration).set_position(('left','bottom'))my_clip1 = CompositeVideoClip([my_clip, text_clip])clip = ImageSequenceClip([hand_path, man_path], fps = 1, durations=3)cc = concatenate_videoclips([my_clip1, clip])cc.set_audio(music)cc.audio = musiccc.write_videofile(out_path, audio_codec='aac')def main():path = './video'for file in os.listdir(path):out_path = f'./out_video/{file}'video_path = f'{path}/{file}'print(file.split('.')[0])format_video(file.split('.')[0], video_path, out_path)
main()

工程目录如下:
在这里插入图片描述

这篇关于利用opencv + moviepy制作批量剪辑脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225058

相关文章

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.