引言

实现一个视频压缩的功能,

性能优良 压缩视频 从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实现视频压缩功能相关推荐

  1. python压缩视频文件_python+压缩视频教程

    python+压缩视频教程内容摘要 python+压缩视频教程做饭的比较少.python做exe开发教程,可省却昂贵的租金,可设单世间.双世间.4世间.8世间,可设单人间.双人间.4人间.8人间,可去 ...

  2. python压缩视频文件_python使用zlib库压缩图片,使用ffmpeg压缩视频

    # ffmpeg -i 1.mp4 -r 10 -pix_fmt yuv420p -vcodec libx264 -preset veryslow -profile:v baseline -crf 2 ...

  3. python压缩视频文件_python 批量压缩手机视频

    importsysimportosfrom concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor #线程池,进程池#imp ...

  4. python读视频文件_python读取和保存视频文件

    如何用python实现视频关键帧提取并保存为图片?也许你会觉得对小编多做一点事你会觉得你很爽,可是在小编看来这是不屑的 import cv2vc = cv2.VideoCapture('Test.av ...

  5. python传输视频文件_Python视频传输

    ubuntu16.04+python2+opencv (一) 开发前的准备工作 sudo apt-get install python-pip pip install numpy pip instal ...

  6. python 下载视频文件_python 实现视频流下载保存MP4的方法

    如下所示: # -*- coding:utf-8 -*- import sys import os from glob import glob import requests reload(sys) ...

  7. OpenCV+Python实现视频文件裁剪功能

    Python编程实现对视频文件进行剪切的功能.截取指定长度的视频并保存,运行后首先选择要裁剪的视频,然后输入开始时间点和停止时间点即可.将剪切后的视频保存为output.avi文件 所属网站分类: 资 ...

  8. 压缩视频文件怎么压缩最小?

    压缩视频文件怎么压缩最小?相信每个小伙伴都和我一样,希望电脑里每个文件的体积都能小一点,这样才能不占用更多的存储空间,文件上起来也方便,发送给别人的时候也不会有限时,一会就能发送成功.但往往总是事与愿 ...

  9. 怎样压缩视频文件比较快?

    大家都知道视频文件过大是很令人头疼的,如果找不到适合自己的方法,效率就会很慢.今天小编就给大家分享一个自己学习到的方法,让大家也能比较快的压缩视频文件. 下面小编给大家讲讲操作流程,希望能帮助到大家. ...

最新文章

  1. repeater 控件嵌套
  2. java和php设置的cookies_php带cookie访问下载文件 header设置
  3. Math Adventures with Python
  4. mysql5.7免安版配置_mysql5.7免安装版配置
  5. Spring Boot集成Redis缓存之RedisTemplate的方式
  6. Git:checkout命令无法切换回master
  7. 常用的数据库维护语句
  8. LGP993使用心得和Android手机使用建议
  9. 市场营销学9——产品策略
  10. python语法基础知识第四关第二题_Python基础语法习题二
  11. 经典功率谱估计(直接法、间接法、直接法的改进(包括Bartlett法、Welch法))
  12. 抢占中国P2P海外第一股 宜人贷寓意为何
  13. 微软的应试题完整版(附答案)
  14. x265-1.8版本-encoder/slicetype.cpp注释
  15. 【RFID】射频功率放大器及射频振荡器的设计
  16. 微信小程序优购商城项目分析
  17. IP地理位置定位系统之应用场景划分
  18. 在线K歌如何基于zego sdk实现音视频社交玩法
  19. 三星java直板手机_三星超薄直板手机哪款好?三星超薄直板手机图文介绍
  20. spring源码(三)——@Configuration类的注册

热门文章

  1. 一条命令将windows下多个ts文件合并为一个ts文件
  2. PhoneGap介绍
  3. win10如何更改mysql的密码
  4. 案例1:金融数据分析----code知识点详解版
  5. 什么是VOL版?什么是VLK版
  6. java 获取ip地址
  7. 华东师范大学 2017 计算机系暑期夏令营机试
  8. 大数据资源整合分析平台_企业大数据管理软件_大数据资源整合管理系统
  9. 14.Flink1.11 安装部署及Release 文档解读
  10. Gilbreath原理中的数学与魔术(二)——Ultimate Gilbreath 原理 Mandelbrot 集合