FFplay文档解读-1-语法,描述,选项

前言

Github地址:Github
简书地址:简书
专辑地址:FFplay专辑

1. 语法

ffplay [options] [‘input_url’]

使用ffplay和使用ffmpeg有一定的相似性,以ffplay开头,之后便是相关的选项,这个在后面会有具体的介绍,最后便是需要播放视频的地址,本地地址或者网络地址。

2. 描述

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

3. 选项

如果没有另外指定,所有数字选项接受表示数字作为输入的字符串,其后可以跟随SI单位前缀之一,例如:'K''M''G'

如果'i'被附加到SI单位前缀,则完整前缀将被解释为二进制倍数的单位前缀,其基于1024的幂而不是1000的幂。将B加到SI单位前缀乘以 这允许使用例如:'KB''MiB''G''B'作为数字后缀。

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

3.1流说明符

每个流应用一些选项,例如 比特率或编解码器。 流指定符用于精确指定给定选项所属的流。

流说明符是通常附加到选项名称并通过冒号与其分隔的字符串。 例如。 -codec:a:1 ac3包含a:1流说明符,它与第二个音频流匹配。 因此,它将为第二音频流选择ac3编解码器。

流说明符可以匹配多个流,以便将选项应用于所有流。 例如。 -b:a 128k中的流说明符匹配所有音频流。

空流说明符匹配所有流。 例如,-codec copy-codec:copy将复制所有流而无需重新编码。

流说明符的可能形式是:

stream_index

使用此索引匹配流。 例如。 -threads:1 4将第二个流的线程数设置为4。

stream_type[:stream_index]

stream_type是以下之一:视频为vV,音频为a,副标题为s,数据为d,附件为t'v'匹配所有视频流,'V'仅匹配未附加图片,视频缩略图或封面艺术的视频流。 如果给出stream_index,则它匹配此类型的流编号stream_index。 否则,它匹配此类型的所有流。

‘p:program_id[:stream_index] or p:program_id[:stream_type[:stream_index]] or’

p:program_id:m:key [:value]在第一个版本中,如果给出了stream_index,那么它将匹配程序中带有编号为stream_index的流,其idprogram_id。 否则,它匹配程序中的所有流。 在第二个版本中,stream_type是以下之一:视频'v',音频'a',副标题's',数据'd'。 如果还给出了stream_index,则它在程序中使用id program_id匹配此类型的流编号stream_index。 否则,如果仅给出stream_type,则它将使用id program_id匹配程序中此类型的所有流。 在第三个版本中,程序中的流与id program_id匹配,元数据标记键具有指定值。 如果未给出value,则将包含给定标记的流与任何值进行匹配。

#stream_id or i:stream_id

通过流id匹配流(例如,MPEG-TS容器中的PID)。

m:key[:value]

使用具有指定值的元数据标记键匹配流。 如果未给出value,则将包含给定标记的流与任何值匹配。

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_namemuxer的详细信息。 使用'-formats'选项获取所有复用器和解复用器的列表。
filter=filter_name 打印有关过滤器名称filter_name的详细信息。 使用'-filters'选项获取所有过滤器的列表。
-version

显示版本信息

-formats

显示可用设备。

-codecs

显示libavcodec已知的所有编解码器。

请注意,本文档中使用术语’codec’作为更正确称为媒体比特流格式的快捷方式。

-decoders

显示可用的解码器。

-encoders

显示所有可用的编码器。

-bsfs

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

-protocols

显示可用的协议。

-filters

显示可用的libavfilter过滤器。

-pix_fmts

显示可用的像素格式。

-sample_fmts

显示可用的样本格式。

-layouts

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

-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’ 表示不应将重复日志输出压缩到第一行,并且将省略最后重复消息n次行。
‘level’ 表示日志输出应为每个消息行添加[level]前缀。 这可以用作对数着色的替代方案,例如, 将日志转储到文件时。

标志也可以单独使用,添加'+'/' - '前缀来设置/重置单个标志,而不会影响其他标志或更改日志级别。 设置flagsloglevel时,最后一个标志值和loglevel之间应该有一个'+'分隔符。

