文章目录
- [一、ffplay 命令行参数 - 音频滤镜](#一、ffplay 命令行参数 - 音频滤镜)
-
- [1、设置音频滤镜 -af 参数](#1、设置音频滤镜 -af 参数)
- [2、常用的 音频滤镜 参数](#2、常用的 音频滤镜 参数)
- [3、音频滤镜链 示例](#3、音频滤镜链 示例)
- [二、ffplay 命令行参数 - 统计信息](#二、ffplay 命令行参数 - 统计信息)
-
- [1、设置统计信息 -stats 参数](#1、设置统计信息 -stats 参数)
- [2、关闭统计信息 -nostats 参数](#2、关闭统计信息 -nostats 参数)
- [三、ffplay 命令行参数 - 同步时钟类型](#三、ffplay 命令行参数 - 同步时钟类型)
-
- [1、设置同步时钟类型 -sync 参数](#1、设置同步时钟类型 -sync 参数)
- 2、同步时钟类型参数选项列举
一、ffplay 命令行参数 - 音频滤镜
1、设置音频滤镜 -af 参数
ffplay 命令的 -af
参数用于 设置 音频滤镜 ( Audio Filter ) , 用于 对 音频流 应用 各种 处理 和 转换 效果 ;
多个 音频滤镜 可以组合在一起 , 形成一个 " 音频滤镜链 " , 音频滤镜 之间 使用 逗号 隔开 , 并按照指定的顺序 将 转换效果 应用于 正在播放的 音频 ;
" 音频滤镜链 " 是一个 描述 音频滤镜 及其 参数 的字符串 , 可以通过 该参数 来 设置 音效 , 调整音量 , 改变音频 采样率 , 进行 音频 重采样 ;
设置 " 音频滤镜链 " 会 降低 音频播放性能 , 尤其是 正在 处理高质量或高采样率的音频时 ;
使用 复杂的 " 音频滤镜链 " 时 , 建议关闭不必要的程序和功能 , 以确保流畅的播放体验 ;
单个 音频滤镜 示例 : 执行
cpp
ffplay -af "volume=0.5" fengjing.mp4
命令 , 将音量设置为 50% 音量 , 执行效果如下 :
2、常用的 音频滤镜 参数
ffplay 的 -af
参数 可以 设置 一个或多个 音频滤镜 , 这些 滤镜 可以改变音频的 音量 / 采样率 / 声道数 等效果 , 下面是 一些 常用的 -af 参数选项 :
-
volume=volume
: 设置 音频音量 , volume 是一个 乘数 , 可以设置一个 小数 或 整数 ,volume=0.5
就是将音量降低一半 ,volume=2
是 将音量 提高为原来的 2 倍 ;
-
atempo=tempo
: 设置 音频播放速度 , 参数值是一个浮点数 , tempo 参数值 > 1 时 音频播放速度加快 , 小于 1 时音频播放速度减慢 ;atempo=0.5
设置 0.5 倍速度播放 ;atempo=2.0
设置 2 倍速度播放 ;
-
aresample=resampler_options
: 设置音频重采样 ; 该 音频滤镜 可以用来改变音频的 采样率 / 格式 / 声道布局 ;aresample=44100
可以将 音频的采样率 从 原始值 改变为 44100 Hz ;
-
aformat=sample_fmts
: 强制转换音频样本格式 , 如 : 修改 位深度 和 编码方式 ;aformat=sample_fmts=s16
将 播放的音频 转为 16 位 有符号整数 编码 ;- ffplay 的
-af
参数主要用于实时应用音频效果 , 如调整音量 / 改变播放速度等 ; - 在 播放前 转换音频格式 , 建议使用 ffmpeg 命令 , 先转码 , 再使用 ffplay 播放 ;
-
achannelmap=channel_layout
: 重新映射音频声道 ; -
bass=gain
: 调整低音增益 ; -
treble=gain
: 调整高音增益 ;
3、音频滤镜链 示例
多个 音频滤镜 示例 : 执行
cpp
ffplay -af "volume=0.25,atempo=2.0" fengjing.mp4
命令 , 将音量设置为 0.25 倍 , 播放速度设置为 2 倍 , 执行效果如下 :
二、ffplay 命令行参数 - 统计信息
1、设置统计信息 -stats 参数
ffplay 命令的 -stats
参数 用于 在 命令行 中 打印 统计信息 , 这些统计信息 包括
- 显示流的持续时间
- 编解码器参数
- 流中的当前位置
- 音频 / 视频同步差值 ;
该 参数 选项 在默认情况下 是 启用状态 , 在 默认的 视频播放 过程中 可以看到这些统计信息 ;
执行
cpp
ffplay fengjing.mp4
命令 , 下图中 红色矩形框 中的内容 , 就是 播放时的 统计信息 ;
统计信息内容如下 :
cpp
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fengjing.mp4': 0B f=0/0
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: mp41
creation_time : 2024-02-09T06:29:29.000000Z
encoder : Bandicam 4.5.0.1587 / GDI / Nvidia NVENC
encoder-eng : Bandicam 4.5.0.1587 / GDI / Nvidia NVENC
Duration: 00:01:01.78, start: 0.000000, bitrate: 1783 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 752x420 [SAR 1:1 DAR 188:105], 1580 kb/s, 28.61 fps, 30 tbr, 30k tbn, 60 tbc (default)
Metadata:
creation_time : 2024-02-09T06:29:29.000000Z
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)
Metadata:
creation_time : 2024-02-09T06:29:29.000000Z
handler_name : SoundHandler
vendor_id : [0][0][0][0]
37.74 A-V: -0.030 fd= 67 aq= 30KB vq= 108KB sq= 0B f=0/0
部分内容解析 :
Duration: 00:01:01.78, start: 0.000000, bitrate: 1783 kb/s
: 是 码流长度 1 分钟零 1 秒 , 开始时间 0 , 比特率是 1783 kb/s ;37.74 A-V: -0.030
: 当前播放到了 37.74 秒 , 音视频 差值-0.030
秒 ;creation_time : 2024-02-09T06:29:29.000000Z
: 表示当前音频的创建时间是 2024 年 2 月 9 号 ;
2、关闭统计信息 -nostats 参数
ffplay 命令的 -nostats
参数 用于 关闭 统计信息 , 使用该参数后 , 不再显示 如下信息 :
- 显示流的持续时间
- 编解码器参数
- 流中的当前位置
- 音频 / 视频同步差值 ;
执行
cpp
ffplay -nostats fengjing.mp4
命令 , 可以关闭 统计信息 ;
在下图中 , 可以看到 下半部分 都是空白的 , 没有打印出 播放时 的 统计信息 ;
三、ffplay 命令行参数 - 同步时钟类型
1、设置同步时钟类型 -sync 参数
ffplay 命令的 -sync
参数 用于 设置 同步时钟类型 , 可以指定
- 音频流时钟
- 视频流时钟
- 外部时钟
三种 时钟 选项 , 同步时钟类型 又称为 " 主时钟 " , 这是 ffplay 播放器 用于同步 音频流 和 视频流 的时钟 ;
执行
cpp
ffplay -sync audio fengjing.mp4
命令 , 将 音频流时钟 设置为 主时钟 ;
2、同步时钟类型参数选项列举
ffplay 命令 -sync 参数值 选项 :
- audio : 将 音频流时钟 设置为 主时钟 , 该设置 是 默认设置 , ffplay 将 根据 音频流的播放速度 来 调整视频流 的播放速度 , 以确保 音频 和 视频 之间的同步 ;
- video : 将 视频流时钟 设置为 主时钟 , ffplay 将 根据 视频流的播放速度 来调整 音频流的播放速度 ;
- ext : 使用 外部时钟 ; 使用 外部设备 或 信号作为 主时钟 , 视频流的播放速度 和 音频流的播放速度 与 其他设备或信号 的 时钟 进行 同步 ;
执行
cpp
ffplay -sync video fengjing.mp4
命令 , 将 视频流时钟 设置为 主时钟 ;
执行
cpp
ffplay -sync ext fengjing.mp4
命令 , 将 外部电脑的时钟 设置为 主时钟 ;