前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统如何缩小媒体文件的占用空间,这7个命令绝了!

Linux系统如何缩小媒体文件的占用空间,这7个命令绝了!

原创
作者头像
网络技术联盟站
修改2021-11-19 08:07:05
1.6K0
修改2021-11-19 08:07:05
举报

您的计算机上有媒体文件吗?您可以通过以更节省空间的文件格式存储数据来节省大量磁盘空间。

本文将介绍如何使用 Linux 行命令来执行最常见的节省空间的转换,我使用行命令是因为它们可以让您完全控制压缩和格式转换功能。此外,如果您想编写脚本,则需要使用命令行,可以开发根据自己独特需求量身定制的程序。

虽然本文介绍了终端命令的办法,但还有许多其他方法可以压缩和转换文件,您可以在您的计算机上安装一个开源转换 GUI 应用程序,或者您甚至可以使用许多常见应用程序的save as和export功能转换文件格式。

本文仅讨论现有的数百种文件格式和终端命令中的少数几种最流行的文件格式和终端命令,目标是在保持简单的同时为您提供最大的好处。

文件删除

在开始文件格式转换之前,识别并删除计算机上所有不需要的大文件会很有帮助,仅删除少数太空猪就会产生巨大的好处。

**du**,**ncdu**和**dust**命令列出当前目录下的子目录中最大的,它们会告诉您哪些目录使用最多的磁盘空间:

$ du -a . | sort -n -r | head -n 50

此命令字符串标识其递归目录树中的 50 个最大文件,列出了按大小排序的最大文件:

$ find  -type f  -exec  du -Sh {} +  |  sort -rh  |  head -n 50

使用此命令,您可以立即识别何时将大文件存储在多个位置,删除重复项,您就可以回收一些重要的空间,输出还可以帮助您识别并删除您不再需要的任何大文件。

质量或存储空间

包含图像、音频和视频的媒体文件可能使用数百种不同的文件格式,一方面数据质量和另一方面消耗的存储空间之间通常存在权衡。

某些文件格式是无损的:它们保留所有最初捕获的数据,无损文件格式可以是未压缩的或压缩的,它们的大小因这个和其他因素而异。

其他文件格式是有损的,它们通过巧妙地消除一些最不实用的数据来节省存储空间,如果您对数据的使用可以容忍一些轻微的数据丢失,则它们是理想的选择。

例如,以 RAW、PNG 或 BMP 等无损格式捕获数字图像会创建一个大文件,将该图像转换为 JPG 或 WEBP 等有损替代品可以节省大量空间。

这值得么?这取决于您对图像的预期用途。

如果您是专业摄影师,您希望保留原始的无损文件,那么作品可能需要最高质量的图像,您的无损文件还意味着您可以在不损失质量的情况下执行大量图像编辑。

如果您是网站开发人员,您可能会做出相反的选择,与无损图像相比,较小的有损 JPG 或 WEBP 文件下载到用户计算机的速度要快得多,从而使您的网页加载速度更快,这种转换之所以有效,是因为很少有用户能够判断他们在计算机或手机屏幕上查看的图像是无损的还是有损的。

请记住,从无损格式转换为有损格式后,您已经删除了一些数据,无法转换回以重新获得该数据,可以转换回以前的格式,但这样做时不会丢失已经牺牲的数据。只有在您对转换后的文件满足您的所有需求感到满意后才删除原始文件!您可以选择根本不删除原始文件。

有时,节省空间就是节省方便空间的问题,如果原始、无损、未压缩的文件因任何原因对您很重要,请将它们备份到单独的存储位置。

转换图像文件

几种流行的位图文件格式提供了节省空间的绝佳机会,包括 RAW、BMP、GIF 和 TIFF。广泛使用的 PNG 格式也是一个不错的选择。

一种可能的图像转换目标是有损 JPG 格式,凭借其质量设置,JPG 允许您指定较小的文件大小以减少数据丢失或指定较大的文件大小以减少丢失,对于某些无损格式,它可能会为您提供高达 10:1 的压缩比,然而,如果您在计算机或手机屏幕上显示 JPG 图像,则肉眼很难分辨出发生了转换和压缩。

WEBP 文件在屏幕上看起来与 JPG 文件一样好,但它们节省了更多空间,这种节省是 WEBP 成为最受欢迎的有损图像格式的原因,所有现代浏览器和最新的应用程序都支持这种格式。WEBP 格式提供 alpha 透明度、动画和良好的色彩辐射,尽管它也支持无损格式,但它几乎总是用作有损格式。

我将大部分 PNG 和 JPG 文件转换为 WEBP 格式并回收了大量存储空间,在一张磁盘上,500 兆字节的 PNG 文件分解为大约 120 兆字节的 WEBP,如果您确定您的图像只会显示在屏幕上,那么转换为 WEBP 会带来明显的好处。

