ffplay用法详解
2023-10-31 乱云飞
摘要本文描述了FFmpeg软件包中的ffplay程序的用法。
ffplay简介
ffplay是FFmpeg软件包的一部分,它是一个简单的媒体播放器,可以播放FFmpeg支持的各种音视频格式。ffplay通过命令行界面运行,并且提供了许多选项和参数以控制播放过程。它具有实时视频和音频效果显示、支持调整视窗大小、全屏显示、暂停、快进、快退、静音等基本播放控制功能,还可以进行一些高级的音视频处理,如视频截图、音量控制、字幕显示等。
ffplay采用SDL库实现音频、视频和字幕的渲染。
SDL(Simple DirectMedia Layer)是一个跨平台的开源多媒体库,提供了底层的硬件访问、音频、图像、事件处理等功能,方便开发者编写跨平台的游戏、模拟器、媒体播放器等应用程序。
ffplay命令用法
ffplay [options] input_file
options就是可选的选项列表。
“-”开头的字符串是ffplay内定的参数名,形如${value}的字符串是由用户指定的参数值。
ffplay自描述信息
-L 显示许可协议
-h ${topic} 显示帮助
-? ${topic} 显示帮助
-help ${topic} 显示帮助
--help ${topic} 显示帮助
-version 显示版本
-buildconf 显示构建配置
-formats 显示可用的格式
-muxers 显示可用的复用器
-demuxers 显示可用的解复用器
-devices 显示可用的设备
-codecs 显示可用的编解码器
-decoders 显示可用的解码器
-encoders 显示可用的编码器
-bsfs 显示可用的比特流滤镜
-protocols 显示可用的协议
-filters 显示可用的滤镜
-pix_fmts 显示可用的像素格式
-layouts 显示标准的音频输出声道布局
-sample_fmts 显示可用的音频采样格式
-dispositions 显示可用于控制媒体文件行为的标志
-colors 显示可用的颜色编码标准名称
ffplay日志和报告
-loglevel loglevel 设置日志级别
-v loglevel 设置日志级别
-report 生成一个名为ffplay-${date}-${time}.log的报告文件,
ffplay播放控制快捷键
q, ESC 关闭播放器
f 全屏状态开关
p, Space 暂停或继续
m 静音开关
9, 0 降低和增加音量
/, * 降低和增加音量
a 循环切换音频通道(轨,一张CD可包含多个音轨)
v 循环切换视频通道
t 循环切换字幕
c 循环切换节目(比如DVD章节)
w 在视频画面或音频可视化模式之间循环切换
s 激活帧步进模式
left/right 向后/向前跳过10秒或跳过由-seek_interval设置的间隔
down/up 向后/向前跳过1分钟
page down/page up 向后/向前跳过10分钟
鼠标右键 跳转到总时长中与鼠标光标所在位置相对窗口宽度的百分比对应的位置。
鼠标左键双击 全屏状态切换
ffplay主选项
-max_alloc ${bytes} 设置单个内存分配块的最大字节数
-sources ${device} 列出指定输入设备的源
-sinks ${device} 列出指定输出设备的sinks
-x ${width} 强制显示宽度(单位:像素)
-y ${height} 强制显示高度(单位:像素)
-fs 强制全屏状态
-an 禁用音频
-vn 禁用视频
-sn 禁用字幕
-ss ${pos} 跳转到${pos}秒的位置
-t ${duration} 指定播放时长(单位:秒)
-bytes ${val} 是否按字节偏移跳转,值含义:0=off 1=on -1=auto
-seek_interval ${secs} 设置左右箭头跳转的跨度(单位:秒)
-nodisp 禁用图形显示
-noborder 无边框窗口
-alwaysontop 窗口总在最上
-volume ${volume} 设置初始音量,0=min 100=max
-f ${fmt} 强制使用格式。通常根据文件扩展名猜测,大部分情况不需要指定格式
-window_title ${title} 设置窗口标题
-af ${filter_graph} 设置音频滤镜
-showmode ${mode} 设置显示模式(0 = video, 1 = waves, 2 = RDFT)
-i ${input_file} 读取指定文件
-codec ${decoder_name} 强制使用解码器
-autorotate 自动旋转视频
ffplay高级选项
-cpuflags ${flags} 强制指定CPU标志(逗号分隔的CPU指令集扩展,例如mmx、sse、sse2、sse3、ssse3、sse4、avx、avx2等。)
-cpucount ${count} 强制指定使用的CPU逻辑核心个数
-hide_banner 不显示程序广告
-ast ${stream_specifier} 选择期望的音频流
-vst ${stream_specifier} 选择期望的视频流
-sst ${stream_specifier} 选择期望的字幕流
-stats 显示统计信息
-fast 启用不符合规范的优化,以损失画质为代价换取速度。
-genpts 生成pts
-drp 是否让解码器(decorder)重新排序(reorder)pts,0=off 1=on -1=auto
-lowres 使用低解析度
-sync type 设置音视频同步时钟源,取值范围{audio,video,ext}
-autoexit 播放结束后自动退出
-exitonkeydown 按任意键退出
-exitonmousedown 鼠标按下时退出
-loop ${count} 设置循环播放次数,-1表示无限循环。
-framedrop 当CPU性能不足时丢帧处理。
-infbuf 不限输入缓冲区尺寸(useful with realtime streams)
-left ${x_pos} 设置播放器窗口左上角的x坐标
-top ${y_pos} 设置播放器窗口左上角的y坐标
-vf ${filter_graph} 设置视频滤镜
-rdftspeed ${msecs} 设置音频频谱效果速度
-acodec ${decoder_name} 强制音频解码器
-scodec ${decoder_name} 强制字幕解码器
-vcodec ${decoder_name} 强制视频解码器
-find_stream_info 读取并解码流以用启发式方法填充缺失的信息
-filter_threads ${num} 每个图的滤镜线程数量
ffplay预览摄像头
在Windows上,要使用ffplay播放视频采集设备,您可以使用以下命令:
#-f dshow 指定输入格式为dshow,这是Windows上的一套经典的多媒体设备API。
#Windows上的多媒体API除了dshow,还有较老的VFW和较新的Media Foundation。
ffplay -f dshow -i video="设备名称"
注意,您需要将"设备名称"替换为实际的视频设备名称。您可以通过以下方式查找设备名称:
1.打开命令提示符窗口(按下Win键,然后输入"cmd",按Enter键打开)。
2.在命令提示符中运行以下命令:
ffmpeg -list_devices true -f dshow -i dummy
3.这将列出所有可用的视频和音频设备。在视频设备列表中找到您要使用的设备,并记下它的名称(比如有个video输入设备名为w300)。
4.输入如下命令,预览视频输入设备采集的视频画面:
ffplay -x 1280 -y 720 -f dshow -i video="w300"
运行以上命令后,ffplay将会打开视频采集设备并开始播放实时视频。您可以在窗口中看到设备捕捉到的图像。
总结
ffplay功能强大,界面简单,只能通过快捷键控制。ffplay可用于测试网络串流和ffmpeg生成的媒体文件。ffplay的源码充分展示了媒体播放器的核心原理,值得阅读和借鉴。
本文链接:http://80c.cc/ez/715.html
发表评论: