0

0

Mac怎样使用终端压缩视频?FFmpeg命令实战

蓮花仙者

蓮花仙者

发布时间:2025-08-16 14:22:01

|

743人浏览过

|

来源于php中文网

原创

ffmpeg压缩视频时,crf根据视觉质量动态调整码率,适合追求一致画质的场景,推荐从crf 23开始尝试;2. 比特率编码则固定数据速率,适合有明确文件大小或带宽限制的情况,需权衡质量与体积;3. 常见错误包括编解码器名称错误、音视频不同步或丢失,可通过正确参数和流映射避免;4. 除压缩外,ffmpeg还可用于格式转换、剪辑片段、提取音频、截图及应用滤镜等高级操作,功能极为广泛。

Mac怎样使用终端压缩视频?FFmpeg命令实战

Mac上使用终端压缩视频,最直接且强大的方式就是借助FFmpeg。它是一个开源的命令行工具,能让你对视频的编码、质量、文件大小等参数进行精细控制。你需要先安装FFmpeg,通常通过Homebrew,然后就可以利用一系列命令来实现你想要的压缩效果了。

解决方案

  1. 安装 FFmpeg

    • 首先,确保你的Mac上安装了Homebrew。你可以在终端输入
      brew --version
      来检查。
    • 如果未安装Homebrew,运行以下命令进行安装:
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    • 安装Homebrew后,即可安装FFmpeg:
      brew install ffmpeg
  2. 基本视频压缩命令

    • 基于CRF(Constant Rate Factor)的质量压缩: 这是我个人最常用也最推荐的方法,它在保持视觉质量和文件大小之间找到了一个很好的平衡点。
      ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4
      • -i input.mp4
        : 指定输入文件。
      • -vcodec libx264
        : 指定视频编码器为H.264(最常用)。
      • -crf 23
        : 设置恒定码率因子。CRF值越低,视频质量越高,文件越大;值越高,质量越低,文件越小。通常18-28是一个不错的范围,23是一个很好的默认值,在质量和大小之间取得平衡。
      • -preset medium
        : 编码预设。这会影响编码速度和压缩效率。可选值有
        ultrafast
        ,
        superfast
        ,
        fast
        ,
        medium
        ,
        slow
        ,
        slower
        ,
        veryslow
        medium
        是一个不错的折衷选择,兼顾速度和压缩比。更慢的预设会生成更小的文件,但编码时间更长。
    • 基于比特率(Bitrate)的目标文件大小压缩: 如果你对最终文件大小有严格要求,可以使用比特率控制。
      ffmpeg -i input.mp4 -b:v 1M -b:a 128k output.mp4
      • -b:v 1M
        : 设置视频比特率为1兆比特每秒(Mbps)。根据视频内容和目标文件大小调整此值。
      • -b:a 128k
        : 设置音频比特率为128千比特每秒(Kbps)。
      • 个人经验: 尽管比特率控制能精确控制文件大小,但CRF通常能在相同文件大小下提供更好的感知质量,因为它会根据视频内容的复杂性动态调整码率。
  3. 其他常用压缩或处理参数

    • 改变分辨率:
      ffmpeg -i input.mp4 -vf scale=1280:-1 -crf 23 -preset medium output_720p.mp4
      • -vf scale=1280:-1
        : 将视频宽度缩放到1280像素,高度按比例自动调整(
        -1
        )。
    • 仅改变容器格式(不重新编码): 如果你只是想把
      .mov
      转换为
      .mp4
      而不损失质量,并且源视频的编码与目标容器兼容,这会非常快。
      ffmpeg -i input.mov -c copy output.mp4
      • -c copy
        : 告诉FFmpeg直接复制视频和音频流,不进行重新编码。

FFmpeg压缩视频时,CRF和Bitrate有什么区别,我该如何选择?

当你面对一个巨大的视频文件,想要把它“瘦身”时,FFmpeg提供了两种主要的策略:恒定码率因子(CRF)和基于比特率的编码。理解它们之间的差异并非只是理论,它直接影响你的工作流程和最终的视频输出。

CRF,也就是Constant Rate Factor,是我在处理大多数个人视频压缩任务时会优先选择的模式。你可以把它想象成一个“质量目标”。你告诉FFmpeg:“嘿,我希望这个视频看起来有这么好的质量。”FFmpeg就会在整个视频中动态调整比特率,以保持你设定的视觉质量。CRF值越低(比如18),质量越高,文件也会越大;CRF值越高(比如28),质量会相应降低,文件则会更小。对我来说,通常23-24是一个不错的通用网络视频CRF值,如果对清晰度有更高要求,可能会降到20左右。CRF的优点在于它的适应性:复杂场景会自动获得更多的比特来保持细节,而简单场景则会使用更少的比特,所有这些都是为了达到一种感知上的一致质量。这通常比固定比特率在相同感知质量下生成更小的文件。

而基于比特率的编码,则更像是设定一个“数据预算”。你明确告诉FFmpeg:“这个视频文件必须是每秒X兆比特(Mbps)的视频数据和每秒Y千比特(Kbps)的音频数据。”这种方式在你有严格的文件大小限制(比如上传到有文件大小上限的平台)或带宽限制(比如流媒体传输)时非常有用。缺点是,如果你的视频内容动作多、细节丰富,而你设定的固定比特率又太低,那么可能会出现明显的质量下降(比如马赛克、模糊),因为FFmpeg被迫在有限的空间内塞入太多信息。反之,对于简单场景,固定的高比特率可能会导致文件不必要地大。