loglevel是一个字符串或包含以下值之一的数字:

   值    解释
‘quiet, -8’ 什么都不显示; 静音。
‘panic, 0’ 仅显示可能导致进程崩溃的致命错误,例如断言失败。 目前还没有用于任何目的。
‘fatal, 8’ 只显示致命错误。 这些是错误,在此之后该过程绝对无法继续。
‘error, 16’ 显示所有错误,包括可以从中恢复的错误。
‘warning, 24’ 显示所有警告和错误。 将显示与可能不正确或意外事件相关的任何消息。
‘info, 32’ 在处理过程中显示信息性消息。 这是警告和错误的补充。 这是默认值。
‘verbose, 40’ info相同,只是更详细了一些
‘debug, 48’ 显示所有内容,包括调试信息。
‘trace, 56’

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

示例代码
ffmpeg -loglevel repeat+level+verbose -i input output

另一个允许重复日志输出而不影响级别前缀标志或loglevel的当前状态的示例:

示例代码
ffmpeg [...] -loglevel +repeat

默认情况下,程序会记录到stderr。 如果终端支持着色,则使用颜色标记错误和警告。 可以禁用日志着色设置环境变量AV_LOG_FORCE_NOCOLORNO_COLOR,也可以强制设置环境变量AV_LOG_FORCE_COLOR。 不推荐使用环境变量NO_COLOR,将在以后的FFmpeg版本中删除。

-report

将完整命令行和控制台输出转储到当前目录中名为program-YYYYMMDD-HHMMSS.log的文件。 此文件可用于错误报告。 它还暗示-loglevel verbose

将环境变量FFREPORT设置为任何值具有相同的效果。 如果值为':' - 分隔键=值序列,则这些选项将影响报告; 如果选项值包含特殊字符或选项分隔符':',则必须对其进行转义(请参阅ffmpeg-utils手册中的“引用和转义”部分)。

可识别以下选项:

 值  解释
‘file’ 设置用于报告的文件名; %p扩展为程序名称,%t扩展为时间戳,%%扩展为普通%
‘level’ 使用数值设置日志详细级别(请参阅-loglevel)。

例如,要使用日志级别32(日志级别信息的别名)将报告输出到名为“ffreport.log”的文件:

示例代码
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
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
‘ARM’
‘armv5te’
‘armv6’
‘armv6t2’
‘vfp’
‘vfpv3’
‘neon’
‘setend’
AArch64
‘AArch64’
‘armv8’
‘vfp’
‘neon’
PowerPC
‘PowerPC’
‘altivec’
Specific Processors
‘Specific Processors’
‘pentium2’
‘pentium3’
‘pentium4’
‘k6’
‘k62’
‘athlon’
‘athlonxp’
‘k8’

3.3 AVOptions

这些选项由libavformatlibavdevicelibavcodec库直接提供。 要查看可用AVOptions列表,请使用-help选项。 它们分为两类:

选项 解释
‘generic’ 可以为任何容器,编解码器或设备设置这些选项。 通用选项列在容器/设备的AVFormatContext选项下,以及编解码器的AVCodecContext选项下。
‘private’ 这些选项特定于给定的容器,设备或编解码器。 私有选项列在其相应的容器/设备/编解码器下。

例如,要将ID3v2.3标头而不是默认ID3v2.4写入MP3文件,请使用MP3 muxer的“id3v2_version”私有选项:

示例代码
ffmpeg -i input.flac -id3v2_version 3 out.mp3

所有编解码器AVOptions都是每个流,因此应该将流说明符附加到它们。

注意:'-nooption'语法不能用于 boolean类型的 AVOptions,请使用'-option 0'/' - option 1'

注意:通过将v / a / s添加到选项名称来指定每个流AVOptions的旧的未记录方式现在已过时,很快就会被删除。

3.4 Main options

-x width

强制显示宽度。

-y height

强制显示高度。

-s size

设置不包含具有原始YUV的帧大小的标题的视频所需的帧大小(WxH或缩写)。 此选项已被弃用,有利于私有选项,请尝试-video_size

