ffplay 文档

网站翻译由林建有提供支持

1 概要

ffplay [选项] [input_url]

2 描述

FFplay 是一个非常简单且便携的媒体播放器,使用 FFmpeg 库和 SDL 库。它主要用作 各种 FFmpeg API 的测试平台。

3 选项

所有数字选项,如果没有另行说明,接受一个表示数字的字符串作为输入,该字符串可以后接一个 SI 单位前缀,例如:'K'、'M' 或 'G'。

如果 SI 单位前缀后附加'i',那么整个前缀将被 解释为基于二进制倍数的单位前缀,这些倍数以 1024 的幂为基础而不是 1000 的幂。 附加 'B' 到 SI 单位前缀会将值乘以 8。这允许使用,例如:'KB'、'MiB'、'G' 和 'B' 作为数字后缀。

不带参数的选项是布尔选项,并将相应的值设置为 true。可以通过在选项名称前加上 "no" 前缀将其设置为 false。例如,使用 "-nofoo" 将布尔选项名称 "foo" 设置为 false。

带参数的选项支持一种特殊语法,其中命令行中给出的参数会被解释为加载实际参数值的文件的路径。要使用此功能,请在选项名称前直接添加一个前斜杠‘/’(在前导短划线后面)。例如:

ffmpeg -i INPUT -/filter:v filter.script OUTPUT

将从名为的文件中加载过滤器图描述filter.script.

3.1 流指定符

某些选项是针对每个流应用的,例如比特率或编解码器。使用流指定符可以精确指定某个选项属于哪些流。

流指定符通常是附加在选项名称上的一个字符串,并通过冒号与其分隔。例如:-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的流。否则,它匹配所有指定类型的流。

g:group_specifier[:additional_stream_specifier]

匹配属于group_specifier组的流。如果additional_stream_specifier被使用,那么它将匹配既属于组又符合additional_stream_specifier. 的流。group_specifier

group_index

匹配具有此组索引的流。

#group_id or i:group_id

匹配具有此组 ID 的流。

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]

匹配具有元数据标记key且值为指定值的流。如果value未给定,则匹配含有指定标记和任何值的流。

disp:dispositions[:additional_stream_specifier]

匹配具有给定配置的流。dispositions是一个或多个配置的列表(作为-dispositions选项打印)

u

结合在一起通过‘+’。

注意,在ffmpeg中,通过元数据匹配仅对输入文件正常工作。

3.2 通用选项

这些选项在 ff* 工具之间共享。

-L

显示许可证。

-h, -?, -help, --help [arg]

显示帮助。可以指定一个可选参数来打印有关特定项目的帮助。如果没有指定参数,仅显示基本(非高级)工具选项。

可能的arg值包括:

long

打印高级工具选项以及基本工具选项。

full

打印完整的选项列表,包括编码器、解码器、解复用器、多路复用器、过滤器等的共享和私有选项。

decoder=decoder_name

打印名为decoder_name的解码器的详细信息。使用-decoders选项获取所有解码器列表。

encoder=encoder_name

打印名为encoder_name的编码器的详细信息。使用-encoders选项获取所有编码器列表。

demuxer=demuxer_name

打印名为demuxer_name的解复用器的详细信息。使用-formats选项获取所有解复用器和多路复用器的列表。

muxer=muxer_name

打印名为muxer_name的多路复用器的详细信息。使用-formats选项获取所有多路复用器和解复用器的列表。

filter=filter_name

打印名为filter_name的过滤器的详细信息。使用-filters选项获取所有过滤器的列表。

bsf=bitstream_filter_name

打印名为bitstream_filter_name的比特流过滤器的详细信息。使用-bsfs选项获取所有比特流过滤器的列表。

protocol=protocol_name

打印名为protocol_name的协议的详细信息。使用-protocols选项获取所有协议的列表。

-version

显示版本。

-buildconf

显示构建配置,每行一个选项。

-formats

显示可用的格式(包括设备)。

-demuxers

显示可用的解复用器。

-muxers

显示可用的多路复用器。

-devices

显示可用的设备。

-codecs

显示 libavcodec 支持的所有编解码器。

注意,本文档中使用术语“编解码器”作为更准确的媒体比特流格式的简称。

-decoders

显示可用的解码器。

-encoders

显示所有可用的编码器。

-bsfs

显示可用的比特流过滤器。

-protocols

显示可用的协议。

-filters

显示可用的 libavfilter 过滤器。

-pix_fmts

显示可用的像素格式。

-sample_fmts

显示可用的采样格式。

-layouts

显示通道名称和标准通道布局。

-dispositions

显示流配置。

-colors

显示已识别的颜色名称。

-sources 设备[,选项1=值1[,选项2=值2]...]

显示输入设备的自动检测源。 某些设备可能会提供无法自动检测的系统依赖源名称。 不能假设返回的列表始终完整。

ffmpeg -sources pulse,server=192.168.0.4
-sinks 设备[,选项1=值1[,选项2=值2]...]

