python压缩视频文件_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 + outName
@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.csdn.net/a849992683/article/details/90030326
python压缩视频文件_python实现视频压缩功能相关推荐
- python压缩视频文件_python+压缩视频教程
python+压缩视频教程内容摘要 python+压缩视频教程做饭的比较少.python做exe开发教程,可省却昂贵的租金,可设单世间.双世间.4世间.8世间,可设单人间.双人间.4人间.8人间,可去 ...
- python压缩视频文件_python使用zlib库压缩图片,使用ffmpeg压缩视频
# ffmpeg -i 1.mp4 -r 10 -pix_fmt yuv420p -vcodec libx264 -preset veryslow -profile:v baseline -crf 2 ...
- python压缩视频文件_python 批量压缩手机视频
importsysimportosfrom concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor #线程池,进程池#imp ...
- python读视频文件_python读取和保存视频文件
如何用python实现视频关键帧提取并保存为图片?也许你会觉得对小编多做一点事你会觉得你很爽,可是在小编看来这是不屑的 import cv2vc = cv2.VideoCapture('Test.av ...
- python传输视频文件_Python视频传输
ubuntu16.04+python2+opencv (一) 开发前的准备工作 sudo apt-get install python-pip pip install numpy pip instal ...
- python 下载视频文件_python 实现视频流下载保存MP4的方法
如下所示: # -*- coding:utf-8 -*- import sys import os from glob import glob import requests reload(sys) ...
- OpenCV+Python实现视频文件裁剪功能
Python编程实现对视频文件进行剪切的功能.截取指定长度的视频并保存,运行后首先选择要裁剪的视频,然后输入开始时间点和停止时间点即可.将剪切后的视频保存为output.avi文件 所属网站分类: 资 ...
- 压缩视频文件怎么压缩最小?
压缩视频文件怎么压缩最小?相信每个小伙伴都和我一样,希望电脑里每个文件的体积都能小一点,这样才能不占用更多的存储空间,文件上起来也方便,发送给别人的时候也不会有限时,一会就能发送成功.但往往总是事与愿 ...
- 怎样压缩视频文件比较快?
大家都知道视频文件过大是很令人头疼的,如果找不到适合自己的方法,效率就会很慢.今天小编就给大家分享一个自己学习到的方法,让大家也能比较快的压缩视频文件. 下面小编给大家讲讲操作流程,希望能帮助到大家. ...
最新文章
- repeater 控件嵌套
- java和php设置的cookies_php带cookie访问下载文件 header设置
- Math Adventures with Python
- mysql5.7免安版配置_mysql5.7免安装版配置
- Spring Boot集成Redis缓存之RedisTemplate的方式
- Git:checkout命令无法切换回master
- 常用的数据库维护语句
- LGP993使用心得和Android手机使用建议
- 市场营销学9——产品策略
- python语法基础知识第四关第二题_Python基础语法习题二
- 经典功率谱估计(直接法、间接法、直接法的改进(包括Bartlett法、Welch法))
- 抢占中国P2P海外第一股 宜人贷寓意为何
- 微软的应试题完整版(附答案)
- x265-1.8版本-encoder/slicetype.cpp注释
- 【RFID】射频功率放大器及射频振荡器的设计
- 微信小程序优购商城项目分析
- IP地理位置定位系统之应用场景划分
- 在线K歌如何基于zego sdk实现音视频社交玩法
- 三星java直板手机_三星超薄直板手机哪款好?三星超薄直板手机图文介绍
- spring源码(三)——@Configuration类的注册