ffplay文档[通俗易懂]

2022-07-05 19:23:48 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

目录

目录

1简介

2描述

3选项

3.1流说明符

3.2通用选项

3.3 AVOptions

3.4主要选择

3.5高级选项

3.6比赛时

4另见

5位作者

1简介

ffplay [ 选项 ] [input_url]

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_index用作附加流说明符(见下文),则它从匹配流中选择流编号 stream_index。

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]

使用具有指定值的元数据标记键匹配流。如果 未给出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的分路器的详细信息。使用 – 格式 获取所有解复用器和复用器列表的选项。

muxer = muxer_name

打印有关名为muxer_name的muxer的详细信息。使用 – 格式 获取所有复用器和解复用器列表的选项。

filter = filter_name

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

-version

显示版本。

-formats

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

-demuxers

显示可用的解复用器。

-muxers

显示可用的复用器。

-devices

显示可用设备。

-codecs

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

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

-decoders

显示可用的解码器。

-encoders

显示所有可用的编码器。

-bsfs

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

-protocols

显示可用协议。

-filters

显示可用的libavfilter过滤器。

-pix_fmts

显示可用的像素格式。

-sample_fmts

显示可用的样本格式。

-layouts

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

-colors

显示已识别的颜色名称

-sources device [,opt1 = val1 [,opt2 = val2 ] …]

显示输入设备的自动检测源。某些设备可能提供无法自动检测的系统相关源名称。不能假定返回的列表总是完整的。

代码语言:javascript复制
<span style="color:#333333">ffmpeg -sources pulse,server = 192.168.0.4
</span>

-sinks device [,opt1 = val1 [,opt2 = val2 ] …]

显示输出设备的自动检测接收器。某些设备可能提供无法自动检测的与系统相关的接收器名称。不能假定返回的列表总是完整的。

代码语言:javascript复制
<span style="color:#333333">ffmpeg -sinks pulse,server = 192.168.0.4
</span>

-loglevel [ flags ] loglevel | -v [ flags ] loglevel

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

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

‘repeat’

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

‘level’

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

标志也可以单独使用,添加’ ’/’ – ‘前缀来设置/重置单个标志,而不会影响其他标志或更改日志级别。设置flags和loglevel时,最后一个标志值和loglevel之间需要一个’ ’分隔符。

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

‘quiet, -8’

什么都不显示; 安静。

‘panic, 0’

仅显示可能导致进程崩溃的致命错误,例如断言失败。目前还没有用于任何目的。

‘fatal, 8’

只显示致命错误。这些是错误,在此之后该过程绝对无法继续。

‘error, 16’

显示所有错误,包括可以从中恢复的错误。

‘warning, 24’

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

‘info, 32’

在处理过程中显示信息性消息。这是警告和错误的补充。这是默认值。

‘verbose, 40’

同样info,除了更详细。

‘debug, 48’

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

‘trace, 56’

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

代码语言:javascript复制
<span style="color:#333333">ffmpeg -loglevel repeat   level   verbose -i输入输出
</span>

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

代码语言:javascript复制
<span style="color:#333333">ffmpeg [...] -loglevel  重复
</span>

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

-report

将完整命令行和控制台输出转储到当前目录中指定的文件 。此文件可用于错误报告。它也意味着。 program-YYYYMMDD-HHMMSS.log-loglevel debug

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

可识别以下选项:

file

设置用于报告的文件名; %p扩展到程序的名称,%t扩展到时间戳,%%扩展到平原%

level

使用数值设置日志详细级别(请参阅参考资料-loglevel)。

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

代码语言:javascript复制
<span style="color:#333333">FFREPORT = file = ffreport.log:level = 32 ffmpeg -i输入输出
</span>

解析环境变量时的错误不是致命的,并且不会出现在报告中。

-hide_banner

抑制打印横幅。

所有FFmpeg工具通常都会显示版权声明,构建选项和库版本。此选项可用于禁止打印此信息。

-cpuflags flags (global)

允许设置和清除cpu标志。此选项用于测试。除非你知道自己在做什么,否则不要使用它。

代码语言:javascript复制
<span style="color:#333333">ffmpeg -cpuflags -sse   mmx ...
ffmpeg -cpuflags mmx ...
ffmpeg -cpuflags 0 ...
</span>

此选项的可能标志是:

‘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’

3.3 AVOptions

这些选项由libavformat,libavdevice和libavcodec库直接提供。要查看可用的AVOptions列表,请使用 -救命选项。它们分为两类:

generic

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

private

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

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

代码语言:javascript复制
<span style="color:#e6e6e6"><span style="color:#333333">ffmpeg -i input.flac -id3v2_version 3 out.mp3
</span></span>

所有编解码器AVOptions都是每个流,因此应该附加一个流说明符:

代码语言:javascript复制
<span style="color:#e6e6e6"><span style="color:#333333">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
</span></span>

在上面的示例中,多声道音频流被映射两次以进行输出。第一个实例用编解码器ac3和比特率640k编码。将第二个实例缩混为2个通道,并使用编解码器aac进行编码。使用输出流的绝对索引为其指定128k的比特率。

注意: -nooption 语法不能用于布尔AVOptions,请使用 – 选项0/-选项1。

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

3.4主要选择

-x 宽度

强制显示宽度。

-y 高度

强制显示高度。

-s 尺寸

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

-fs

以全屏模式启动。

-an

禁用音频。

-vn

禁用视频。

-sn

禁用字幕。

-ss pos

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

pos必须是持续时间规范,请参阅ffmpeg-utils(1)手册中的(持续时间)部分(ffmpeg-utils)。

-t 持续时间

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

duration必须是持续时间规范,请参阅ffmpeg-utils(1)手册中的(持续时间)部分(ffmpeg-utils)。

-bytes

按字节搜索。

-seek_interval

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

-nodisp

禁用图形显示。

-noborder

无边框窗口。

-volume

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

-f fmt

强制格式。

-window_title 标题

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

-left

设置窗口左侧的x位置(默认为居中窗口)。

-top

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

-loop

循环播放电影<number>次。0意味着永远。

-showmode

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

“0,视频“

显示视频

“1,波浪“

显示音频波

“2,rdft“

使用RDFT((逆)实离散傅立叶变换)显示音频频段

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

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

-vf filtergraph

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

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

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

-af filtergraph

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

-i input_url

阅读input_url。

3.5高级选项

-pix_fmt 格式

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

-stats

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

-fast

不符合规范的优化。

-genpts

生成pts。

-sync type

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

-ast audio_stream_specifier

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

-vst video_stream_specifier

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

-sst subtitle_stream_specifier

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

-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 禁用它。

-filter_threads nb_threads

定义用于处理过滤器管道的线程数。每个管道都会产生一个线程池,这个线程可用于并行处理。默认值为0表示线程计数将由可用CPU的数量决定。

3.6比赛时

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


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

本文档于20192月25日使用makeinfo生成

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149993.html原文链接:https://javaforall.cn

0 人点赞