显示输出设备的自动检测接收端。 某些设备可能会提供无法自动检测的系统依赖接收端名称。 不能假设返回的列表始终完整。

ffmpeg -sinks pulse,server=192.168.0.4
-loglevel [标志+]日志级别 | -v [标志+]日志级别

设置库使用的日志级别和标志。

可选的标志前缀可以包含以下值:

‘repeat’

表示重复的日志输出不应压缩到第一行,并且将省略"上次消息重复 n 次"行。

‘level’

表示日志输出应添加[level]前缀到每条消息行。这个可以作为日志着色的替代方案,例如将日志写入文件时。

标志也可以单独使用,通过加上‘+’/‘-’前缀来设置/重置单个标志,而不影响其他标志或更改日志级别。设置标志和日志级别时,期望在最后一个标志值后面以及日志级别.

日志级别是一个字符串或包含以下值之一的数字:

‘quiet, -8’

完全不显示任何内容;保持静默。

‘panic, 0’

仅显示可能导致进程崩溃的关键错误,例如 断言失败。这目前未用于任何用途。

‘fatal, 8’

只显示关键错误。这些是不可恢复的错误,进程绝对不能继续。

‘error, 16’

显示所有错误,包括那些可以恢复的。

‘warning, 24’

显示所有警告和错误。任何可能与 不正确或意外事件相关的消息都会显示。

‘info, 32’

在处理过程中显示信息消息。这些是除了 警告和错误之外的附加消息。这是默认值。

‘verbose, 40’

与info相同,但更详细。

‘debug, 48’

显示所有内容,包括调试信息。

‘trace, 56’

例如要启用重复日志输出、添加level前缀,并设置日志级别为verbose:

ffmpeg -loglevel repeat+level+verbose -i input output

另一个示例,启用重复日志输出而不影响level前缀标志的当前状态或日志级别:

ffmpeg [...] -loglevel +repeat

默认情况下,程序会将日志写入标准错误。如果终端支持着色,颜色会用于标记错误和警告。可以通过设置环境变量AV_LOG_FORCE_NOCOLOR禁用日志着色,或者通过设置环境变量AV_LOG_FORCE_COLOR.

-report

将完整的命令行和日志输出转储到当前 目录中名为program-YYYYMMDD-HHMMSS.log的文件。此文件对错误报告可能有用。这还意味着-loglevel debug.

