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。当设置flagsloglevel时,最后一个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-allffmpegffprobeffmpeg-utilsffmpeg-scalerffmpeg-resamplerffmpeg-codecsffmpeg-bitstream-filtersffmpeg-formatsffmpeg-devicesffmpeg-protocolsffmpeg-filters

5 位作者

FFmpeg 开发人员。

git log有关作者身份的详细信息,请参阅项目的 Git 历史记录 (https://git.ffmpeg.org/ffmpeg),例如通过在 FFmpeg 源目录中键入命令 ,或浏览https://git 的在线存储库。 ffmpeg.org/ffmpeg

文件中列出了特定组件的维护者 维护者在源代码树中。

本文档于2023 年 11 月 16 日使用makeinfo 生成。

由telepoint.bg提供的托管