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 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实现视频压缩相关推荐
- Python ffmpeg视频压缩
文章目录 1.项目需求 2. 功能介绍 3. 文件源代码 1.项目需求 质量部有很多视频文件 需要发送给客户,然而,视频文件通常都比较大,需要一种视频转换工具,将视频文件进行压缩,方便传递.并且,不能 ...
- python强大功能——视频压缩
用python实现视频压缩 市面上的视频压缩软件大多需要付费,或是免费试用几次,或是文件大于多少M就得充会员.令人苦恼.用下面的方法,学会用python压缩视频,一劳永逸,还可以以后装个杯
- python 视频和图片转换 视频压缩 图片降低分辨率 图像处理
python 做视频后期 单个视频转图片 所有图片转视频 视频压缩 - ffmpeg 图片降低分辨率 图像处理 这是最近无聊的想法,对视频进行处理,其实也就是对图片的处理. 对视频进行后期处理,思路就 ...
- python压缩视频文件_python实现视频压缩功能
引言 实现一个视频压缩的功能, 性能优良 压缩视频 从61M 到 11M或者80M到15M 视频看起来没有太大损伤 缺点:耗时20s (win10,CPU:intel i7 8G运存 ) 由于压缩运算 ...
- python视频压缩算法_深度学习之图像视频压缩技术
说到图像压缩算法,最典型的就是JPEG.JPEG2000等. 其中JPEG 采用的是以离散余弦转换(Discrete Cosine Transform) 为主的区块编码方式(如图2).JPEG2000 ...
- python视频压缩_Python 怎样将视频压缩?并且尽量不会影响到清晰度
14 2019-08-15 16:53:17 +08:00 @msg7086 我本身的数据目前的数据,'{ 'streams': [ { 'index': 0, 'codec_name': 'h264 ...
- python gif压缩_实用性视频转gif,压缩等常用文件工具处理及转换(含自写python工具)...
本文包含一些实用性的工具的推荐使用,和利用python去写一些实用性工具,我会把类似于像视频转换,pdf压缩啊,统统的在这里做一个收集,感兴趣的可以收藏和关注我, 背景: 大概我写<androi ...
- Python+OpenCV4:读写输入和输出的简单实践(图片、视频、摄像头)
典型的文件处理流程如下: 利用命令行参数 sys.argv 命令行参数是读取文件时常用的方式. 命令行参数保存在 sys.argv 的列表中,列表的第一个元素是脚本名称,后面的元素是命令行参数: 通过 ...
- PHP如何启动scrapy,python,_新手Scrapy爬虫运行问题,python - phpStudy
新手Scrapy爬虫运行问题 新人刚开始学习Scrapy,成功安装Scrapy,运行第一个程序还是报错,望高手帮忙解答,感激不尽 错误提示 Traceback (most recent call la ...
最新文章
- js 判断对象是否为空
- 【转】用例结构优化心得
- SpringBoot整合springDataJpa实现图片上传和显示
- python简单的web服务器
- IOS15.0的适配
- 操作主机 RID matser
- 跨平台、跨语言应用开发工具,Elements 介绍
- 重庆理工大学国际学院计算机图形学试题,哈尔滨理工大学-第一学期考试试题答案B卷考试.doc...
- 如何批量在文件夹中建立php,怎么批量创建文件夹_一次性创建多个文件夹方法_一聚教程网...
- 数据分析常用的python包_量化投资数据分析之常用的python包(附代码)
- php跨网段获取mac地址吗,局域网IP地址和MAC地址绑定,跨网段IP-MAC绑定。
- Atitit 数据出入管理法v3 目录 1.1. 边界检查:web边界和sql边界	1 2. 检查条目	1 2.1. 数据种类检查 整数 小数 字符串(带长度,字符白名单校验)	1 2.2. 字符黑
- 对Retinex算法的一些理解
- 十四五规划下建筑企业智慧建造数字化转型规划战略
- 下载精确卫星星历文件 2015.3.31
- csdn七牛云存储作为网站的图片外链
- 什么是url,herf和src的区别
- LeetCode-Hot100-两数之和
- Linux打字游戏程序代码,c语言shell打字游戏.pdf
- CCD相机和CMOS相机的区别
热门文章
- ios 表情符号 键盘_字体键盘表情符号
- 没有授权,Android App 也能获取你的权限?!
- 快狗打车CTO沈剑:数据库架构一致性最佳实践
- 最短路径之弗洛伊德算法(Floyd)——动态规划
- ubuntu18 配置静态IP地址(详细版)
- 虚拟硬盘 服务器 破解,服务器版虚拟硬盘_Primo Ramdisk Server Edition V5.6.1 免费版
- 前端项目中使用百度地图api,含实例
- word中常用快捷键
- 【安装PyTorch报错】InvalidArchiveError(‘Error with archive D:\\anaconda\\pkgs\\pytorch-1.2.0-py3.6····
- android 九宫格图片选择(微信朋友圈) 图片预览 (底部recycleview 不卡顿)