怎么使用Python和EV剪辑短视频

怎么使用Python和EV剪辑短视频

本篇内容介绍了“怎么使用Python和EV剪辑短视频”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、将图片转化成视频

通过python的opencv库就可以把图片转成视频,要注意的是把帧率设置成30,方便后续和其他视频拼接,因为帧率不同会导致拼接出错。

importcv2,osimportmatplotlib.pyplotaspltfromPILimportImagecanshu=0.5#设置视频分辨率参数img=Image.open('中国票据发展报告.jpg')img.save('ddd.jpg')img=cv2.imread('ddd.jpg')#设置一个图片的大小作为指定大小imgimgInfo=img.shapesize=(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.sizex_s=x00*canshuy_s=int(y00*x_s/x00)imgimg=img.resize(size,Image.ANTIALIAS)img.save('ddd.jpg')img=cv2.imread('ddd.jpg')#读取图像#因为是单张图片的时间太短,每一张图片插入20帧forjinrange(0,20):videoWrite.write(img)videoWrite.release()

但是如果要将图片做一些简单的动画效果,例如做一个画面逐渐缩小的动画,那就要借助EV剪辑,调整图片的大小,加上白背景,然后导出视频。

用 Python 和 EV 剪辑短视频教程用 Python 和 EV 剪辑短视频教程

注意导出的时候要设置帧率,如果时间过长,可以设置设置帧率低一点,然后用python程序把播放速度提升,帧率也会相应提高。

importcv2vdop="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')#ThesearetheFOURCCstocompressedformatsout_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=Truewhilerval:rval,img=cap.read()#逐帧读取原视频output_viedo.write(img)#写入视频帧output_viedo.release()cap.release()

用opencv处理过的视频会失去音频。我们也可以使用ffmpeg来调速,可以保留声音,特别适合微调。要使用FFmpeg,安装完之后,设置环境变量,就能在python调用FFmpeg。

importosos.system('ffmpeg-i4.mp4-vf"setpts=2*PTS"8.mp4')#图像两倍慢速

二、将视频添加音频作为背景音乐

importsubprocess,osmp4_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:\\ffmpeg\\bin\\ffmpeg.exe-i"{mp3_f}"-i"{mp4_f}"'\f'-acodeccopy-vcodeccopy"{n_mp4_f}"'print(com)os.system(com)

三、合并视频

1.剪切视频

importosimportsubprocess,cv2com=f'ffmpeg-i5.mp4-ccopy-t00:00:20.0output.mp4'#截取前20秒-ss00:00:00.0起始位置os.system(com)

2.要将不同的视频合并,首先要确保帧率和画布大小一样,这样才能确保合并起来不出错。下面代码是调整画布。将形状不同的视频画面,要按照原视频的比例,调整到一个框里面去。

importsubprocess,osimportcv2#获取样本的画布大小video_path="2\\1.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_heightw0=frame_widthfile_list=os.listdir('3\\')#获取文件夹里的所有文件列表foriinfile_list:#获取当前视频的video_path='3\\'+icap=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_heightw=frame_widthifh/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格式,然后再合并,成功率更高。

importoslista='kaishiwizhi'#先获取这些MP4文件,转换成ts格式foreachinos.listdir():ifeach[-3:]in['mp4','avi']:os.system('ffmpeg.exe-i%s-ccopy-vbsfh364_mp4toannexb%s.ts'%(each,each[:-4]))listalista=lista+('|%s.ts'%(each[:-4]))listalista=lista.replace('kaishiwizhi|','')importsubprocess,cv2#subprocess.call(cmd,shell=True)com=f'ffmpeg-i"concat:%s"-ccopy333333.avi'%lista#com=f'mencoder-forceidx-oflavf-oaccopy-ovccopy-ooutput.avinew2.avinew2.avi'print(com)os.system(com)

“怎么使用Python和EV剪辑短视频”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!

发布于 2022-01-21 23:17:29
收藏
分享
海报
0 条评论
33
上一篇:python中的继承和多态怎么用 下一篇:怎么使用Python实现多任务版的udp聊天器
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码