在数字内容爆炸的时代,视频已经成为信息传播的重要方式之一。无论是短视频创作者、企业培训师,还是专业影视团队,视频处理的需求日益增长。但是如何高效处理海量视频文件?是大家都面临的一个共同挑战。FFmpeg作为一款开源的视频处理工具,因其功能强大、使用灵活而被广泛应用于视频录制、转码、流媒体传输等领域。本文将带你从零开始掌握FFmpeg,涵盖基础操作、高阶技巧、实战案例,助你轻松应对转码、剪辑、直播推流等全场景需求,帮助您轻松掌握这款强大的视频处理工具。
FFmpeg 是一个开源的软件项目,由一组工具、库和文档组成,提供命令行方式调用,专门用来编辑处理各种音视频或图像。它的源码是由 C 语言编写基于 Linux 系统中开发,不过在其它操作系统中都可以运行,跨平台性良好。被广泛应用于视频网站、播放器、编码器等多种场景中。
FFmpeg是一个包含多个组件的库和工具集合,主要用于音频和视频的处理。它的主要组件包括:

打开终端输入:ffmpeg -version
若显示版本信息(如ffmpeg version 5.1.2),则安装成功!
1、基础转码:MP4转MOV
ffmpeg -i input.mp4 -c:v copy -c:a copy output.mov
参数解析:
2、压缩视频体积
ffmpeg -i input.mp4 -vf "scale=1280:-1" -c:v libx264 -crf 28 -preset medium compressed.mp4
参数解析:
3、提取音频
ffmpeg -i video.mp4 -vn -c:a mp3 audio.mp3
参数解析:
4、合并视频与音频
ffmpeg -i video.mp4 -i audio.mp3 -c copy -map 0:v:0 -map 1:a:0 output.mp4
参数解析:
5、剪切视频片段
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:02:30 -c:v copy -c:a copy clip.mp4
参数解析:
6、直播推流与拉流
ffmpeg -re -i input.mp4 -c:v libx264 -preset ultrafast -f flv "rtmp://live.example.com/app/stream_key"
-re:按实际帧率读取输入;-preset ultrafast:最低延迟。
ffmpeg -i "rtmp://live.example.com/app/stream_key" -c copy output.mp4
7、添加水印与字幕
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
overlay=10:10:水印位于左上角,距左10px、距上10px。
ffmpeg -i video.mp4 -vf "subtitles=subtitle.srt" output.mp4
8、视频合成与分屏
创建list.txt文件,内容为:
file 'video1.mp4'
file 'video2.mp4'
执行命令:
ffmpeg -f concat -i list.txt -c copy merged.mp4
ffmpeg -i main.mp4 -i pip.mp4 -filter_complex "[1]scale=320:-1[small];[0][small]overlay=W-w-10:H-h-10" output.mp4
将pip.mp4缩放至宽度320px,并放置在主视频右下角。
9、硬件加速(GPU转码)
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p7 -cq 23 output.mp4
h264_nvenc:调用NVIDIA显卡编码器。
ffmpeg -i input.mp4 -c:v h264_qsv -global_quality 23 output.mp4
接下来讲解 FFmpeg 音视频处理的入门知识与原理,关于 视频文件的组成。
FFmpeg 通过以下步骤实现输出转码转封装:

解封装(Demuxing):解封装阶段,FFmpeg 会读取输入视频文件的容器格式(例如 MP4、AVI、FLV 等),解析视频流数据和元数据信息,提取出音频流和视频流拆分成独立的音频和视频数据。
解码(Decoding):解码阶段,是将音频和视频数据从原始的视频压缩格式(如 H.264、AAC 等),解码为未压缩的原始数据。FFmpeg 使用解码器将其还原为原始的音频样本和视频帧。
编码(Encoding):编码阶段,FFmpeg 使用选定的编码器将已解码的音频和视频数据,重新编码为新的压缩格式。以减小文件大小并保持一定的图像质量和音频保真度。
封装(Muxing):封装阶段,FFmpeg 将重新编码的音频和视频数据合并到指定的输出容器格式中,生成最终的转码文件。封装过程还会添加必要的元数据。
这四个过程通常是连续进行的,每个阶段的输出将作为下一个阶段的输入。这其中需要经过6个步骤:读取输入内容、音视频解封装、解码每一帧音视频数据、编码每一帧音视频数据、音视频重新封装、输出到目标:

FFmpeg 提供了一系列命令行选项和库函数来实现这些过程,并允许用户根据需求自定义设置参数,以满足不同的转码需求。一般我们用 FFmpeg 是以“输入→处理→输出”的流程来理解并书写命令的。
无论是个人创作者还是企业开发者,FFmpeg都能以零成本、高效率、无限制的方式,满足你对视频处理的所有想象。FFmpeg作为一款功能强大的视频处理工具,已经广泛应用于各个领域。掌握FFmpeg的使用方法,可以让您轻松应对各种视频处理任务。让我们一起探索FFmpeg的奥秘!让你的视频内容在竞争中脱颖而出!开启视频处理的新篇章!
延伸学习:
联系我们
customer@ffy.com
川公网安备51015602000993