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