1. ffmpeg 简介

FFmpeg是一套开源计算机程序,用于记录、转换数字音频和视频,并支持流媒体转化。它的名字来自"Fast Forward MPEG",表明了它最初的目标是快速处理 MPEG 格式的视频。

它由以下三部分组成:

1.工具软件:包括四个核心工具软件,分别是:

  • ffmpeg:用于音视频的转码和转换。
  • ffplay:提供简单的音视频播放功能。
  • ffserver:用作流媒体服务器。
  • ffprobe:用于多媒体码流的分析。

2.SDK(软件开发工具包):针对不同平台编译的库,包含了以下功能:

  • 音视频编解码器。
  • 提供简化编程的多媒体应用工具。
  • 支持多种多媒体容器格式的封装和解封装工具。
  • 常用的多媒体处理滤镜。
  • 音视频数据采集和渲染设备相关功能。
  • 图像缩放、色彩空间转换和像素格式转换工具。
  • 音频重采样和格式转换功能。

3.源代码:FFmpeg的实现采用C语言,主要在Linux平台上开发。它还依赖多个第三方工程来扩展其功能。

FFmpeg是一个多媒体处理工具集,具备广泛的功能,包括音视频处理、流媒体转化等。其模块化的设计使其成为处理多媒体数据的强大工具,可适用于各种多媒体应用,无论是音视频专业人士还是开发者都可以受益于其功能和灵活性。

日常工作中,我们最常用的是它的命令行工具,功能强大,堪称视频处理的瑞士军刀。

2. ffmpeg 安装

2.1 macos 下安装ffmpeg

macos 下通过brew工具安装

brew update
brew upgrade
brew install ffmpeg

2.2 Ubuntu 下安装ffmpeg

Ubuntu 下通过brew工具安装

sudo apt update
sudo apt upgrade
sudo apt install ffmpeg

3. 使用ffmpeg提取视频音轨

在媒体制作工作中,你希望对已经完成制作的视频再发布一个声音版,这时我们需要从视频中把音轨抓取出来保存为另外一个文件。

仅需一条ffmpeg命令即可完成:

ffmpeg -i sourceVideo.mp4 -c:a mp3 -map 0:a:0 targetAudio.mp3

上面命令中

-i sourceVideo.mp4 指定输入的视频文件名称和路径

-c:a mp3 指定输出的音频编码采用mp3编码器

-map 0:a:0 指定输入输出的映射

targetAudio.mp3 指定输出的音频文件名称和路径

4. 使用ffmpeg替换视频音轨

还有一种经常遇到的场景,你希望替换一个已经制作好的视频文件中的音轨,比如你想把完成翻译后的录音替换到视频中,或者你想把码率更高的高解析度音频替换到视频中。

仅需一条ffmpeg命令即可完成:

ffmpeg -i sourceVideo.mp4 -i sourceAudio.flac -c:v copy -c:a alac -map 0:v:0 -map 1:a:0 targetVideo.mp4

上面命令中

-i sourceVideo.mp4 指定输入的视频文件名称和路径

-i sourceAudio.flac 指定输入的音频文件名称和路径,这里是一个无损格式的flac音频文件

-c:v copy 指定输出的视频编码,copy指直接拷贝源文件的内容,不就行二次编码

-c:a alac 指定输出的音频编码采用alac编码器

-map 0:v:0  指定第一个输入映射到输出的视频

-map 1:a:0 指定第二个输入映射到输出的音频

targetVideo.mp4 指定输出的视频文件名称和路径

5. ffmpeg 使用说明

ffmpeg 包含了详细的参数说明,可以通过下面方式查看

简单的参数说明

ffmpeg -h

详细的参数说明

ffmpeg -h long

完整的参数说明

ffmpeg -h full