

FFmpeg 命令行工具 - 基础
source link: http://blog.danthought.com/programming/2020/06/23/ffmpeg-tools-fundamentals/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

FFmpeg 命令行工具 - 基础
作为开发者,使用 FFmpeg 主要分两部分:命令行工具和接口使用,本文讲解如何在 macOS 上编译 FFmpeg,以及 FFmpeg 命令行工具使用的一些基本概念。

针对 macOS 平台来编译。
首先需要安装 Xcode,这样才有编译工具链 LLVM。
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xvzf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install
brew install nasm
如果希望通过 ffplay 来播放音视频文件,还需要安装 SDL:
brew install sdl2
在编译 FFmpeg 前,可以通过如下命令来配置要支持和禁用的一些功能模块:
./configure --disable-xxx --enable-xxx
查看有哪些编码格式:
./configure --list-encoders
./configure --list-decoders
查看有哪些文件封装格式:
./configure --list-muxers
./configure --list-demuxers
查看有哪些流媒体传输协议:
./configure --list-protocols
最后编译 FFmpeg:
make
make install
命令行工具
命令行工具的介绍
- ffmpeg 音视频编解码。
- ffplay 音视频播放和可视化分析,对于视频播放器,不得不提的一个问题就是音画同步,在 ffplay 中音画同步的实现方式其实有三种,分别是:
- 以音频为主时间轴作为同步源;
- 以视频为主时间轴作为同步源;
- 以外部时钟为主时间轴作为同步源。
- ffprobe 音视频内容分析。
命令基本格式
ffmpeg [global options] [input file options] -i input_file [output file options] output_file
ffmpeg -y -i video.avi -s vga video.mp4
显示输出预览
需要先安装 Simple DirectMedia Layer,简称 SDL。这样就可以不用先将输入文件转换为输出文件后,再播放输出文件来看效果。
ffmpeg -f lavfi -i rgbtestsrc -pix_fmt yuv420p -f sdl Example
转码的工作流程
工作流程:读取文件、解封装、解码、转换参数或经过过滤器、编码、封装、写入文件。

过滤器、过滤器链、过滤器图
简单过滤器

ffplay -f lavfi -i testsrc -vf transpose=1
复杂过滤器

ffmpeg -i liveshow.mp4 -i lighthouse.png -filter_complex overlay=w output.mp4
一个过滤器图由多个过滤器链组成,通过 ; 分割,一个过滤器链由多个过滤器组成,通过 , 分割。
下面的示例,第 1 个过滤器链将输入分割成 [a] 和 [b],第 2 个过滤器链将 [a] 通过 pad 处理变成 [1],第 3 个过滤器链将 [b] 通过 vflip 处理变成 [2],第 4 个过滤器链将 [1] 和 [2] 合并为一个画面:
ffplay -f lavfi -i rgbtestsrc -vf "split[a][b];[a]pad=2*iw[1];[b]vflip[2];[1][2]overlay=w"
一个视频文件可能包含多路流,通过 -map 去选择流,文件序号:流类型:流序号,序号从 0 开始,流类型有 a 视频、d 数据、s 字幕、t 附件、v 视频。
ffplay -i A.mov -i B.mov -i C.mov -map 0:v:0 -map 1:a:0 -map 2:s:0 clip.mov
指定数据大小
ffmpeg -i input.avi -b:v 1500000 output.mp4
ffmpeg -i input.avi -b:v 1500K output.mp4
ffmpeg -i input.avi -b:v 1.5M output.mp4
ffmpeg -i input.avi -b:v 0.0015G output.mp4
ffmpeg -i input.mpg -fs 10MB output.mp4
格式为 0xRRGGBB[@AA] 和 #RRGGBB[@AA],@ 后面的代表透明度。还有内建的如 red, black 等这样的颜色名称。
Lavfi 虚拟设备
通过 Lavfi 虚拟设备产生输入视频。
ffplay -f lavfi -i smptebars
ffplay -f lavfi -i color=c=blue
Recommend
-
115
-
6
FFmpeg 命令行工具 - 高级特性、Web 音视频、调试和测试 这篇文章讲解 FFmpeg 命令行工具中使用高级特性、Web 音视频、调试和测试相关的功能。
-
10
FFmpeg 命令行工具 - 预设、交错式视频、采集设备和颜色调整 这篇文章讲解 FFmpeg 命令行工具中预设、交错式视频、采集设备和颜色调整相关的功能。
-
14
这篇文章讲解 FFmpeg 命令行工具中使用图像处理和数字音频相关的功能。 静态图片: ffmpeg -i videoclip.avi -ss 01:23:45 i...
-
19
FFmpeg 命令行工具 - 格式转换、时间操作、数学函数、元数据和字幕 这篇文章讲解 FFmpeg 命令行工具中使用格式转换、时间操作、数学函数、元数据和字幕相关的功能。
-
11
这篇文章讲解 FFmpeg 命令行工具中使用视频编辑相关的功能:调整视频大小和视频缩放、剪裁视频、填充视频、翻转视频和旋转视频、模糊视频、锐化视频和其他降噪处理、视频叠加(画中画)、视频上添加文字。
-
21
FFmpeg 命令行工具 - 帮助和码率、帧率和文件大小 这篇文章讲解 FFmpeg 命令行工具中如何查看帮助,以及关于码率、帧率和文件大小的概念和用法。
-
13
作为开发者,使用 FFmpeg 主要分两部分:命令行工具和接口使用,本文讲解如何在 macOS 上交叉编译 FFmpeg,再将其集成到 Xcode 中,再初步介绍 FFmpeg 接口使用时会用到的常用结构,最后实际编写音视频文件转封装的代码。
-
4
了解 FFmpeg 学习 FFmpeg 工具的下载及环境配置 了解 FFmpeg 工具的使用方式 了解 FFmpeg play 的使用方法 了解 FFmpeg paly 的音量设置、窗口设置、音量设置等设置方法 一、了解 FFmpeg ...
-
6
ffmpeg 命令行生成工具 ffmpeg 命令行生成工具 一个能帮你自动生成 ffmpeg 命令行参数的工具
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK