首页 / 知识
用python和EV剪辑短视频
2023-11-12 13:47:00
现在小视频非常流行,如何进行高效简便的视频剪辑,是各个up主的必备技能。本文借助python和EV剪辑制作我们所要的视频效果,不仅免费,而且没有广告水印。
一、将图片转化成视频
通过python的opencv库就可以把图片转成视频,要注意的是把帧率设置成30,方便后续和其他视频拼接,因为帧率不同会导致拼接出错。
importcv2,os importmatplotlib.pyplotasplt fromPILimportImage canshu=0.5 #设置视频分辨率参数 img=Image.open('图一.webp') img.save('ddd.webp') img=cv2.imread('ddd.webp')#设置一个图片的大小作为指定大小 imgimgInfo=img.shape size=(int(imgInfo[1]*canshu),int(imgInfo[0]*canshu)) fourcc=cv2.VideoWriter_fourcc('M','J','P','G') videoWrite=cv2.VideoWriter('3.avi',fourcc,30,size,True) #参数依次是:文件路径;指定编码器;帧率;画面大小;是彩色还是黑色 file_list=os.listdir('./1//') #获取文件夹里的列表 foriinrange(0,len(file_list)): fileName='./1//'+file_list[i] img=Image.open(fileName) #根据样本图片调整图片大小 (x00,y00)=img.size x_s=x00*canshu y_s=int(y00*x_s/x00) imgimg=img.resize(size,Image.ANTIALIAS) img.save('ddd.webp') img=cv2.imread('ddd.webp')#读取图像 #因为是单张图片的时间太短,每一张图片插入20帧 forjinrange(0,20): videoWrite.write(img) videoWrite.release()但是如果要将图片做一些简单的动画效果,例如做一个画面逐渐缩小的动画,那就要借助EV剪辑,调整图片的大小,加上白背景,然后导出视频。
注意导出的时候要设置帧率,如果时间过长,可以设置设置帧率低一点,然后用python程序把播放速度提升,帧率也会相应提高。
importcv2 vdop="4.mp4"#输入视频路径 cap=cv2.VideoCapture(vdop) fps=cap.get(cv2.CAP_PROP_FPS)#获取输入视频的帧率 size=(int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))#获取输入视频的大小 fourcc=cv2.VideoWriter_fourcc('I','4','2','0') #ThesearetheFOURCCstocompressedformats out_path="8.mp4"#输出2倍速的avi格式的视频路径 output_viedo=cv2.VideoWriter() fps=(29.5/26.8)*fps#2倍速处理 #isColor:如果该位值为Ture,解码器会进行颜色框架的解码,否则会使用灰度进行颜色架构 output_viedo.open(out_path,fourcc,fps,size,isColor=True) rval=True whilerval: rval,img=cap.read()#逐帧读取原视频 output_viedo.write(img)#写入视频帧 output_viedo.release() cap.release()用opencv处理过的视频会失去音频。我们也可以使用ffmpeg来调速,可以保留声音,特别适合微调。要使用FFmpeg,安装完之后,设置环境变量,就能在python调用FFmpeg。
importos os.system('ffmpeg-i4.mp4-vf "setpts=2*PTS"8.mp4') #图像两倍慢速二、将视频添加音频作为背景音乐
importsubprocess,os mp4_f='./2.avi' mp3_f='./背景音.mp3' n_mp4_n='new'+mp4_f.split('/')[-1] n_mp4_f=mp4_f.replace(mp4_f.split('/')[-1],n_mp4_n) com=f'D:fmpeginfmpeg.exe-i"{mp3_f}"-i"{mp4_f}"' f'-acodeccopy-vcodeccopy"{n_mp4_f}"' print(com) os.system(com)三、合并视频
1.剪切视频
importos importsubprocess,cv2 com=f'ffmpeg-i5.mp4-ccopy-t00:00:20.0output.mp4' #截取前20秒 -ss00:00:00.0 起始位置 os.system(com)2.要将不同的视频合并,首先要确保帧率和画布大小一样,这样才能确保合并起来不出错。下面代码是调整画布。将形状不同的视频画面,要按照原视频的比例,调整到一个框里面去。
importsubprocess,os importcv2 #获取样本的画布大小 video_path="2.mp4" cap=cv2.VideoCapture(video_path) frame_width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))#获取视频高度 frame_height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))#获取视频宽度 fps=cap.get(cv2.CAP_PROP_FPS)#视频平均帧率 h0=frame_height w0=frame_width file_list=os.listdir('3') #获取文件夹里的所有文件列表 foriinfile_list: #获取当前视频的 video_path='3'+i cap=cv2.VideoCapture(video_path) frame_width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取视频高度、宽度 frame_height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) h=frame_height w=frame_width ifh/w>h0/w0: strn=f'ffmpeg-i%s-vf"scale=(%s*%s/%s):%s,pad=%s:%s:(%s-(%s*%s/%s))/2:0:black"%s'% (video_path,w,h0,h,h0, w0,h0,w0,w,h0,h,i) else: strn=f'ffmpeg-i %s-vf"scale=%s:%s*%s/%s,pad=%s:%s:0:((%s-(%s*%s/%s))/2):black" %s'% (video_path,w0,w0,h,w, w0,h0, h0,w0,h,w,i) #本图缩放后=宽:高,位置=总宽:总高:水平方向放置的位置:垂直方向放置的位置 os.system(strn)3.将视频合并
将视频先转化成ts格式,然后再合并,成功率更高。
importos lista='kaishiwizhi' #先获取这些MP4文件,转换成ts格式 foreachinos.listdir(): ifeach[-3:]in['mp4','avi']: os.system('ffmpeg.exe-i%s-ccopy-vbsfh264_mp4toannexb%s.ts'%(each,each[:-4])) listalista=lista+('|%s.ts'%(each[:-4])) listalista=lista.replace('kaishiwizhi|','') importsubprocess,cv2 #subprocess.call(cmd,以上内容为大家介绍了用python和EV剪辑短视频,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
linux命令行查看时间?
linux命令行查看时间?,系统,时间,信息,环境,命令,地址,服务,工作,情况,用户数,linux查看系统运行了多长时间使用什么命令方法一:uptime命令 会linux系统命令改时间?
linux系统命令改时间?,时间,系统,服务,大陆,国家,基础,城市,命令,时区,时钟,如何在Linux中更改时区1、方法2:使用时区选择菜单打开终端应用程序linux命令行看代码?
linux命令行看代码?,代码,基础,系统,命令,数字,工作,情况,进程,程序,终端,在Linux命令终端中查看和编辑曾执行过的命令1、使用历史命令:在终端linux命令代码怎么看?
linux命令代码怎么看?,时间,系统,代码,命令,状态,工具,情况,电脑,实时,基础,linux查看系统命令是什么有的,Linux中有多个命令可以用于查看文件linux命令参考图片?
linux命令参考图片?,系统,命令,状态,管理,网络,工作,图片,实时,软件,情况,linux返回上一级的命令是什么?怎么写?1、首先在电脑中,打开linux系统python opencv如何旋转图片?
python opencv如何旋转图片?,中心,代码,图像,图片,角度,大小,函数,例子,正数,负数,OpenCV是一款开源的计算机视觉库,它提供了各种各样的图像处比较好用的Python代码编辑器
比较好用的Python代码编辑器,代码,平台,环境,培训,教育,设计,数据,办公,人员,分析,Python是一款非常简单的编程语言,其功能使用起来都十分方便pycharm无法输入代码?
pycharm无法输入代码?,代码,环境,工具,分析,输入法,键盘,性能,计算机,问题,版本,PyCharm是一款Python语言开发的集成开发环境(IDE),它是许多PythoPython常用时间模块有哪些?
Python常用时间模块有哪些?,时间,信息,模块,培训,代码,灵活,字符串,日期,小时,实例,在编写代码的过程中,我们经常需要与时间打交道,所以说掌握时让Python代码更易维护的工具
让Python代码更易维护的工具,代码,工具,标准,项目,质量,地方,更正,一致,变动,软件,检查你的代码的质量,通过这些外部库使其更易维护。可读性很大学生报名Python培训课程的好处是
大学生报名Python培训课程的好处是什么?,培训,企业,社会,项目,行业,工作,时间,技术,都会,素养,一、报名学习前沿技术在IT行业,技术在不断变化和python代码的规范建议
python代码的规范建议,代码,异常,二元,设计,数字,下降,一致,培训,标准,空行,1.一致性的建议打破一条既定规则的两个好理由当应用这个规则将导