怎么使用Python和EV剪辑短视频
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容介绍了"怎么使用Python和EV剪辑短视频"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一
千家信息网最后更新 2025年02月01日怎么使用Python和EV剪辑短视频
本篇内容介绍了"怎么使用Python和EV剪辑短视频"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、将图片转化成视频
通过python的opencv库就可以把图片转成视频,要注意的是把帧率设置成30,方便后续和其他视频拼接,因为帧率不同会导致拼接出错。
import cv2,os import matplotlib.pyplot as plt from PIL import Image canshu=0.5 #设置视频分辨率参数 img = Image.open('中国票据发展报告.jpg') img.save('ddd.jpg') img = cv2.imread('ddd.jpg') #设置一个图片的大小作为指定大小 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//') #获取文件夹里的列表 for i in range(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.jpg') img = cv2.imread('ddd.jpg') #读取图像 #因为是单张图片的时间太短,每一张图片插入20帧 for j in range(0,20): videoWrite.write(img) videoWrite.release()
但是如果要将图片做一些简单的动画效果,例如做一个画面逐渐缩小的动画,那就要借助EV剪辑,调整图片的大小,加上白背景,然后导出视频。
注意导出的时候要设置帧率,如果时间过长,可以设置设置帧率低一点,然后用python程序把播放速度提升,帧率也会相应提高。
import cv2 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') #These are the FOURCCs to compressed formats 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 while rval: rval, img = cap.read()#逐帧读取原视频 output_viedo.write(img)#写入视频帧 output_viedo.release() cap.release()
用opencv处理过的视频会失去音频。我们也可以使用ffmpeg来调速,可以保留声音,特别适合微调。要使用FFmpeg,安装完之后,设置环境变量,就能在python调用FFmpeg。
import os os.system('ffmpeg -i 4.mp4 -vf "setpts=2*PTS" 8.mp4') #图像两倍慢速
二、将视频添加音频作为背景音乐
import subprocess,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:\\ffmpeg\\bin\\ffmpeg.exe -i "{mp3_f}" -i "{mp4_f}" ' \ f' -acodec copy -vcodec copy "{n_mp4_f}"' print(com) os.system(com)
三、合并视频
1.剪切视频
import os import subprocess,cv2 com = f'ffmpeg -i 5.mp4 -c copy -t 00:00:20.0 output.mp4' # 截取前20秒 -ss 00:00:00.0 起始位置 os.system(com)
2.要将不同的视频合并,首先要确保帧率和画布大小一样,这样才能确保合并起来不出错。下面代码是调整画布。将形状不同的视频画面,要按照原视频的比例,调整到一个框里面去。
import subprocess,os import cv2 #获取样本的画布大小 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_height w0=frame_width file_list = os.listdir('3\\') #获取文件夹里的所有文件列表 for i in file_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 if h/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格式,然后再合并,成功率更高。
import os lista='kaishiwizhi' #先获取这些MP4文件,转换成ts格式 for each in os.listdir(): if each[-3:] in ['mp4','avi'] : os.system('ffmpeg.exe -i %s -c copy -vbsf h364_mp4toannexb %s.ts' % (each, each[:-4])) listalista=lista +('|%s.ts'%(each[:-4])) listalista=lista.replace('kaishiwizhi|','') import subprocess,cv2 #subprocess.call(cmd, shell=True) com = f'ffmpeg -i "concat:%s" -c copy 333333.avi'%lista #com = f'mencoder -forceidx -of lavf -oac copy -ovc copy -o output.avinew 2.avi new 2.avi' print(com) os.system(com)
"怎么使用Python和EV剪辑短视频"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
视频
图片
大小
剪辑
文件
位置
调整
不同
格式
画布
画面
背景
路径
输入
内容
动画
参数
图像
宽度
教程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络技术未来发展方向
服务器错误代码21怎么解决
vb怎么读取数据库所有表
计算机网络技术大专毕业
米高美互联网科技有限公司
查找数据库账号密码
成人的网络安全知识
我的世界服务器花雨庭怎么刷东西
计算机等级三级网络技术
服务器管理员选项
小学网络安全宣传知识
香港上市公司的数据库
数据库面试题及答案
华为阿里腾讯数据库哪家好
杭州安卓软件开发哪家有实力
通信软件开发与应用
软件开发技术公司电话
sql数据库求年龄和
计算机网络技术总体情况
贵阳白帽子培训网络安全培训
北京小软件开发公司有哪些
软件开发与应用技术好就业吗
下周开世界网络安全大会
海南数据库安全箱销售价格
软件开发部 翻译
sql数据库单独设置密码
中信通讯软件开发薪酬
什么是嵌入式服务器
中山简单一点网络技术
邂逅在迷宫服务器右边有返利