开源 ImageMagick 实用程序为您提供了用于转换图像的 Linux 终端命令,您可能需要先安装它:

$ sudo apt install imagemagick

ImageMagick 行命令通过三种技术帮助您减小图像文件大小:

  • 更改文件格式
  • 改变压缩程度
  • 使图像变小

这convert是执行文件格式转换的 ImageMagick命令的语法:

convert  [input options]  input\_file   [output options]  output\_file

这些示例都减小了文件大小,您可以从示例运行的结果中看到:

$ convert image.bmp new\_image.jpg   # 7.4MB 到 1.1MB

$ convert image.tiff new\_image.jpg   # 7.4MB 到 1.1MB

$ convert image.png new\_image.webp   # 4.8MB 到 515KB

$ convert image.png new\_mage .webp   # 1.5MB 到 560KB

$ convert image.jpg new\_image.webp   # 769KB 到 512KB

$ convert image.gif new\_image.jpg   # 13.2MB 到 10.9MB

$ convert image.gif new\_image.webp   # 13.2MB 到 4.1主板

您也可以转换 RAW 图像,转换 RAW 图像时,其文件名不得带有扩展名,以便convert命令正确处理它。

$ convert image new\_image.png #  RAW 67.1MB down to 45.3MB

可以节省一些显着的空间,但前提是输出对于您的用例是可以接受的。

此示例通过将 JPG 图像大小调整为尽可能接近 800x600 来节省空间,同时仍保持适当的纵横比。在此示例中,我将 1277x824 像素的 285KB 输入文件转换为 800x600 像素的 51KB 输出文件。

$ convert image.jpg  -resize 800x600  new\_image.jpg

该convert命令可以根据需要更改图像,例如,您可以指定图像质量和大小之间的权衡,但是您必须通过它的许多选项来了解它的全部功能。

转换音频文件

与图像文件一样,音频文件也有无损未压缩、无损压缩和有损格式。

与图像一样,无损和有损之间的权衡主要是数据质量与节省空间,如果您需要最高质量的音频,请坚持使用无损文件,例如,如果您编辑数字化音乐,可能就是这种情况。如果您想要占用更少空间的可听音乐,世界上大多数人都认为 MP3、M4A 和 OPUS 等有损格式是最佳选择。

以下是最流行的音频格式。请注意,文件扩展名通常是指可以支持多种音频编码格式的容器,并且大多数技术声称不止一个文件扩展名。此图表列出了您将看到的最常见场景:

  • 无损和未压缩
  • WAV
  • PCM
  • AIFF
  • 无损压缩
  • FLAC
  • ALAC
  • 有损
  • WEBM
  • OPUS
  • OGG (Vorbis)
  • AAC(某些实现不是开放格式)
  • MP3
  • M4A
  • WMA(非开放格式)

如果您的目标是节省磁盘空间,请尝试从无损格式转换为有损格式。除非必须,否则不要从一种有损格式转换为另一种格式。这可能会大大降低音质。

转换音频文件的一个非常灵活的 Linux 终端命令是ffmpeg. 要安装它:

$ sudo apt install ffmpeg

与 ImageMagickconvert命令一样,ffmpeg支持范围广泛的文件格式和编解码器。通过输入查看它们:

$ ffmpeg -encoders

使用ffmpeg通常非常简单,这是标准语法。该-i 标志标识输入文件,该-vn标志告诉ffmpeg不要调用任何可能改变音频输出的视频相关代码:

$ ffmpeg  -i  audiofile\_input.ext -vn audiofile\_output.new

这些示例都将无损 WAV 文件转换为有损格式以节省空间,转换 AIFF 文件的过程是相同的(但替换.wav为.aiff):

$ ffmpeg -i audio.wav -vn audio.ogg   # 38.3MB 到 3.3MB

$ ffmpeg -i audio.wav -vn audio.mp3   # 38.3MB 到 3.5MB

$ ffmpeg -i audio.wav -vn audio.m4a   # 38.3 MB 到 3.6MB

$ ffmpeg -i audio.wav -vn audio.webm # 38.3MB 到 2.9MB

所有命令都将无损输入文件的大小减少了 10 倍,最大的问题是:输出听起来与原始文件不同吗?

这要看情况,对于在大多数消费设备上收听的大多数人来说,差异可以忽略不计,这就是为什么 MP3、M4A 和其他压缩格式是世界上最流行的音乐格式,尽管它在技术上不是最好的,但音频还是很好听的,而且它占用了一小部分存储空间(或带宽,在流式传输时)。

转换视频文件

