C/C++知识点之FFMPEG进阶系列01-ffplay命令详解
小标 2019-03-01 来源 : 阅读 1349 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之FFMPEG进阶系列01-ffplay命令详解,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之FFMPEG进阶系列01-ffplay命令详解,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之FFMPEG进阶系列01-ffplay命令详解

ffplay是一个基于FFMPEG库和SDL库开发的多媒体播放器。它的主要目的是是用来测试FFMPEG的各种API,比如codec/format/filter等等库。


掌握ffplay的设计逻辑,对于播放器开发人员提升经验非常有帮助。哔哩哔哩的ijkplayer就是基于ffplay做的二次开发。

命令格式


ffplay [options] [input_url]


主要选项

选项

说明

-x  width    强制显示宽带。    

-y  height    强制显示高度。    

-s   size    帧尺寸 设置显示帧存储(WxH格式),仅适用于类似原始YUV等没有包含帧大小(WxH)的视频。该参数已经被废弃,请尝试用-video_size代替    

-fs    以全屏模式启动。    

-an    禁用音频(不播放声音)    

-vn    禁用视频(不播放视频)    

-sn    禁用字幕(不显示字幕)    

-ss  pos    根据设置的秒进行定位拖动,注意时间单位:比如'55' 55 seconds, '12:03:45' ,12 hours, 03 minutes and 45 seconds, '23.189' 23.189 second    

-t   duration    设置播放视频/音频长度,时间单位如 -ss选项    

-bytes    按字节进行定位拖动。    

-seek_interval interval    自定义左/右键定位拖动间隔(以秒为单位),默认值为10秒    

-nodisp    关闭图形化显示窗口,视频将不显示    

-noborder    无边框窗口    

-volume   vol    设置起始音量。音量范围[0 ~100]    

-f fmt    强制使用设置的格式进行解析。比如-f s16le    

-window_title title    设置窗口标题(默认为输入文件名)    

-loop  number    设置播放循环次数    

-showmode  mode    设置显示模式,可用的模式值:0 显示视频,1 显示音频波形,2 显示音频频谱。缺省为0,如果视频不存在则自动选择2    

-vf  filtergraph    设置视频滤镜    

-af  filtergraph    设置音频滤镜    

-i    input_url    input_url    

高级选项


选项

说明

-pix_fmt format    格式设置像素格式。此选项已被弃用,有利于私有选项,try -pixel_format    

-stats    打印多个回放统计信息,包括显示流持续时间,编×××参数,流中的当前位置,以及音频/视频同步差值。默认情况下处于启用状态,要显式禁用它则需要指定-nostats。    

-fast    非标准化规范的多媒体兼容优化    

-genpts    生成pts。    

-sync type    同步类型 将主时钟设置为audio(type=audio),video(type=video)或external(type=ext),默认是音频为主时钟。    

-ast audio_stream_specifier    指定音频流索引,比如-ast 3,播放流索引为3的音频流    

-vst video_stream_specifier    指定视频流索引,比如-vst 4,播放流索引为4的视频流    

-sst subtitle_stream_specifier    指定字幕流索引,比如-sst 5,播放流索引为5的字幕流    

-autoexit    视频播放完毕后退出。    

-exitonkeydown    键盘按下任何键退出播放    

-exitonmousedown    鼠标按下任何键退出播放    

-codec:media_specifier codec_name    强制使用设置的多媒体×××,media_specifier可用值为a(音频), v(视频)和s字幕。比如-codec:v h265 强制视频采用h265解码    

-acodec codec_name    强制使用设置的音频×××进行音频解码    

-vcodec codec_name    强制使用设置的视频×××进行视频解码    

-scodec codec_name    强制使用设置的字幕×××进行字幕解码    

-autorotate    根据文件元数据自动旋转视频。默认情况下启用,若需禁用则使用-noautorotate    

-framedrop    如果视频不同步则丢弃视频帧。当主时钟非视频时钟时默认开启。若需禁用则使用  -noframedrop    

-infbuf    不限制输入缓冲区大小。尽可能快地从输入中读取尽可能多的数据。播放实时流时默认启用,如果未及时读取数据,则可能会丢弃数据。此选项将不限制缓冲区的大小。若需禁用则使用-noinfbuf    


播放控制

选项

说明

q, ESC    退出播放    

f    全屏切换    

p, SPC    暂停    

m    静音切换    

9, 0    9减少音量,0增加音量    

/, *    /减少音量,*增加音量    

a    循环切换音频流    

v    循环切换视频流    

t    循环切换字幕流    

c    循环切换节目    

w    循环切换过滤器或显示模式    

s    逐帧播放    

left/right    向后/向前拖动10秒    

down/up    向后/向前拖动1分钟    

page down/page up    拖动上一个/下一个。或者如果没有章节向后/向前拖动10分钟。    

鼠标右键单击    拖动与显示宽度对应百分比的文件进行播放    

鼠标左键双击    全屏切换    


应用范例


播放媒体文件


打开网络直播流,可以使用命令
ffplay -window_title "rtmp stream" rtmp://202.69.69.180:443/webcast/bshdlive-pc


从2秒播放一个视频,播放时长为10秒钟,播放完成后自动退出ffplay,播放器的窗口标题为”test time”,
ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4


强制使用mp3×××解码aac的音频,将会报错:
ffplay -acodec mp3 test.mp4


当视频流中出现多个Program时,播放Program与常规的播放方式则有所不同,需要指定对应的流,可以通过vst、ast、sst参数指定,例如希望播放Program 13中的音视频流,则通过如下命令行指定:
ffplay -vst 4 -ast 5 ~/Movies/movie/ChinaTV-11.ts

ffplay的数据可视化分析应用


当播放视频时体验×××是如何解码每个宏块的,可以使用命令
ffplay -debug vis_mb_type -window_title "show vis_mb_type" -ss 20 -t 10 -autoexit Titanic.ts
显示窗口内容



在输出的视频信息中,可以看到不同颜色的方块,下面来说明一下这些颜色代表着什么信息:


通过ffplay查看B帧预测与P帧预测信息,希望将信息在窗口中显示出来,使用命令
ffplay -vismv pf Titanic.ts
显示效果如图

通过图中的箭头可以看到p帧运动估计的信息
而vismv参数则是用来显示图像解码时的运动向量信息的,参数可以设置三种类型的运动向量信息显示

这个vismv参数将会在未来被替换掉,未来更多的是使用codecview这个filter来进行设置,如上面
图像,也可以通过下面这条命令完成
ffplay -flags2 +export_mvs  Titanic.ts -vf codecview=mv=pf+bf+bb


当播放音频文件时,不确定文件的声音是否正常,噪声数据等分析,可以直接使用ffplay播放音频文件,播放的时候将会把解码后的音频数据以音频波形显示出来:
ffplay -showmode 1 Titanic.ts


过滤器(filter)


在多媒体处理中,filter的意思是被编码到输出文件之前用来修改输入文件内容的一个软件工具。比如:视频翻转,旋转,缩放等。
语法:[input_link_label1] [input_link_label1]... filter_name=parameters [output_link_label1] [output_link_label2] ...
过滤器图link label:是标记过滤器的输入或输出名称


视频过滤器-vf


将原视频按顺时针旋转90度
ffplay -i test.mp4 -vf transpose=1


将原视频垂直翻转
ffplay -i test.mp4 -vf vflip  transpose=1


将以下两个效果叠加
ffplay -i test.mp4 -vf vflip,transpose=1



音频过滤器-af


实现快速播放,声音速度是原始速度的1.5倍
ffplay -i test.mp4 -af atempo=1.5


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程