那么,究竟该如何选择呢?

  • 选择CRF:如果你的主要目标是保持一致的视觉质量,并且对最终文件大小的微小浮动可以接受。它非常适合视频存档、个人分享,或者当你只是想获得“足够好”的质量而不必过分纠结于精确的文件大小时。通常来说,它的效率更高。
  • 选择比特率:如果你有非常明确的文件大小目标或带宽限制。这在专业交付给有严格要求的平台时很常见。你可能需要进行一些试错,才能找到在保证可接受质量前提下的最低比特率。

我的建议是:从CRF开始。它在质量管理上更直观。如果文件大小仍然过大,可以尝试进一步提高CRF值,或者在绝对必要时,再考虑切换到基于比特率的方法。

FFmpeg压缩视频时,有哪些常见的错误和挑战?

通过命令行使用FFmpeg,虽然功能强大,但并非总是一帆风顺。有一些常见的陷阱可能会让你摸不着头脑,说实话,我自己在学习和使用过程中也踩过大部分坑。但这都是使用如此多功能工具的学习曲线的一部分。

Revid AI
Revid AI

AI短视频生成平台

下载

最常见的问题之一是遇到“Codec not found”或“Encoder not found”错误。这通常发生在你尝试使用FFmpeg编译时未包含的编解码器,或者编解码器名称拼写不正确。例如,如果你输入

-vcodec h264
而不是正确的
-vcodec libx264
,FFmpeg可能就无法识别。务必仔细检查编解码器的确切名称。有时,如果你通过Homebrew安装FFmpeg,可能需要确保安装了包含所需编解码器的完整版本(尽管
brew install ffmpeg
通常已经包含了
libx264
等基本编解码器)。

另一个常见的挑战是平衡质量和文件大小。这始终是一个取舍。你可能会运行一个命令,得到一个很小的文件,但视频看起来就像是用土豆拍的。或者,你得到了原始质量,但文件依然巨大。这就是需要迭代测试的地方。从CRF 23开始,检查输出。如果文件太大,尝试25。如果太模糊,尝试20。没有一劳永逸的解决方案,这完全取决于你的源素材和你能接受的质量阈值。这本身就是一个主观判断,而且这完全没问题。

再者,就是命令语法的复杂性。FFmpeg的命令可以变得非常长且复杂,特别是当你开始添加滤镜(

-vf
)、音频选项(
-an
,
-b:a
)或特定的流选择时。一个放错位置的连字符、参数名称中的拼写错误,或者不正确的引号都可能导致错误或意想不到的行为。我的工作流程通常是逐步构建命令,测试每个部分,并将成功的命令保存在文本文件中以备将来参考。FFmpeg的官方文档虽然非常全面,但可能令人望而生畏;针对特定用例的快速搜索通常能得到更直接的答案。

最后,是音频同步问题或音视频流丢失。有时,压缩后你的音频可能与视频不同步,或者其中一个流完全消失了。这可能发生在你没有明确处理音频和视频流时,或者存在奇怪的帧率不匹配。务必彻底检查你的输出。如果音频丢失,请确保你没有不小心使用了

-an
(无音频)。如果同步有问题,有时重新编码两个流,或者确保FFmpeg正确地将输入流映射到输出,可以帮助解决问题。

这些挑战并非无法逾越的障碍,而是学习的机会。每一个错误信息或意想不到的结果都会促使你更深入地理解FFmpeg的运作机制。

除了压缩,FFmpeg还能用来做什么?有哪些高级用法?

FFmpeg简直是个怪物,说实话。仅仅称它为“视频压缩工具”,就像把瑞士军刀只叫做“刀”一样。它的能力远不止简单的压缩,这让它成为任何处理多媒体的人都不可或缺的工具。一旦你掌握了基础知识,一个充满高级操作的全新世界就会向你敞开。

最常见的“非压缩”用途之一是格式转换。需要把

.mov
转换成
.mp4
?或者把
.avi
转换成
.webm
?FFmpeg都能轻松搞定。你甚至可以转换音频格式,比如把
.wav
转成
.mp3
ffmpeg -i input.mov -c:v copy -c:a aac output.mp4
这个命令就是一个经典例子:它在不重新编码视频流的情况下复制了视频(速度超快!),并将音频重新编码为AAC,使其与MP4容器兼容。

然后是提取视频或音频的特定部分。只想要某个特定片段?使用

-ss
(开始时间)和
-to
(结束时间)或
-t
(持续时间)。例如,
ffmpeg -ss 00:01:30 -to 00:02:00 -i input.mp4 -c copy output_segment.mp4
将在不重新编码的情况下提取一个30秒的片段,这速度快得令人难以置信。或者你可能只想要音轨:
ffmpeg -i input.mp4 -vn audio_only.mp3
(移除视频,只提取音频)。需要将某一帧保存为图片?
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.png

视频滤镜是FFmpeg在处理更复杂任务时真正大放异彩的地方。

-vf
(video filter)选项允许你做很多事情,比如:

  • 调整大小/缩放:前面提到过,
    scale=width:height
    是基础。
  • 裁剪:使用
    crop=w:h:x:y
    来裁剪特定区域。
  • 添加文本叠加:使用
    drawtext
    滤镜。这可能有点复杂,但你可以在视频上添加时间戳、水印,甚至是动态文本。
  • 拼接(合并)视频:这稍微高级一些,通常需要创建一个文本文件列出你的视频片段,然后使用`ffmpeg -f concat

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

423

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

172

2023.10.30

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2023.11.24

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1680

2024.08.16

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.3万人学习

计算机系统从应用层到底层
计算机系统从应用层到底层

共6课时 | 0.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号