视频转换提供了另一种节省大量空间的机会,您的目标应该是找到最能平衡播放质量和文件大小以满足您的需求的视频格式。

甲视频格式是一个组合容器文件格式和编解码器,编解码器是在数据流进出容器文件时对其进行编码和解码的软件。

容器可以与多个编解码器配对,在实践中,通常只有一两个或三个流行的编解码器与特定容器配对,例如,对于音频文件,WAV 文件可以编码为无损或有损,但无损编码占主导地位,因此大多数人认为任何 WAV 文件都是无损的。

这些是当今使用最广泛的一些开源视频格式:

  • MP4 格式包含 H.264 视频和 AAC 音频,用于蓝光和互联网流媒体。
  • 包含 VP9 视频和 Opus 音频的 WEBM 格式非常灵活,可用于存档质量的文件以及用于流式传输的较小文件。
  • Matroska (MKV) 容器格式几乎可以包含视频、音频甚至立体 (3D) 图像的任何组合。它是 WEBM 的基础。

决定视频文件大小和质量的主要因素是:

  • 分辨率(框架尺寸)
  • 比特率
  • 编码

该ffmpeg命令可以更改所有三个参数。这是一个简单的转换示例:

$ ffmpeg -i input\_video.mov output.webm

此转换从 39 MB 输入生成 1.8 MB 输出文件。

因为我没有指定任何参数,所以ffmpeg复制了输入文件的大部分现有属性,在此示例中,我的输入文件是一个包含 MJPEG 视频的 MOV 文件,分辨率为 1280x720,帧速率为 23.98,比特率为每秒 40,219 千字节 (kbps),生成的输出文件包含具有相同分辨率和帧速率的 VP9 视频,但是,比特率仅为 1,893 kbps。

与音频转换一样,视频压缩率令人印象深刻,潜在的空间节省是巨大的。在我的 PC 上,这些转换看起来与原始版本非常相似,以至于很难判断是否有任何降级 - 对我而言,这与说没有降级一样好。

您是否可以接受输出质量取决于您对视频的预期用途、您的观看设备和您的期望,在您查看转换后的文件并发现它令人满意之前,切勿删除原始文件。

档案存储

归档需要多个输入文件——通常是不同的文件类型——并将它们收集到一个输出文件中,压缩是可选的,压缩存档对于通过 Internet 发送文件和长期数据存储很有用。这是节省空间的好方法,不利的一面是,在将归档文件从归档文件中提取出来之前,处理归档文件的方式受到限制(尽管现在有些工具在处理归档文件中的文件方面非常复杂)。

在众多存档文件格式中,最流行的压缩格式包括 **GZ**、**BZ2**、**XZ**、**ZIP** 和 **7Z**,该tar命令处理许多存档格式。

支持压缩命令,**包括gzip**、**bzip2**、**xz**等。

$ tar --xz --create --file myarchive.tar.xz bigfile.xcf bigfile.tiff

此命令将 56 MB 减少到 28 MB 的压缩存档,压缩的程度因所涉及的文件而异,一些媒体文件(尤其是那些已经是压缩格式的)压缩很少或根本没有压缩。

要取消归档 TAR 文件,请使用以下--extract选项:

$ tar --extract --file myarchive.tar.xz

该tar 命令将许多文件捆绑到一个容器中(有时称为tarball),但是,如果您只压缩一个文件,则不需要容器。

相反,您可以使用诸如gzip、bzip2、xz、zip、7z等命令来压缩文件。

$ xz bigfile.xcf

$ ls

bigfile.xcf.xz

要解压缩压缩文件,通常可以使用用于压缩文件的命令的“un”版本:

$ unxz bigfile.xcf.xz

有时还有一个--decompress选择:

$ xz --decompress bigfile.xcf.xz

并非所有 Linux 发行版都包含所有这些命令,因此您可能需要安装其中一些命令。

脚本技巧

要转换目录中的所有文件,只需将转换命令嵌入for循环中,在文件名变量周围放置双引号以处理包含嵌入空格的任何文件名。此脚本将目录中的所有 PNG 文件转换为 WEBP 文件:

#!/bin/bash

for file\_name in \*.png ; do  

  convert "$file\_name"  "$file\_name".webp

done

要处理一个目录及其所有子目录中的所有文件,需要递归遍历目录结构,为此使用**pushdand popdstack** 命令或**find** 命令。

结论

如果能用好压缩和重新格式化媒体文件的 Linux 命令可以为您节省数千兆字节的存储空间,我相信你有自己的一些很棒的技巧,所以请在评论中添加它们。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件删除
  • 质量或存储空间
  • 转换图像文件
  • 转换音频文件
  • 转换视频文件
  • 档案存储
  • 脚本技巧
  • 结论
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档