-fs

以全屏模式启动。

-an

禁用音频。

-vn

禁用视频。

-sn

禁用字幕。
-ss pos’

寻求pos。 请注意,在大多数格式中,不可能完全搜索,因此ffplay将寻找到最近的搜索点到pos

pos必须是持续时间规范,详情参见:(ffmpeg-utils)time duration syntax

-t duration

播放音频/视频的持续时间。

duration必须是持续时间规范,请参阅 (ffmpeg-utils)time duration syntax

-bytes

按字节搜索。

-nodisp

禁用图形显示。

-noborder

无边框窗口。

-volume

设置启动卷。 0表示静音,100表示无音量减小或放大。 负值被视为0,大于100的值被视为100。

-f fmt

强制格式。

-window_title title

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

-loop number

循环播放电影<number>次。 0意味着无限循环。

-showmode mode

设置要使用的节目模式。 模式的可用值为:

可用的模式 解释
‘0, video’ 显示视频
‘1, waves’ 显示音频波
‘2, rdft’ 使用RDFT((反向)实离散傅立叶变换)显示音频频段

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

  可以通过按<w>键以交互方式循环显示可用的显示模式。

-vf filtergraph

创建filtergraph指定的filtergraph并使用它来过滤视频流。

filtergraph是要应用于流的filtergraph的描述,并且必须具有单个视频输入和单个视频输出。 在filtergraph中,输入与标签输入相关联,输出与标签输出相关联。 有关filtergraph语法的更多信息,请参阅ffmpeg-filters手册。

可以多次指定此参数,并通过按键<w>循环显示指定的滤波器图形以及显示模式。

-af filtergraph

filtergraph是要应用于输入音频的filtergraph的描述。 使用选项“-filters”显示所有可用的过滤器(包括源和接收器)。

-i input_url

阅读input_url

3.5 Advanced options

-pix_fmt format

设置像素格式。 此选项已被弃用,有利于私有选项,try -pixel_format

-stats

打印多个回放统计信息,特别是显示流持续时间,编解码器参数,流中的当前位置以及音频/视频同步漂移。 默认情况下,要显式禁用它,您需要指定-nostats

-fast

不符合规范的优化。

-genpts

生成pts。
-sync type’
将主时钟设置为音频(类型=音频),视频(类型=视频)或外部(类型= ext)。 默认是音频。 主时钟用于控制音频 - 视频同步。 大多数媒体播放器使用音频作为主时钟,但在某些情况下(流媒体或高质量广播),有必要改变它。 此选项主要用于调试目的。

-ast audio_stream_specifier

使用给定的流说明符选择所需的音频流。 Stream说明符章节中描述了流说明符。 如果未指定此选项,则在已选择的视频流的节目中选择“最佳”音频流。

-vst video_stream_specifier

使用给定的流说明符选择所需的视频流。 Stream说明符章节中描述了流说明符。 如果未指定此选项,则选择“最佳”视频流。

-sst subtitle_stream_specifier

使用给定的流说明符选择所需的字幕流。 Stream说明符章节中描述了流说明符。 如果未指定该选项,则在已选择的视频或音频流的节目中选择“best”字幕流。

-autoexit

视频播放完毕后退出。

-exitonkeydown

如果按任何键,则退出。

-exitonmousedown

如果按下任何鼠标按钮,则退出。

-codec:media_specifier codec_name

强制由media_specifier标识的流的特定解码器实现,其可以假设值a(音频),v(视频)和s字幕。

-acodec codec_name

强制特定的音频解码器。

-vcodec codec_name

强制特定的视频解码器。

-scodec codec_name

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

-autorotate

根据文件元数据自动旋转视频。 默认情况下启用,使用'-noautorotate'禁用它。

-framedrop

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

-infbuf

不要限制输入缓冲区大小,尽快从输入中读取尽可能多的数据。 默认情况下为实时流启用,如果未及时读取数据,则可能会丢弃数据。 使用此选项为所有输入启用无限缓冲区,使用'-noinfbuf'禁用它。

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>

切换全屏。

(0)

相关推荐