前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论ffplay的正确打开方式(一般人我不告诉他)

论ffplay的正确打开方式(一般人我不告诉他)

原创
作者头像
liuzhen007
修改2021-02-25 10:17:04
6K1
修改2021-02-25 10:17:04
举报
文章被收录于专栏:流媒体音视频

目录

前言

实战

播放音频

播放视频

总结


前言

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 实战
    • 播放音频
      • 播放视频
      • 总结
      相关产品与服务
      实时音视频
      实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档