目录
前言
实战
播放音频
播放视频
总结
前言
FFmpeg是一个完整的跨平台音视频解决方案,它可以用于处理音频和视频的转码、录制、流化处理等应用场景。官网:http://ffmpeg.org/。FFmpeg有三大利器,分别是ffmpeg、ffprobe、ffplay。今天主要介绍ffplay,它是FFmpeg用于播放音视频文件的播放器。
实战
ffplay既可以播放音频,又可以播放视频,是从事音视频相关开发的工作人员常用的基础工具之一。掌握ffpaly的使用是非常有必要的。接下来,我们就一起看一下具体怎么使用ffplay。
播放音频
首先我们直接用ffplay播放一首音乐,这首音乐就选我自己比较喜欢的《少年》。
代码语言:javascript复制./ffplay 少年.mp3
播放过程中会动态的展示一些数据,表明音乐文件的基本媒体信息,比如,音频编码格式是LAME,音频采样率44.1KHz,立体声双声道,采样格式是fltp,码率是128kb/s。
代码语言:javascript复制Input #0, mp3, from '少年.mp3':
Duration: 00:03:56.15, start: 0.025057, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s
Metadata:
encoder : LAME3.99r
Side data:
replaygain: track gain - -8.000000, track peak - unknown, album gain - unknown, album peak - unknown,
319.48 M-A: 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
同时,播放过程中还会出现一个频谱图,用来实时显示音频的频谱情况,具体如下图所示:
其实,图像模式也是可以选择的,如果想看波形图的话,可以运行如下命令:
代码语言:javascript复制./ffplay -showmode 1 少年.mp3
就会出现如下图所示的动态波形图:
播放图形的显示模式有两种,一种是波形图,showmode=1,一种是频谱图,showmode=2,音乐默认播放的是频谱图。如果你不想显示任何播放图形,也是可以的,取showmode=0,运行如下命令:
代码语言:javascript复制./ffplay -showmode 0 少年.mp3
这样就只有终端的输出内容了,看图:
了解音频的同学应该都知道音频的原始格式是PCM数据,那么问题来了,ffplay可不可以播放PCM数据的音频文件呢?
答案是肯定的!
但是需要明确指定格式、采样率、声道数三个重要参数,如下命令:
代码语言:javascript复制./ffplay audio-pcm.pcm -f f32le -channels 2 -ar 48000
audio-pcm.pcm文件的采样格式必须是f32le,声道数是2,采样率是48kHz才能正常播放。
如果缺少PCM实验数据,可以从这里下载:https://download.csdn.net/download/liuzehn/12585149。
播放视频
接下来看看怎样播放视频文件,运行如下命令:
代码语言:javascript复制./ffplay test.mp4
这样,一个从抖音上截取的视频就自动播放了:
不仅如此,当视频文件存在多路音频或者多路视频时,ffplay还可以指定播放哪路音频或者视频,默认播放index=0的音频和视频,比如指定播放第二路音频:
代码语言:javascript复制./ffplay test.mp4 -ast 1
比如指定播放第二路视频:
代码语言:javascript复制./ffplay test.mp4 -vst 1
另外,大家都知道音频和视频同时存在时,播放的时候就面临音画同步的问题,那么ffplay是怎么处理的呢?其实ffplay默认是以音频时间戳为基准的,当然我们也可以指定以视频或者系统时间戳为基准,对应的命令如下:
以视频时间戳为播放基准的命令:
代码语言:javascript复制./ffplay test.mp4 -sync video
以系统时间戳为播放基准的命令:
代码语言:javascript复制./ffplay test.mp4 -sync ext
刚才,我们已经知道ffplay可以播放音频原始数据PCM格式文件,那么ffplay可以播放视频原始数据YUV格式的视频文件吗?
答案也是可以的。命令如下:
代码语言:javascript复制./ffplay test.yuv -f rawvideo -pixel_format yuv420p -s 544*960
如果缺少YUV实验数据,可以从这里下载:https://download.csdn.net/download/liuzehn/12596648 。
总结
至此,我们已经见识了ffplay的强大之处,更多技能还没有陈述完,大家自己尝试解锁吧。 最后推荐大家使用如下命令:
代码语言:javascript复制./ffplay -h