FFmpeg指南:如何在Mac和Windows上安装FFmpeg并合并视频与音频文件

本文主要分享FFmpeg的安装和使用,因为有时候高清视频只能下载到没有声音的文件或高质量的声音文件,然后需要合并成一个文件。

Mac OS 安装 FFmpeg

1,安装Homebrew

如果你的MacOS还未安装Homebrew,在终端中使用下面命令进行安装,如果已经安装请忽略:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Homebrew官网: https://brew.sh/

2,使用Homebrew安装FFmpeg

在终端中输入以下命令来安装FFmpeg:

brew install ffmpeg

3,安装完成后,查看ffmpeg的版本信息,检查是否安装成功。

ffmpeg -version

看到版本信息,即说明安装成功

Win系统安装FFmpeg

(此方法仅供参考,未经验证)

在Windows系统上安装FFmpeg的步骤稍微复杂一些,因为需要手动下载、解压软件包,并设置环境变量以便在任何路径下都能运行FFmpeg的命令。以下是在Windows上安装FFmpeg的详细指导:

1. 下载FFmpeg:

  • 访问FFmpeg官方网站下载页面:FFmpeg Official Download
  • 点击“Windows builds from gyan.dev”或其他Windows构建提供者的链接进入下载页。
  • 下载最新版本的FFmpeg构建(通常选择静态构建,64位或32位版本取决于你的系统)。

    2. 解压FFmpeg:

  • 下载后,你将得到一个.zip文件。右击该文件,选择“解压全部...”,然后选择一个你希望存放FFmpeg程序的路径。推荐解压到一个不包含空格的路径,譬如 C:\FFmpeg

    3. 设置环境变量:

  • 在Windows搜索栏中搜索“系统环境变量”并选择“编辑系统环境变量”。
  • 在系统属性窗口中点击“环境变量...”按钮。
  • 在系统变量区域中找到并选择Path变量,然后点击“编辑...”。
  • 在编辑环境变量窗口中,点击“新建”并添加你的FFmpeg的bin目录路径(如果你解压到 C:\FFmpeg,那么添加 C:\FFmpeg\bin)。
  • 点击确定,关闭所有打开的窗口以保存这个设置。

    4. 验证FFmpeg是否正确安装:

  • 打开命令提示符(可以在搜索栏搜索cmd命令提示符),然后输入以下命令:

cmd

     ffmpeg -version
  • 如果安装正确,你将看到FFmpeg的版本信息输出。

现在FFmpeg已经安装在了你的Windows系统上,你可以在命令提示符的任何目录下使用FFmpeg的命令了。如果在设置过程中有任何问题,确认你按照指导正确地解压文件并设置环境变量,重启可能需要重新启动你的计算机以使变更生效。

使用FFmpeg

把视频文件和音频文件合成

ffmpeg -i input_video.mp4 -i input_audio.aac -vcodec copy -acodec copy output.mp4

其中:

  • input_video.mp4 :为需要合成的视频文件
  • input_audio.mp4:为需要合成的音频文件
  • -vcodec copy:意思为,视频只复制,不编码解码
  • -acodec copy:意思为,音频只复制,不编码解码
  • output.mp4:为合成后的视频文件

提取视频(没有声音)

ffmpeg -i input.mp4 -vcodec copy -an out.mp4

其中:

  • input.mp4:为待提取的文件
  • -vcodec copy:意思为,视频只复制,不编码解码
  • -an:意思为,不要音频
  • output.mp4: 为输出的没有声音的视频文件

提取音频(没有画面)

ffmpeg -i input.mp4 -acodec copy -vn out.aac

其中:

  • input.mp4:为待提取的文件
  • -acodec copy:意思为,音频只复制,不编码解码
  • -vn:意思为,不要视频
  • output.aac: 为输出的没有视频的音频文件

使用FFmpeg把webm转换成mp4

ffmpeg -fflags +genpts -i input.webm -r 24 output.mp4

其中:

  • -fflags +genpts:这是一个FFmpeg的标志选项,用来调整输入/输出文件的行为。-fflags是指文件相关的标志,而+genpts则是一个特定的标志,表示生成新的PTS(Presentation Timestamps,演示时间戳)。这对于确保音视频同步或者在转码过程中调整帧率时十分重要,特别是如果源文件的时间戳存在问题时。
  • -i input.webm-i 后面跟随的是输入文件的路径,这里指定了input.webm作为输入文件。WebM是一种常用的视频文件格式,尤其是在网络上传输中。
  • -r 24:这个选项用来指定输出视频的帧率,这里是24帧每秒。帧率(Frame rate)是指视频每秒钟显示多少个独立的帧,24帧/秒是电影行业的标准帧率,被认为能提供很好的观看体验。
  • output.mp4:这是输出文件的名称和路径,这里的文件将被保存为output.mp4。MP4是一种非常流行且广泛支持的视频格式,适合于各种设备和平台上播放。

或者这个命令,但感觉只是换了后缀名称而已

ffmpeg -i input.webm -c copy output.mp4

其中:

  • -i input.webm-i选项后面跟输入文件的路径,这里指定了名为input.webm的WebM格式视频文件作为输入源。
  • -c copy:这是对编解码器(codec)操作的指令。-c是指定编解码器的选项,copy表明不对视频或音频数据进行转码处理,而是直接复制原始数据流到输出文件中。这意味着转换过程很快且不会降低原始文件的质量。
  • output.mp4:指定输出文件的名称和路径,这里是output.mp4。由于指令中没有指定输出文件的编码格式,FFmpeg会根据文件扩展名(.mp4)推断使用的容器格式。