引言

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

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

视频压缩:

# 视频压缩第二版
import sys
import os
import zlib
import threading
import platform
from PIL import Imageclass 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.filePathelif self.system_ == "Linux":self.filePath = (self.filePath + "/") if self.filePath.rsplit("/",1)[-1] else self.filePathself.fileInputPath = self.filePath + inputNameself.fileOutPath = self.filePath + outName@propertydef 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 Trueelse:return Falsedef SaveVideo(self):fpsize = os.path.getsize(self.fileInputPath) / 1024if 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 Trueelse:return Truedef 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 Trueif __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.csdn.net/a849992683/article/details/90030326

python实现视频压缩相关推荐

  1. Python ffmpeg视频压缩

    文章目录 1.项目需求 2. 功能介绍 3. 文件源代码 1.项目需求 质量部有很多视频文件 需要发送给客户,然而,视频文件通常都比较大,需要一种视频转换工具,将视频文件进行压缩,方便传递.并且,不能 ...

  2. python强大功能——视频压缩

    用python实现视频压缩 市面上的视频压缩软件大多需要付费,或是免费试用几次,或是文件大于多少M就得充会员.令人苦恼.用下面的方法,学会用python压缩视频,一劳永逸,还可以以后装个杯

  3. python 视频和图片转换 视频压缩 图片降低分辨率 图像处理

    python 做视频后期 单个视频转图片 所有图片转视频 视频压缩 - ffmpeg 图片降低分辨率 图像处理 这是最近无聊的想法,对视频进行处理,其实也就是对图片的处理. 对视频进行后期处理,思路就 ...

  4. python压缩视频文件_python实现视频压缩功能

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

  5. python视频压缩算法_深度学习之图像视频压缩技术

    说到图像压缩算法,最典型的就是JPEG.JPEG2000等. 其中JPEG 采用的是以离散余弦转换(Discrete Cosine Transform) 为主的区块编码方式(如图2).JPEG2000 ...

  6. python视频压缩_Python 怎样将视频压缩?并且尽量不会影响到清晰度

    14 2019-08-15 16:53:17 +08:00 @msg7086 我本身的数据目前的数据,'{ 'streams': [ { 'index': 0, 'codec_name': 'h264 ...

  7. python gif压缩_实用性视频转gif,压缩等常用文件工具处理及转换(含自写python工具)...

    本文包含一些实用性的工具的推荐使用,和利用python去写一些实用性工具,我会把类似于像视频转换,pdf压缩啊,统统的在这里做一个收集,感兴趣的可以收藏和关注我, 背景: 大概我写<androi ...

  8. Python+OpenCV4:读写输入和输出的简单实践(图片、视频、摄像头)

    典型的文件处理流程如下: 利用命令行参数 sys.argv 命令行参数是读取文件时常用的方式. 命令行参数保存在 sys.argv 的列表中,列表的第一个元素是脚本名称,后面的元素是命令行参数: 通过 ...

  9. PHP如何启动scrapy,python,_新手Scrapy爬虫运行问题,python - phpStudy

    新手Scrapy爬虫运行问题 新人刚开始学习Scrapy,成功安装Scrapy,运行第一个程序还是报错,望高手帮忙解答,感激不尽 错误提示 Traceback (most recent call la ...

最新文章

  1. js 判断对象是否为空
  2. 【转】用例结构优化心得
  3. SpringBoot整合springDataJpa实现图片上传和显示
  4. python简单的web服务器
  5. IOS15.0的适配
  6. 操作主机 RID matser
  7. 跨平台、跨语言应用开发工具,Elements 介绍
  8. 重庆理工大学国际学院计算机图形学试题,哈尔滨理工大学-第一学期考试试题答案B卷考试.doc...
  9. 如何批量在文件夹中建立php,怎么批量创建文件夹_一次性创建多个文件夹方法_一聚教程网...
  10. 数据分析常用的python包_量化投资数据分析之常用的python包(附代码)
  11. php跨网段获取mac地址吗,局域网IP地址和MAC地址绑定,跨网段IP-MAC绑定。
  12. Atitit 数据出入管理法v3 目录 1.1. 边界检查:web边界和sql边界 1 2. 检查条目 1 2.1. 数据种类检查 整数 小数 字符串(带长度,字符白名单校验) 1 2.2. 字符黑
  13. 对Retinex算法的一些理解
  14. 十四五规划下建筑企业智慧建造数字化转型规划战略
  15. 下载精确卫星星历文件 2015.3.31
  16. csdn七牛云存储作为网站的图片外链
  17. 什么是url,herf和src的区别
  18. LeetCode-Hot100-两数之和
  19. Linux打字游戏程序代码,c语言shell打字游戏.pdf
  20. CCD相机和CMOS相机的区别

热门文章

  1. ios 表情符号 键盘_字体键盘表情符号
  2. 没有授权,Android App 也能获取你的权限?!
  3. 快狗打车CTO沈剑:数据库架构一致性最佳实践
  4. 最短路径之弗洛伊德算法(Floyd)——动态规划
  5. ubuntu18 配置静态IP地址(详细版)
  6. 虚拟硬盘 服务器 破解,服务器版虚拟硬盘_Primo Ramdisk Server Edition V5.6.1 免费版
  7. 前端项目中使用百度地图api,含实例
  8. word中常用快捷键
  9. 【安装PyTorch报错】InvalidArchiveError(‘Error with archive D:\\anaconda\\pkgs\\pytorch-1.2.0-py3.6····
  10. android 九宫格图片选择(微信朋友圈) 图片预览 (底部recycleview 不卡顿)