ffplay的正确打开方式(三剑客之一)

2021-06-29 15:48:52 浏览数 (1)

目录

前言

实战

播放音频

播放视频

总结


前言

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

0 人点赞