在FFmpeg中通常使用ffplay作为播放器,其实ffplay同样也可作为很多音视频的图形化分析工具,通过ffplay可以看到视频图像的运动估计方向、音频数据的波形等,以下将介绍更多参数并举例说明。
可回顾FFmpeg中ffmpeg,ffprobe见以下链接。
FFmpeg工具(一) — ffmpeg视频处理命令行大全
FFmpeg工具(二) — ffprobe常用命令
FFmpeg工具(三) — ffplay常用命令
ffplay常用命令行参数
ffplay不仅仅是播放器,同时也是测试ffmpeg的codec引擎、format引擎,以及filter引擎的工具,并且还可以进行可视化的媒体参数分析。
1、查看详细的帮助信息
ffplay -help
以下展示ffplay基础帮助信息
参数 | 说明 |
---|---|
x | 强制设置视频显示窗口的宽度 |
y | 强制设置视频显示窗口的高度 |
s | 设置视频显示的宽高 |
fs | 强制全屏显示 |
an | 屏蔽音频 |
vn | 屏蔽视频 |
sn | 屏蔽字幕 |
ss | 根据设置的秒进行定位拖动 |
t | 设置播放视频/音频的长度 |
bytes | 设置定位拖动的策略,0为不可拖动,1为可拖动,-1为自动 |
nodisp | 关闭图形化显示窗口 |
f | 强制使用设置的格式进行解析 |
window_title | 设置显示窗口的标题 |
af | 设置音频的滤镜 |
codec | 强制使用设置的codec进行解码 |
autorotate | 自动旋转视频 |
2、从视频的30s开始播放,播放10s的文件,则用如下命令:
ffplay -ss 30 -t 10 input.mp4
3、自定义播放器窗口显示标题
ffplay -window_title "hello world" input.mp4
4、打开网络直播流
ffplay -window_title "网络直播流" rtmp://....
ffplay高级参数
ffplay高级参数如下表:
参数 | 说明 |
---|---|
ast | 设置将要播放的音频流 |
vst | 设置将要播放的视频流 |
sst | 设置将要播放的字幕流 |
stats | 输出多媒体播放状态 |
fast | 非标准化规范的多媒体兼容优化 |
sync | 音视频同步设置可根据音频时间、视频时间或者外部扩展时间进行参考 |
autoexit | 多媒体播放完毕之后自动退出ffplay,ffplay默认完毕之后不退出播放器 |
exitonkeydown | 当有按钮按下事件产生时退出ffplay |
exitonmousedown | 当有鼠标按下事件产生时退出ffplay |
loop | 设置多媒体文件循环播放的次数 |
framedrop | 当cpu资源占用过高时,自动丢帧 |
infbuf | 设置无极限的播放器buffer,这个选项常见于实时流媒体播放场景 |
vf | 视频滤镜设置 |
acodec | 强制使用设置的音频解码器 |
vcodec | 强制使用设置的视频解码器 |
scodec | 强制使用设置的字幕解码器 |
5、从20s播放一个视频,时长10s,播放完成自动退出ffplay,可以使用系统命令time查看命令运行时长:
time ffplay -winow_title "hello" -ss 20 -t 10 -autoexit input.mp4
6、播放视频时加载字幕文件,可以通过加载ASS或者SRT字幕文件来解决,下面列举一个加载SRT字幕的例子,首先编辑srt字幕文件,内容如下:
1
00:00:01.000 --> 00:00:10.000
这是我 我是谁
2
00:00:10.001 --> 00:00:20.000
我爱中国
3
00:00:20.001 --> 00:00:30.000
为人民服务
然后通过filter将字幕文件加载到播放数据中,使用命令如下:
ffplay -window_title "字幕文件" -vf ‘subtitles=input.srt’ input.mp4
ffplay的数据可视化分析应用
1、使用ffplay除了可以播放视频流媒体文件之外,还可以作为可视化的视频流媒体分析工具,例如播放音频文件时,如果不确定文件的声音是否正常,则可以直接使用ffplay播放音频文件,播放的说话其将会把解码后的音频数据以音频波形的形式显示出来,命令如下:
ffplay -showmode 1 output.mp3
2、当播放视频时想要体验解码器是如何解码每个宏块的,可以使用如下命令:
ffplay -debug vis_mb_type -window_title "解码" -ss 20 -t 10 input.mp4
3、通过ffplay查看B帧预测与P帧预测信息,希望将信息在窗口中显示出来,可使用如下命令:
ffplay -vismv pf input.mp4
vismv参数是用来显示图像解码时的运动向量信息的,可以设置三种类型的运动向量信息显示,
参数 | 说明 |
---|---|
pf | P帧向前运动估计显示 |
bf | B帧向前运动估计显示 |
bb | B帧向后运动估计显示 |
这个vismv参数可以被替换掉,如果使用这个参数不行的话,可以使用codecview这个滤镜进行设置,比如下面这条命令来完成:
ffplay -flags2 +export_mvs -ss 10 input.mp4 -vf codecview=mv=pf