视频文件太大?使用FFmpeg来无损压缩它_ffmpeg压缩视频

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

咱们平时如果经常拍视频的话都会遇到一个困境视频文件太大了存储的时候需要占用很多的空间。如果直接使用视频压缩工具来压缩码率的话又会担心损失了视频的画质这该怎么办呢

这个时候我们就可以使用ffmpeg的hevc编码功能来实现无损的压缩

什么是FFmpeg

FFmpeg是业内有名的开源图像视频处理程序。它被广泛的使用在许多视频剪辑软件、图像处理软件中都使用的FFmpeg还有比如OBS这样的导播软件里面也使用了FFmpeg

啥是HEVC编码

咱们常用的MP4格式中一般使用的都是H.264编码格式它于2003年被正式发布并广泛使用于各种场合。

十年后也就是2013年HEVC编码正式发布。HEVC是High Efficiency Video Coding高效视频编码的缩写又被称为H.265.相较于H.264它拥有更高的压缩率。在画质相同时HEVC编码格式能节省25%~50%的存储空间占用。因此对于动辄几个GB的视频文件使用HEVC编码进行归档存储再也合适不过了。

HEVC编码格式有什么缺点

相较于H.264HEVC编码格式在编解码的过程中需要占用更多的硬件资源。大白话就是速度更慢。因此如果你的电脑没有很好的显卡来支持HEVC格式的硬件加速那么将会以很慢的速度压缩你的视频播放的时候也可能会发生卡顿。

并且由于HEVC格式的普及程度不如已有近20年历史的H.264因此有些播放软件无法播放它。但是在不远的将来这个问题也不再是问题。

那就开始动手吧

安装FFmpeg

首先我们打开FFmpeg的官网https://ffmpeg.org 然后点击“Download”按钮进入下载页面下载对应的版本即可。然后在电脑上安装。Windows还需要将安装目录添加到环境变量。

使用FFmpeg

FFmpeg是一个只有命令行界面的程序因此需要在电脑的控制台里面运行它。

Windows小提示

Windows下按键盘的win+R然后输入cmd即可打开命令行界面

查看FFmpeg的帮助界面

让我们在控制台输入以下命令

ffmpeg -h

然后ffmpeg就会输出它的帮助信息。由于信息是英文的因此需要一点耐心去阅读它。下面是与我们的目标相关联的两个帮助信息

这是关于编码器和解码器的信息然后我们可以输入以下代码分别查看编码器和解码器的可选项

ffmpeg -decoders
ffmpeg -encoders
ffmpeg -codecs

我们会发现输出了一堆信息让我们眼花缭乱。是的FFmpeg就是这么强大支持很多的编解码器.

开始压缩吧

我们使用FFmpeg的libx265库进行压缩只需要这样的几个简单步骤

为了安全起见我们先将待压缩的视频复制到一个新的文件夹下面防止误操作丢失了数据。然后在新的这个文件夹中打开控制台windows下需要使用cd命令进去对应的文件夹。

接着我们在文件夹下面新建一个新的文件夹叫做output待会我们输出的视频就存在这个文件夹里面。

这时候文件夹下面应该长这样

接着我们来研究一下怎么使用ffmpeg压缩视频。

一个最简单的例子

我们可以使用以下的命令格式来输出一个视觉无损的视频

ffmpeg -i 输入文件名 -c:v libx265 -x265-params crf=18 output/输出文件名.mp4

对于上图的文件命令就是下面这样

ffmpeg -i demo.mp4 -c:v libx265 -x265-params crf=18 output/demo_1.mp4

然后经过一段时间的等待我们就可以看到结果了

左边是源视频右边是压缩后的视频。我们可以看到它节省了29.6%的空间而且经过我的测试在视觉上这两个视频的画质是差不多的。

进行更高级的压缩

在这里我们讲解一下上面的参数设置的含义。crf是Constant Rate Factor的缩写它的值越小画质越高占用的空间越大。它的可选项为0~51默认为28.当crf在20以下的时候就能实现视觉上的无损。

此外FFmpeg还为我们提供了一些预设选项我们可以通过preset选项快速设置x265编码的时候使用到的参数。

preset的可选项按照编码速度从快到慢排列如下:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium
  • slow
  • slower
  • veryslow
  • placebo

编码速度越慢则压缩效果及画质越好。preset选项的默认参数为medium。

输出最高压缩效果的视觉无损视频

ffmpeg -i 输入文件名 -c:v libx265 -x265-params crf=18:preset=placebo output/输出文件名.mp4

对于上面的视频我们可以用下面这个压缩命令

ffmpeg -i demo.mp4 -c:v libx265 -x265-params crf=18:preset=placebo output/demo_2.mp4

压缩前后大小对比如下

虽然这次的体积只减少了13.1%但是肉眼看视频的时候很明显感觉视频画质和原视频没啥区别。

这样算下来1GB的视频使用最高画质的无损压缩可以节省下131MB的空间呢还是很可观的

批量的压缩视频

由于上面的方法压缩视频只能一个一个的压缩为此我简单写了一个python脚本来完成自动压缩文件夹下的所有视频的功能。

在电脑上安装python和ffmpeg之后即可运行这个脚本。然后在脚本所在的文件夹下创建input文件夹及output文件夹。并把要压缩的视频放置在input文件夹下。运行python脚本之后就会开始压缩视频输出文件放置在output文件夹下。

脚本我已经上传到GitHubUtility-gadgets/cv/batch_transcode2HEVC at main · fslongjin/Utility-gadgets · GitHubhttps://github.com/fslongjin/Utility-gadgets/tree/main/cv/batch_transcode2HEVC

结语

FFmpeg的功能十分强大远不止视频压缩的功能。它的功能还有待我们去探索有兴趣的同学可以在FFmpeg官网查看官方的文档与教程学习更多的知识哦~

转载请注明来源视频文件太大使用FFmpeg来无损压缩它 | | 龙进的博客https://longjin666.cn/?p=1443欢迎关注我的公众号灯珑

我们一起探索更多有趣的事物

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6