七十行代码教你使用 python ffmpeg 压缩视频,再也不用担心视频过大了
前期准备
最近要压缩视频,然后发现一些压缩视频的工具要是收费,要么有水印,完全不符合要求啊。正当我发愁的时候突然想到,去年的时候接触过 ffmpeg ,可以用python ffmpeg 来压缩视频啊,想到就干。最后还给我整成功啦,唯一麻烦点的地方就是 ffmpeg 的安装,其他的都是简简单单。(代码去年就写好了,这次只是整理更新一下下,自然简单)
- python 3
- 需要准备的库:sys、os、platform
- 需要下载的工具:ffmpeg
ffmpeg 是什么
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
下载地址:http://ffmpeg.org/download.html#build-windows
python 代码展示
# 2020年11月29日12:15:16
# @miss
# 视频压缩程序
# 只为更快更好的压缩视频 不作为商业用途仅供学习参考 miss# 视频压缩第二版
import sys
import os
import zlib
import threading
import platform
from PIL import Image# python press.py ./ 12.mp4 23.mp4
# python 文件名 路径 要压缩的文件 压缩之后的文件名
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.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) / 1024if 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 Trueelse:return Trueif __name__ == "__main__":b = sys.argv[1:] #测试压缩savevideo = Compress_Pic_or_Video(b[0],b[1],b[2])print(savevideo.Compress_Video())
几十行代码轻轻松松压缩视频,还有就是视频名字不能出现中文,要不然会出现 “没有安装ffmpeg的错误” 给大家看一下效果图:
8代 i3
这是压缩时的效果,视频大小是2G,压缩时间有点长
出现上面的图片就是结束啦,看看最后的效果吧
压缩前后对比:
整体来讲,压缩的有点狠,但是对于这种录屏的视频来说,最后的感觉都差不多
这是压缩前的视频效果
这是压缩后的视频效果:
简而言之,这个压缩效果杠杠的,还没有水印。用来压缩视频,是一个很不错的选择,Python yyds!!就分享到这里啦,有需要的朋友赶紧行动起来吧。
七十行代码教你使用 python ffmpeg 压缩视频,再也不用担心视频过大了相关推荐
- 40行代码教你利用Python网络爬虫批量抓取小视频
1. 前言 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! 2. 整理思 ...
- python爬取小视频-40行代码教你利用Python网络爬虫批量抓取小视频
/1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...
- STM32做平衡小车,代码,PCB都现成的,妈妈再也不用担心我的毕业设计了
▌一.硬件介绍 主控芯片用的是100脚的STM32F103VET6,陀螺仪用的是MPU6050,电机驱动用的是TB6612,蓝牙是汇承的HC05邮票孔封装的,WIFI用的是济南有人科技的USR-WIF ...
- 无法找到CCTV直播MP4地址?七十行代码,简单使用FFplay直接观看还是下载CCTV栏目都轻松搞定(Python利用FLVCD硕鼠解析CCTV直播,FFplay播放并下载视频)
我们在每天使用新闻的时候大都会以CCTV发布的新闻为准,我们的每天新闻收视率最高的还是我们的总台,大家闲来无事可能也会看一下央视网提供视频直播吧,看看还可以,但是我们可以发现我们完全解析不了,大家看一 ...
- 基于python的证件照_20行代码教你用python给证件照换底色的方法示例
1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流. 2.读取图片并显示 imread():读取图片: imshow():展示图片: waitkey():设置窗口等待,如果 ...
- 三十行代码教你做个通用文字识别程序
三十行代码教你做个通用文字识别程序 准备 开始编程 测试 准备 在开始敲代码前,我们先做一些准备.我们的这个通用文字识别程序的原理很简单,就是通过API调用百度智能云提供的免费的通用文字识别(标准版) ...
- python制作的点名神器(代码简单,适合初学者),老师再也不用发愁点名了
python制作的点名神器(代码简单,适合初学者),老师再也不用发愁点名了 python利用tkinter制作的点名神器,今天一个老师说让我帮他制作一个可以用来点名的小程序,由于和这个老师的关系比较好 ...
- python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了
1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...
- 想敲代码又怕女朋友找?那就让她去玩桌面图标贪吃蛇,再也不用担心打扰自己敲代码了
想敲代码又怕女朋友找?那就让她去玩桌面图标贪吃蛇,再也不用担心打扰自己敲代码了 最近在逛博客的时候看见了一个有趣的项目,使用桌面图标进行贪吃蛇游戏.采用的代码是vb,但我实在不会vb,就找了C++中关 ...
最新文章
- openstack安装系列问题:window7 64位安装的virtualBox 只能选择32位的系统安装不能选择64位的系统安装...
- Django不能ip调试访问
- 【Python】matplotlib可视化必知必会富文本绘制方法
- java基础---try后小括号(1.7后IO流的关闭方式)
- delphi listview1添加指定列_对表格的列进行批量处理的函数详解
- netstat查询端口被占用
- TComboBox动态创建
- Xshell 、PuTTY 复制文件到Linux
- iOS 加载本地HTML网页 js css images等文件
- [EntLib]UAB(Updater Application Block)下载
- ipad pro能用python编程吗_涨知识!iPad还可以运行Python代码
- 【干货】PS 如何快速抠图示例
- html p标签颜色代码,html里的颜色标签肿么写?
- 存储及可编程是未来物联网芯片发展的关键
- jenkins自动打包报错:cannot find symbol
- 基于java后端的 krpano 功能化
- Picasso加载圆角图片
- win10卸载补丁发生错误,没有成功卸载全部更新
- Day2 QT常用基础类型(自用)
- winwods 10 移动硬盘无法弹出
热门文章
- BUUCTF-Web:[GXYCTF2019]Ping Ping Ping
- 关于复制list出现的问题
- c4d安装没有出现语言文字,c4d中文教程大合集 HDT映速教程 C4D自学全攻略(四部全集)...
- 华为OD两轮技术面试
- (附源码)计算机毕业设计ssm高校体育馆管理信息系统
- Tensorflow教程-曼德布洛特(Mandelbrot)集合
- Hi3559AV100芯片内部温度检测
- LTE下行物理层传输机制(1)-天线端口Antenna Port和小区特定参考信号CRS
- Oracle---PLSQL案例
- Unity3D游戏开发第三人称角色控制的模式