将环境变量FFREPORT设置为任何值会产生相同效果。如果值是‘:’-分隔的键=值序列,则 这些选项会影响报告;如果选项值中包含特殊字符或选项分隔符‘:’,则必须对其进行转义(请参阅 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 (全局)

允许设置和清除 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 计数 (全局)

覆盖CPU计数检测。此选项用于测试。除非您明确了解其作用,否则请勿使用。

ffmpeg -cpucount 2
-max_alloc 字节

设置堆分配块的最大大小限制,适用于ffmpeg的malloc函数族。极度小心地使用此选项。如果您不了解这样做的全部后果,请不要使用。默认值是INT_MAX。

3.3 AV选项

这些选项由libavformat、libavdevice和libavcodec库直接提供。可用的AV选项列表可以使用-help选项查看。它们分为两类:

generic

这些选项可以为任何容器、编解码器或设备设置。通用选项列在容器/设备的AVFormatContext选项下,或编解码器的AVCodecContext选项下。

private

这些选项特定于指定的容器、设备或编解码器。私有选项列在其对应的容器/设备/编解码器下。

例如,为MP3文件写入ID3v2.3头而不是默认的ID3v2.4头,请使用id3v2_versionMP3复用器的私有选项:

ffmpeg -i input.flac -id3v2_version 3 out.mp3

所有编解码器AV选项均为每流选项,因此应附加一个流说明符:

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的码率。

注意:-nooption语法不能用于布尔AV选项,请使用-option 0/-option 1.

注意:通过在选项名称前加前缀v/a/s指定流的旧且未记录的方法现在已过时,将很快移除。

3.4 主要选项

-x 宽度

强制显示宽度。

-y 高度

强制显示高度。

-fs

以全屏模式启动。

-an

禁用音频。

-vn

禁用视频。

-sn

禁用字幕。

-ss 位置

跳到位置。请注意,在大多数格式下,无法精确地跳转,因此ffplay将跳转到最接近的跳转点位置.

位置必须是一个时间持续时长规范,详见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时长部分.

-t 持续时长

播放持续时长秒的音频/视频。

持续时长必须是一个时间持续时长规范,详见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时长部分.

-bytes

通过字节跳转。

-seek_interval

设置使用左右键跳转的自定义间隔(以秒为单位)。默认值是10秒。

-nodisp

禁用图形显示。

-noborder

无边框窗口。

-alwaysontop

窗口始终在最上层。适用于:X11(SDL >= 2.0.5)、Windows(SDL >= 2.0.6)。

-volume

设置启动音量。0表示静音,100表示没有音量削减或放大。负值视作0,100以上的值视作100。

-f 格式

强制格式。

-window_title 标题

设置窗口标题(默认是输入文件名)。

-left 标题

设置窗口左边的x坐标(默认为居中窗口)。

-top 标题

设置窗口顶部的y坐标(默认为居中窗口)。

-loop 数字

循环播放电影<number>次。0表示无限循环。

-showmode 模式

设置要使用的显示模式。适用于模式的可用值有:

‘0, video’

显示视频

‘1, waves’

显示音频波形

‘2, rdft’

使用RDFT((反)实数离散傅里叶变换)显示音频频率带

默认值为"视频",如果视频无法播放或不存在,则自动选择"RDFT"。

您可以通过按键w.

-vf 滤镜图

创建指定的滤镜图滤镜图并用其过滤视频流。

滤镜图是一个应用于流的滤镜图描述,必须具有一个视频输入和一个视频输出。在滤镜图中,输入与标签in相关联,输出与标签out相关联。更多关于滤镜图语法的信息,请参阅ffmpeg-filters手册。

您可以多次指定此参数,并通过按键w.

-af 滤镜图

滤镜图是一个描述应用于输入音频的滤镜图。使用选项"-filters"显示所有可用滤镜(包括源和接收器)。

-i 输入URL

读取输入URL.

3.5 高级选项

-stats

打印多个播放统计信息,特别是显示流持续时间、编解码参数、流中的当前位置以及音频/视频同步偏差。默认情况下显示,除非日志级别低于info。可以通过手动指定此选项强制显示。要禁用它,需要指定-nostats.

-fast

非规范兼容优化。

-genpts

生成PTS。

-sync 类型

将主时钟设置为音频(type=audio)、视频(type=video)或外部(type=ext)。默认是音频。主时钟用于控制音频和视频同步。大多数媒体播放器使用音频作为主时钟,但在某些情况下(如流媒体或高质量广播),需要更改主时钟。此选项主要用于调试目的。

-ast 音频流说明符

使用给定的流说明符选择所需的音频流。流说明符描述在流说明符章节。如果未指定此选项,将在已选视频流的程序中选择"最佳"音频流。

-vst 视频流说明符

使用给定的流说明符选择所需的视频流。流说明符描述在流说明符章节。如果未指定此选项,将选择"最佳"视频流。

-sst 字幕流说明符

使用给定的流说明符选择所需的字幕流。流说明符描述在流说明符章节。如果未指定此选项,将在已选视频或音频流的程序中选择"最佳"字幕流。

-autoexit

当视频播放完成时退出。

-exitonkeydown

按下任意键退出。

-exitonmousedown

按下任意鼠标按钮退出。

-codec:媒体说明符 编解码器名称

为由媒体说明符标识的流强制指定一个具体的解码器实现,可以取以下值a(音频),v(视频),以及s字幕。

-acodec 编解码器名称

强制使用特定的音频解码器。

-vcodec 编解码器名称

强制使用特定的视频解码器。

-scodec 编解码器名称

强制使用特定的字幕解码器。

-autorotate

根据文件元数据自动旋转视频。默认启用,可以使用-noautorotate禁用它。

-framedrop

如果视频不同步则丢弃视频帧。如果主时钟未设置为视频,默认启用此选项。使用此选项为所有主时钟源启用帧丢弃功能,可以使用-noframedrop禁用它。

-infbuf

不要限制输入缓冲区大小,尽可能从输入中读取数据。对实时流默认启用此选项,否则可能丢失数据。使用此选项为所有输入启用无限缓冲区,可以使用-noinfbuf禁用它。

-filter_threads 线程数量

定义用于处理过滤器管道的线程数量。每个管道将生成一个线程池,其中包含用于并行处理的线程数量。默认值是0,表示线程数量将由可用的CPU数量决定。

-enable_vulkan

使用Vulkan渲染器而不是SDL内置渲染器。依赖于libplacebo。

-vulkan_params

使用包含键=值对的列表配置Vulkan,以":"分隔。

-hwaccel

使用硬件加速解码。启用此选项将自动启用Vulkan渲染器。

3.6 播放时

q, ESC

退出。

f

切换全屏。

p, SPC

暂停。

m

切换静音。

9, 0
/, *

分别减少和增加音量。

a

切换当前节目中的音频通道。

v

切换视频通道。

t

切换当前节目中的字幕通道。

c

切换节目。

w

切换视频滤镜或显示模式。

s

切换到下一帧。

如果流未暂停,则暂停后切换到下一帧,然后暂停。

左/右

向后/向前搜索10秒。

下/上

向后/向前搜索1分钟。

向下翻页/向上翻页

跳转到上一章/下一章。或者如果没有章节,则向后/向前搜索10分钟。

鼠标右键单击

跳转到与文件宽度对应的百分比位置。

鼠标左键双击

切换全屏。

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历史记录(https://git.ffmpeg.org/ffmpeg),例如通过在FFmpeg源目录中键入命令git log或浏览在线存储库:https://git.ffmpeg.org/ffmpeg.

特定组件的维护者列表可在源代码树中找到的文件MAINTAINERS中找到。

此文档是使用makeinfo.

托管由以下提供telepoint.bg