前期准备

最近要压缩视频,然后发现一些压缩视频的工具要是收费,要么有水印,完全不符合要求啊。正当我发愁的时候突然想到,去年的时候接触过 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 压缩视频,再也不用担心视频过大了相关推荐

  1. 40行代码教你利用Python网络爬虫批量抓取小视频

    1. 前言 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! 2. 整理思 ...

  2. python爬取小视频-40行代码教你利用Python网络爬虫批量抓取小视频

    /1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...

  3. STM32做平衡小车,代码,PCB都现成的,妈妈再也不用担心我的毕业设计了

    ▌一.硬件介绍 主控芯片用的是100脚的STM32F103VET6,陀螺仪用的是MPU6050,电机驱动用的是TB6612,蓝牙是汇承的HC05邮票孔封装的,WIFI用的是济南有人科技的USR-WIF ...

  4. 无法找到CCTV直播MP4地址?七十行代码,简单使用FFplay直接观看还是下载CCTV栏目都轻松搞定(Python利用FLVCD硕鼠解析CCTV直播,FFplay播放并下载视频)

    我们在每天使用新闻的时候大都会以CCTV发布的新闻为准,我们的每天新闻收视率最高的还是我们的总台,大家闲来无事可能也会看一下央视网提供视频直播吧,看看还可以,但是我们可以发现我们完全解析不了,大家看一 ...

  5. 基于python的证件照_20行代码教你用python给证件照换底色的方法示例

    1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流. 2.读取图片并显示 imread():读取图片: imshow():展示图片: waitkey():设置窗口等待,如果 ...

  6. 三十行代码教你做个通用文字识别程序

    三十行代码教你做个通用文字识别程序 准备 开始编程 测试 准备 在开始敲代码前,我们先做一些准备.我们的这个通用文字识别程序的原理很简单,就是通过API调用百度智能云提供的免费的通用文字识别(标准版) ...

  7. python制作的点名神器(代码简单,适合初学者),老师再也不用发愁点名了

    python制作的点名神器(代码简单,适合初学者),老师再也不用发愁点名了 python利用tkinter制作的点名神器,今天一个老师说让我帮他制作一个可以用来点名的小程序,由于和这个老师的关系比较好 ...

  8. python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...

  9. 想敲代码又怕女朋友找?那就让她去玩桌面图标贪吃蛇,再也不用担心打扰自己敲代码了

    想敲代码又怕女朋友找?那就让她去玩桌面图标贪吃蛇,再也不用担心打扰自己敲代码了 最近在逛博客的时候看见了一个有趣的项目,使用桌面图标进行贪吃蛇游戏.采用的代码是vb,但我实在不会vb,就找了C++中关 ...

最新文章

  1. openstack安装系列问题:window7 64位安装的virtualBox 只能选择32位的系统安装不能选择64位的系统安装...
  2. Django不能ip调试访问
  3. 【Python】matplotlib可视化必知必会富文本绘制方法
  4. java基础---try后小括号(1.7后IO流的关闭方式)
  5. delphi listview1添加指定列_对表格的列进行批量处理的函数详解
  6. netstat查询端口被占用
  7. TComboBox动态创建
  8. Xshell 、PuTTY 复制文件到Linux
  9. iOS 加载本地HTML网页 js css images等文件
  10. [EntLib]UAB(Updater Application Block)下载
  11. ipad pro能用python编程吗_涨知识!iPad还可以运行Python代码
  12. 【干货】PS 如何快速抠图示例
  13. html p标签颜色代码,html里的颜色标签肿么写?
  14. 存储及可编程是未来物联网芯片发展的关键
  15. jenkins自动打包报错:cannot find symbol
  16. 基于java后端的 krpano 功能化
  17. Picasso加载圆角图片
  18. win10卸载补丁发生错误,没有成功卸载全部更新
  19. Day2 QT常用基础类型(自用)
  20. winwods 10 移动硬盘无法弹出

热门文章

  1. BUUCTF-Web:[GXYCTF2019]Ping Ping Ping
  2. 关于复制list出现的问题
  3. c4d安装没有出现语言文字,c4d中文教程大合集 HDT映速教程 C4D自学全攻略(四部全集)...
  4. 华为OD两轮技术面试
  5. (附源码)计算机毕业设计ssm高校体育馆管理信息系统
  6. Tensorflow教程-曼德布洛特(Mandelbrot)集合
  7. Hi3559AV100芯片内部温度检测
  8. LTE下行物理层传输机制(1)-天线端口Antenna Port和小区特定参考信号CRS
  9. Oracle---PLSQL案例
  10. Unity3D游戏开发第三人称角色控制的模式