网站翻译由林建有提供支持
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