• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python实现视频压缩功能

python 搞代码 4年前 (2022-01-07) 15次浏览 已收录 0个评论

这篇文章主要介绍了python实现视频压缩功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

引言

实现一个视频压缩的功能,
性能优良 压缩视频 从61M 到 11M或者80M到15M
视频看起来没有太大损伤
缺点:耗时20s (win10,CPU:intel i7 8G运存 )

由于压缩运算需要占用CPU资源,所以时间和性能其实很难兼顾,这个是我个人比较满意的一版 ,记录一下

话不多说,直接上代码

视频压缩:

 # 视频压缩第二版 import sys import os import zlib import threading import platform from PIL import Image class Compress_Pic_or_Video(object): def __init__(self,filePath,inputName,outName=""): self.filePath = filePath #文件地址 self.inputName = inputName #输入的文件名字 self.outName = outName #输出的文件名字 self.system_ = platform.platform().split("-",1)[0] if self.system_ == "Windows": self.filePath = (self.filePath + "\\") if self.filePath.rsplit("\\",1)[-1] else self.filePath elif self.system_ == "Linux": self.filePath = (self.filePath + "/") if self.filePath.rsplit("/",1)[-1] else self.filePath self.fileInputPath = self.filePath + inputName self.fileOutPath = self.filePath + outNa<p style="color:transparent">来源gao!daima.com搞$代!码网</p>me @property def is_video(self): videoSuffixSet = {"WMV","ASF","ASX","RM","RMVB","MP4","3GP","MOV","M4V","AVI","DAT","MKV","FIV","VOB"} suffix = self.fileInputPath.rsplit(".",1)[-1].upper() if suffix in videoSuffixSet: return True else: return False def SaveVideo(self): fpsize = os.path.getsize(self.fileInputPath) / 1024 if fpsize >= 150.0: #大于150KB的视频需要压缩 if self.outName: compress = "ffmpeg -i {} -r 10 -pix_fmt yuv420p -vcodec libx264 -preset veryslow -profile:v baseline -crf 23 -acodec aac -b:a 32k -strict -5 {}".format(self.fileInputPath,self.fileOutPath) isRun = os.system(compress) else: compress = "ffmpeg -i {} -r 10 -pix_fmt yuv420p -vcodec libx264 -preset veryslow -profile:v baseline -crf 23 -acodec aac -b:a 32k -strict -5 {}".format(self.fileInputPath, self.fileInputPath) isRun = os.system(compress) if isRun != 0: return (isRun,"没有安装ffmpeg") return True else: return True def Compress_Video(self): # 异步保存打开下面的代码,注释同步保存的代码 thr = threading.Thread(target=self.SaveVideo) thr.start() #下面为同步代码 # fpsize = os.path.getsize(self.fileInputPath) / 1024 # if fpsize >= 150.0: # 大于150KB的视频需要压缩 #   compress = "ffmpeg -i {} -r 10 -pix_fmt yuv420p -vcodec libx264 -preset veryslow -profile:v baseline -crf 23 -acodec aac -b:a 32k -strict -5 {}".format( #     self.fileInputPath, self.fileOutPath) #   isRun = os.system(compress) #   if isRun != 0: #     return (isRun, "没有安装ffmpeg") #   return True # else: #   return True if __name__ == "__main__": b = sys.argv[1:]	#测试压缩 savevideo = Compress_Pic_or_Video(b[0],b[1],b[2]) print(savevideo.Compress_Video()) # 这一版性能优良 压缩 从61M 到 11M 视频看起来没有太大损伤 缺点:inteli7 8G运存 耗时20s

启动方式:

在上述 .py文件所在目录下,shift+鼠标右键点击空白处,打开powershell窗口,运行以下命令:

 python shipinyasuo-2.py D:\yasuoship test.avi test1.avi

我的文件名叫 shipinyasuo-2.py ,把这个文件名替换成自己的,

D:\yasuoship 替换成要压缩的视频的文件夹的绝对路径

test.avi  压缩的视频的文件名

test1.avi  压缩后的文件名 , 和要压缩的文件在同一目录下

后续我还会再走一个牺牲图像大小啊 质量啊换取速度和大小的版本

最后贴出参考:
https://blog.gaodaimna/a849992683/article/details/90030326

以上就是python实现视频压缩功能的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python实现视频压缩功能

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址