目录
1 概要
ffplay [选项] [输入网址]
2 说明
FFplay 是一个非常简单且便携式的媒体播放器,使用 FFmpeg 库和 SDL 库。它主要用作各种 FFmpeg API 的测试平台。
3个选项
如果没有另外指定,所有数字选项都接受表示数字的字符串作为输入,该字符串后可能跟有 SI 单位前缀之一,例如:“K”、“M”或“G”。
如果将“i”附加到 SI 单位前缀,则完整的前缀将被解释为二进制倍数的单位前缀,它基于 1024 的幂而不是 1000 的幂。将“B”附加到 SI 单位前缀将乘以值除以 8。这允许使用例如:“KB”、“MiB”、“G”和“B”作为数字后缀。
不带参数的选项是布尔选项,并将相应的值设置为true。可以通过在选项名称前加上“no”前缀将它们设置为 false。例如,使用“-nofoo”会将名称为“foo”的布尔选项设置为 false。
3.1 Stream specifiers
某些选项适用于每个流,例如比特率或编解码器。流说明符用于精确指定给定选项所属的流。
流说明符是一个字符串,通常附加到选项名称并用冒号分隔。例如-codec:a:1 ac3
包含
a:1
流说明符,它与第二个音频流匹配。因此,它将为第二个音频流选择 ac3 编解码器。
流说明符可以匹配多个流,以便该选项应用于所有流。例如,流说明符-b:a 128k
匹配所有音频流。
空流说明符匹配所有流。例如,-codec copy
或者-codec: copy
将复制所有流而不重新编码。
流说明符的可能形式是:
- stream_index
将流与该索引进行匹配。例如
-threads:1 4
,将第二个流的线程计数设置为 4。如果使用 stream_index作为附加流说明符(见下文),则它从匹配的流中选择流编号stream_index 。流编号基于 libavformat 检测到的流顺序,除非还指定了节目 ID。在这种情况下,它基于程序中流的顺序。- stream_type[:additional_stream_specifier]
Stream_type是以下之一:'v' 或 'V' 表示视频,'a' 表示音频,'s' 表示字幕,'d' 表示数据,'t' 表示附件。“v”匹配所有视频流,“V”仅匹配不附加图片、视频缩略图或封面艺术的视频流。如果使用 additional_stream_specifier ,则它匹配既具有此类型又匹配additional_stream_specifier的流。否则,它匹配指定类型的所有流。
- p:program_id[:additional_stream_specifier]
匹配程序中 ID 为program_id的流。如果 使用additional_stream_specifier,则它匹配既属于程序一部分又匹配additional_stream_specifier的流。
- #stream_id or i:stream_id
通过流 ID(例如 MPEG-TS 容器中的 PID)来匹配流。
- m:key[:value]
将流与具有指定值的元数据标签键相匹配。如果 未给出值,则将包含给定标记的流与任何值进行匹配。
- u
将流与可用配置相匹配,必须定义编解码器,并且必须提供视频尺寸或音频采样率等基本信息。
请注意,在 中
ffmpeg
,按元数据匹配仅适用于输入文件。
3.2 Generic options
这些选项在 ff* 工具之间共享。
- -L
显示许可证。
- -h, -?, -help, --help [arg]
显示帮助。可以指定可选参数来打印有关特定项目的帮助。如果未指定参数,则仅显示基本(非高级)工具选项。
arg的可能值为:
- long
除了基本工具选项之外,还打印高级工具选项。
- full
打印完整的选项列表,包括编码器、解码器、解复用器、复用器、过滤器等的共享和私有选项。
- decoder=decoder_name
打印有关名为解码器名称的解码器的详细信息。使用 -解码器获取所有解码器列表的选项。
- encoder=encoder_name
打印有关名为encoder_name的编码器的详细信息。使用 -编码器获取所有编码器列表的选项。
- demuxer=demuxer_name
打印有关名为demuxer_name的解复用器的详细信息。使用 -格式获取所有解复用器和复用器列表的选项。
- muxer=muxer_name
打印有关名为muxer_name的复用器的详细信息。使用 -格式获取所有复用器和解复用器列表的选项。
- filter=filter_name
打印有关名为filter_name的过滤器的详细信息。使用 -过滤器获取所有过滤器列表的选项。
- bsf=bitstream_filter_name
打印有关名为bitstream_filter_name的比特流过滤器的详细信息。使用-bsfs获取所有比特流过滤器列表的选项。
- protocol=protocol_name
打印有关名为protocol_name的协议的详细信息。使用- 协议获取所有协议列表的选项。
- -version
显示版本。
- -buildconf
显示构建配置,每行一个选项。
- -formats
显示可用格式(包括设备)。
- -demuxers
显示可用的多路分配器。
- -muxers
显示可用的复用器。
- -devices
显示可用设备。
- -codecs
显示 libavcodec 已知的所有编解码器。
请注意,本文档中使用术语“编解码器”作为更正确的媒体比特流格式的快捷方式。
- -decoders
显示可用的解码器。
- -encoders
显示所有可用的编码器。
- -bsfs
显示可用的比特流过滤器。
- -protocols
显示可用的协议。
- -filters
显示可用的 libavfilter 过滤器。
- -pix_fmts
显示可用的像素格式。
- -sample_fmts
显示可用的示例格式。
- -layouts
显示频道名称和标准频道布局。
- -dispositions
显示流配置。
- -colors
显示识别的颜色名称。
- -sources device[,opt1=val1[,opt2=val2]...]
显示输入设备的自动检测源。某些设备可能提供无法自动检测的与系统相关的源名称。不能假定返回的列表始终是完整的。
ffmpeg -sources pulse,server=192.168.0.4
- -sinks device[,opt1=val1[,opt2=val2]...]
显示输出设备自动检测到的接收器。某些设备可能提供无法自动检测的与系统相关的接收器名称。不能假定返回的列表始终是完整的。
ffmpeg -sinks pulse,server=192.168.0.4
- -loglevel [flags+]loglevel | -v [flags+]loglevel
设置库使用的日志记录级别和标志。
可选的标志前缀可以包含以下值:
- ‘repeat’
指示重复的日志输出不应压缩到第一行,并且“Last message returned n times”行将被省略。
- ‘level’
指示日志输出应向
[level]
每个消息行添加前缀。这可以用作日志着色的替代方法,例如将日志转储到文件时。
标志也可以单独使用,通过添加 '+'/'-' 前缀来设置/重置单个标志,而不影响其他标志或更改loglevel。当设置flags和loglevel时,最后一个flags值和loglevel之前之间需要有一个“+”分隔符。
loglevel是包含以下值之一的字符串或数字:
- ‘quiet, -8’
不显示任何内容;安静。
- ‘panic, 0’
仅显示可能导致进程崩溃的致命错误,例如断言失败。目前这还没有用于任何用途。
- ‘fatal, 8’
只显示致命错误。这些都是错误,之后该过程绝对无法继续。
- ‘error, 16’
显示所有错误,包括可以恢复的错误。
- ‘warning, 24’
显示所有警告和错误。将显示与可能不正确或意外事件相关的任何消息。
- ‘info, 32’
在处理过程中显示信息性消息。这是对警告和错误的补充。这是默认值。
- ‘verbose, 40’
与 相同
info
,但更详细。- ‘debug, 48’
显示一切,包括调试信息。
- ‘trace, 56’
例如,要启用重复日志输出,请添加
level
前缀,并将 loglevel设置为verbose
:ffmpeg -loglevel repeat+level+verbose -i input output
另一个启用重复日志输出而不影响
level
前缀标志或日志级别当前状态的示例:ffmpeg [...] -loglevel +repeat
默认情况下,程序记录到 stderr。如果终端支持着色,则使用颜色来标记错误和警告。可以通过设置环境变量禁用日志着色
AV_LOG_FORCE_NOCOLOR
,也可以强制设置环境变量AV_LOG_FORCE_COLOR
。- -report
将完整的命令行和日志输出转储到当前目录中指定的文件中 。该文件对于错误报告很有用。这也暗示着。
program-YYYYMMDD-HHMMSS.log
-loglevel debug
将环境变量设置
FFREPORT
为任意值都具有相同的效果。如果值是“:”分隔的 key=value 序列,这些选项将影响报告;如果选项值包含特殊字符或选项分隔符“:”,则必须对其进行转义(请参阅 ffmpeg-utils 手册中的“引用和转义”部分)。可以识别以下选项:
- file
设置报告使用的文件名;
%p
扩展为程序名称、%t
扩展为时间戳、%%
扩展为纯文本%
- level
使用数值设置日志详细级别(请参阅
-loglevel
)。
例如,要将报告输出到名为ffreport.log 使用日志级别
32
(日志级别的别名info
):FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
解析环境变量的错误不是致命的,并且不会出现在报告中。
- -hide_banner
禁止打印横幅。
所有 FFmpeg 工具通常都会显示版权声明、构建选项和库版本。该选项可用于禁止打印该信息。
- -cpuflags flags (global)
允许设置和清除 cpu 标志。该选项用于测试。除非您知道自己在做什么,否则不要使用它。
ffmpeg -cpuflags -sse+mmx ... ffmpeg -cpuflags mmx ... ffmpeg -cpuflags 0 ...
此选项可能的标志是:
- ‘x86’
- ‘mmx’
- ‘mmxext’
- ‘sse’
- ‘sse2’
- ‘sse2slow’
- ‘sse3’
- ‘sse3slow’
- ‘ssse3’
- ‘atom’
- ‘sse4.1’
- ‘sse4.2’
- ‘avx’
- ‘avx2’
- ‘xop’
- ‘fma3’
- ‘fma4’
- ‘3dnow’
- ‘3dnowext’
- ‘bmi1’
- ‘bmi2’
- ‘cmov’
- ‘ARM’
- ‘armv5te’
- ‘armv6’
- ‘armv6t2’
- ‘vfp’
- ‘vfpv3’
- ‘neon’
- ‘setend’
- ‘AArch64’
- ‘armv8’
- ‘vfp’
- ‘neon’
- ‘PowerPC’
- ‘altivec’
- ‘Specific Processors’
- ‘pentium2’
- ‘pentium3’
- ‘pentium4’
- ‘k6’
- ‘k62’
- ‘athlon’
- ‘athlonxp’
- ‘k8’
- -cpucount count (global)
覆盖 CPU 计数检测。该选项用于测试。除非您知道自己在做什么,否则不要使用它。
ffmpeg -cpucount 2
- -max_alloc bytes
设置 ffmpeg 的 malloc 函数系列在堆上分配块的最大大小限制。使用此选项时请格外小心。如果您不了解这样做的全部后果,请不要使用。默认值为 INT_MAX。
3.3 AVOptions
这些选项由 libavformat、libavdevice 和 libavcodec 库直接提供。要查看可用 AVOptions 的列表,请使用 -帮助选项。它们分为两类:
- generic
可以为任何容器、编解码器或设备设置这些选项。容器/设备的 AVFormatContext 选项和编解码器的 AVCodecContext 选项下列出了通用选项。
- private
这些选项特定于给定的容器、设备或编解码器。私有选项列在其相应的容器/设备/编解码器下。
例如,要将 ID3v2.3 标头而不是默认的 ID3v2.4 写入 MP3 文件,请使用id3v2_版本MP3 混合器的私有选项:
ffmpeg -i input.flac -id3v2_version 3 out.mp3
所有编解码器 AVOption 都是针对每个流的,因此应将流说明符附加到它们:
ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
在上面的示例中,多通道音频流被映射两次以输出。第一个实例使用编解码器 ac3 和比特率 640k 进行编码。第二个实例被缩混为 2 个通道并使用编解码器 aac 进行编码。使用输出流的绝对索引为其指定 128k 的比特率。
注:-无选项语法不能用于布尔 AVOptions,请使用-选项0/-选项1。
注意:通过在选项名称前添加 v/a/s 来指定每个流 AVOptions 的旧的未记录方法现已过时,并将很快被删除。
3.4 Main options
- -x width
强制显示宽度。
- -y height
强制显示高度。
- -fs
以全屏模式启动。
- -an
禁用音频。
- -vn
禁用视频。
- -sn
禁用字幕。
- -ss pos
寻找pos。请注意,在大多数格式中不可能精确查找,因此
ffplay
将查找距离 pos最近的查找点。pos必须是持续时间规范,请参阅ffmpeg-utils(1) 手册中的 (ffmpeg-utils)持续时间部分。
- -t duration
音频/视频的 播放持续时间秒。
持续时间必须是持续时间规范,请参阅ffmpeg-utils(1) 手册中的 (ffmpeg-utils)持续时间部分。
- -bytes
按字节查找。
- -seek_interval
设置使用左/右键查找的自定义间隔(以秒为单位)。默认值为 10 秒。
- -nodisp
禁用图形显示。
- -noborder
无边框窗口。
- -alwaysontop
窗口始终在顶部。适用于:SDL >= 2.0.5 的 X11、Windows SDL >= 2.0.6。
- -volume
设置启动音量。0表示静音,100表示不降低或放大音量。负值被视为 0,大于 100 的值被视为 100。
- -f fmt
强制格式化。
- -window_title title
设置窗口标题(默认为输入文件名)。
- -left title
设置窗口左侧的 x 位置(默认为居中窗口)。
- -top title
设置窗口顶部的 y 位置(默认为居中窗口)。
- -loop number
循环播放影片 <number> 次。0表示永远。
- -showmode mode
设置要使用的显示模式。模式的可用值为:
- ‘0, video’
显示视频
- ‘1, waves’
显示音频波
- ‘2, rdft’
使用 RDFT((逆)实数离散傅里叶变换)显示音频频段
默认值为“video”,如果视频不存在或无法播放,则自动选择“rdft”。
您可以通过按w键以交互方式循环显示可用的显示模式。
- -vf filtergraph
创建filtergraph指定的filtergraph并用它来过滤视频流。
filtergraph是对应用于流的filtergraph 的描述,并且必须具有单个视频输入和单个视频输出。在过滤器图中,输入与 label 关联
in
,输出与 label 关联out
。有关 filtergraph 语法的更多信息,请参阅 ffmpeg-filters 手册。您可以多次指定此参数,并通过按w键循环显示指定的过滤图和显示模式。
- -af filtergraph
filtergraph是应用于输入音频的filtergraph 的描述。使用选项“-filters”显示所有可用的过滤器(包括源和接收器)。
- -i input_url
读取input_url。
3.5 Advanced options
- -stats
打印一些播放统计信息,特别是显示流持续时间、编解码器参数、流中的当前位置以及音频/视频同步漂移。默认显示,除非日志级别低于
info
。可以通过手动指定此选项来强制显示它。要禁用它,您需要指定-nostats
.- -fast
不符合规范的优化。
- -genpts
生成积分。
- -sync type
将主时钟设置为音频 (
type=audio
)、视频 (type=video
) 或外部 (type=ext
)。默认为音频。主时钟用于控制音视频同步。大多数媒体播放器使用音频作为主时钟,但在某些情况下(流媒体或高质量广播)有必要更改它。该选项主要用于调试目的。- -ast audio_stream_specifier
使用给定的流说明符选择所需的音频流。流说明符在流说明符一章中进行了描述。如果未指定此选项,则在已选择的视频流的节目中选择“最佳”音频流。
- -vst video_stream_specifier
使用给定的流说明符选择所需的视频流。流说明符在流说明符一章中进行了描述。如果未指定此选项,则选择“最佳”视频流。
- -sst subtitle_stream_specifier
使用给定的流说明符选择所需的字幕流。流说明符在流说明符一章中进行了描述。如果未指定该选项,则在已选择的视频或音频流的节目中选择“最佳”字幕流。
- -autoexit
视频播放完毕后退出。
- -exitonkeydown
按任意键退出。
- -exitonmousedown
如果按下任何鼠标按钮则退出。
- -codec:media_specifier codec_name
强制对media_specifier标识的流执行特定的解码器实现 ,该解码器可以采用值
a
(音频)、v
(视频)和s
字幕。- -acodec codec_name
强制使用特定的音频解码器。
- -vcodec codec_name
强制使用特定的视频解码器。
- -scodec codec_name
强制使用特定的字幕解码器。
- -autorotate
根据文件元数据自动旋转视频。默认启用,使用-不自动旋转禁用它。
- -framedrop
如果视频不同步,则丢弃视频帧。如果主时钟未设置为视频,则默认启用。使用此选项可为所有主时钟源启用帧丢弃,使用-noframedrop禁用它。
- -infbuf
不要限制输入缓冲区大小,尽快从输入中读取尽可能多的数据。默认情况下为实时流启用,如果不及时读取数据可能会丢失。使用此选项可为所有输入启用无限缓冲区,使用-noinfbuf禁用它。
- -filter_threads nb_threads
定义使用多少个线程来处理过滤器管道。每个管道都会生成一个线程池,其中有这么多线程可用于并行处理。默认值为 0,这意味着线程计数将由可用 CPU 的数量决定。
- -enable_vulkan
使用 vulkan 渲染器而不是 SDL 内置渲染器。取决于 libplacebo。
- -vulkan_params
-
Vulkan 配置使用由“:”分隔的键=值对列表。
- -hwaccel
使用硬件加速解码。启用此选项将自动启用 vulkan 渲染器。
3.6 While playing
- q, ESC
辞职。
- f
切换全屏。
- p, SPC
暂停。
- m
切换静音。
- 9, 0
- /, *
分别减少和增加音量。
- a
循环当前节目中的音频通道。
- v
循环视频频道。
- t
在当前节目中循环字幕频道。
- c
循环程序。
- w
循环视频过滤器或显示模式。
- s
进入下一帧。
如果流尚未暂停,则暂停,跳到下一个视频帧,然后暂停。
- left/right
向后/向前搜索 10 秒。
- down/up
向后/向前搜索 1 分钟。
- page down/page up
查找上一章/下一章。或者如果没有章节 向后/向前搜索 10 分钟。
- right mouse click
查找文件中与宽度分数相对应的百分比。
- left mouse double-click
切换全屏。
4 另请参阅
ffmpeg-all、 ffmpeg、ffprobe、 ffmpeg-utils、 ffmpeg-scaler、 ffmpeg-resampler、 ffmpeg-codecs、 ffmpeg-bitstream-filters、 ffmpeg-formats、 ffmpeg-devices、 ffmpeg-protocols、 ffmpeg-filters
5 位作者
FFmpeg 开发人员。
git log
有关作者身份的详细信息,请参阅项目的 Git 历史记录 (https://git.ffmpeg.org/ffmpeg),例如通过在 FFmpeg 源目录中键入命令
,或浏览https://git 的在线存储库。 ffmpeg.org/ffmpeg。
文件中列出了特定组件的维护者 维护者在源代码树中。
本文档于2023 年 11 月 16 日使用makeinfo 生成。
由telepoint.bg提供的托管