ffplay 文档

目录

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提供的托管