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

这个时候,我们就可以使用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.264,HEVC编码格式在编解码的过程中,需要占用更多的硬件资源。大白话就是,速度更慢。因此,如果你的电脑没有很好的显卡来支持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文件夹下。

脚本我已经上传到GitHub:Utility-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欢迎关注我的公众号:灯珑

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

视频文件太大?使用FFmpeg来无损压缩它相关推荐

  1. 视频文件太大如何压缩变小?

    视频文件太大如何压缩变小?任何文件如果太大就会给使用带来麻烦,尤其是视频文件,一两分钟的视频可能就有几十mb,不仅占用大量的存储空间,发送给别人的时候也更加的费时,这时候就需要将较大的视频压缩变小,提 ...

  2. avi视频文件太大怎么变小

    avi视频格式的优点是图像质量好,但是其缺点是体积过于庞大,而且更加糟糕的是压缩标准不统一.avi视频文件太大怎么变小?对于我这个日常工作都是和视频打交道的,新媒体人来说曾经是一个难题.但现阶段的全民 ...

  3. 视频文件太大怎么发微信朋友?微信怎么发超大或过大的视频文件?

    视频文件太大怎么发微信朋友?经常有朋友问我视频太大了怎么压缩,我也找了很多软件,但是都不怎么样好用,小编今天给小伙伴们介绍一个简单的方法视频压缩软件,我在这里介绍一个简单的方法来压缩视频体积: 搜索一 ...

  4. 电脑视频文件太大怎么压缩?电脑压缩视频大小

    电脑视频文件太大怎么压缩?随着制作视频的小伙伴越来越多,大家都想把制作好的视频上传到一些平台分享自己的作品,有时候我们会遇到视频过大的问题,今天给大家分享下压缩视频的方法: 搜索一下: ~~~~~~~ ...

  5. 视频文件太大怎样压缩?试试这个方法可以压缩视频文件

    最近经常听到大家在讨论短视频,某某某的短视频火了哎,我知道啊,看到他们短视频做的很好,我也想,于是就自己注册了一个账号,但当我注册成功准备上传视频的时候才发现很多平台对视频的大小是有限制的,文件太大无 ...

  6. 录制视频文件太大,无损压缩技巧分享

    随着短视频在互联网风靡,所以很多人也纷纷上传自己的视频,加入到创作短视频流量大军中.作为一个自媒体从事者来说,剪辑短视频是十分重要. 剪辑短视频不仅仅需要对内容进行剪辑操作,相关细节也需要做到位.视频 ...

  7. 复制并重命名文件_视频文件太大怎么办?快速压制视频只需一招,好多大咖都在用...

    在当今,短视频可以说是一个非常火爆的行业,很多朋友们可能都会遇到一种情况,那就是我们下载下来的或者是录制出来的一些视频文件非常大,那如何才能够在不改变清晰度的情况下将这些视频快速压缩呢?这主要可以通过 ...

  8. 苹果电脑 mp4 视频文件太大怎么变小

    苹果电脑上最大的文件可能就是您的视频了,无论是硬盘空间不足还是想要给对方发送过大的视频,压缩视频都是减小文件大小的好方法. 那我们怎样操作才可以让苹果电脑上面的MP4文件变小呢?不要担心,本文将讲解关 ...

  9. 电脑怎么压缩mp4视频文件?mp4视频文件太大怎么变小?

    电脑怎么压缩mp4视频文件?随着制作视频的小伙伴越来越多,大家都想把视频传到一些平台或发送给自己的朋友,有时候我们会遇到视频过大发不了的问题,今天我给大家介绍一个压缩视频的简单的方法: 搜索一下: ~ ...

最新文章

  1. ubuntu java apt-get_Ubuntu中apt-get用法(转)
  2. 【数学和算法】初识卡尔曼滤波器(三)
  3. 区块链BaaS云服务(28)TOP Network 区块链平台
  4. PUSHAD和POPAD,以及PUSHA和POPA
  5. Ionic Angular自动捕获错误 配置Angular2.x +
  6. 互联网日报 | 小米跻身千亿美金俱乐部;企业微信活跃用户数达1.3亿;蔚来即将发布旗下首款轿车...
  7. django框架 day05
  8. 常见数据结构与算法整理总结
  9. 一线互联网企业面试题总结(帮你成功拿到offer)
  10. 007_控制器可扩展性
  11. vue 3.2 的 script setup 语法
  12. Blender Python UV 学习
  13. if(){}else{}层数太多,提出来另写一个方法
  14. 读《深入浅出统计学》
  15. linux 终端tty的含义,终端、控制台、tty、shell等区别与概念初辨析
  16. 后端程序员必会:并发情况下redis-lua保证原子操作
  17. BZOJ4622 [NOI 2003] 智破连环阵
  18. Java——使用多线程模拟真实高并发业务并保证安全性(一)
  19. 优课联盟 实境英语 Test for Unit 9
  20. python爬取笔趣阁小说(附源码)

热门文章

  1. pymysql 向MySQL 插入数据无故报错
  2. 如何在html上放小游戏,如何在网页插入小游戏
  3. [找工作] 2019秋招|从春招到秋招,Java岗经验总结(收获AT)
  4. 中小学数学试卷自动生成程序-对张凯翔同学代码的评价
  5. 一个程序猿眼中的国内主流地图api
  6. Python爬虫学习笔记:概念、知识和简单应用
  7. CoreImage核心图像图像处理
  8. 全面了解风控指标体系
  9. Go-boomer-locust
  10. Android微信SDK实现分享