5.4主要选项-FFmpeg文档教程-多媒体-IT技术博客


-f fmt(输入/输出)

强制输入或输出文件格式。 通常会自动为输入文件检测格式,并从输出文件的文件扩展名中猜测格式,因此在大多数情况下不需要此选项。


-i url(输入)

输入文件网址


-y(全局)

覆盖输出文件而无需询问。


-n(全局)

不要覆盖输出文件,如果指定的输出文件已经存在,请立即退出。


-stream_loop number(输入)

设置输入流应循环的次数。 循环0表示无循环,循环-1表示无限循环。


-c [:stream_specifier] codec(每流输入/输出)

-codec [:stream_specifier] codec(输入/输出,每个流)

为一个或多个流选择编码器(在输出文件之前使用)或解码器(在输入文件之前使用)。 编解码器是解码器/编码器的名称,或者是特殊值副本(仅输出),用于指示将不对流进行重新编码。


例如

ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT


使用libx264编码所有视频流,并复制所有音频流。


对于每个流,将应用最后一个匹配的c选项,因此

ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT

将复制除第二个视频(使用libx264编码)和第138个音频(使用libvorbis编码)以外的所有流。

-t duration(输入/输出)

当用作输入选项时(-i之前),请限制从输入文件读取数据的持续时间。


当用作输出选项时(在输出URL之前),请在持续时间达到持续时间后停止写入输出。


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


-to和-t是互斥的,并且-t具有优先级。


-至位置(输入/输出)

在该位置停止写入输出或读取输入。 position必须是持续时间规范,请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的“持续时间”部分。


-to和-t是互斥的,并且-t具有优先级。


-fs limit_size(输出)

设置文件大小限制,以字节为单位。超出限制后,不再写入更多字节字节。输出文件的大小略大于请求的文件大小。


-ss position (输入/输出)

当用作输入选项时(在-i之前),在此输入文件中查找位置。请注意,在大多数格式中,无法精确搜索,因此ffmpeg将搜索到位置之前最接近的搜索点。启用转码和-accurate_seek时(默认设置),在搜索点和位置之间的此额外片段将被解码并丢弃。在执行流复制或使用-noaccurate_seek时,将保留它。


当用作输出选项时(在输出URL之前),解码但放弃输入,直到时间戳到达位置为止。


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


-sseof position(输入)

类似于-ss选项,但相对于“文件结尾”。这是负值在文件中较早的位置,0表示EOF。


-itsoffset offset (输入)

设置输入时间偏移。


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


偏移量将添加到输入文件的时间戳中。指定正偏移量意味着相应的流将延迟偏移量中指定的持续时间。


-itsscale scale (输入,每个流)

重新调整输入时间戳。标度应为浮点数。


-timestamp date (输出)

在容器中设置记录时间戳。


date必须是日期规范,请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的“日期”部分。


-metadata [:metadata_specifier] key=value (输出,每个元数据)

设置元数据键/值对。


可以提供可选的metadata_specifier来设置流,章节或程序上的元数据。有关详细信息,请参见-map_metadata文档。


此选项将覆盖使用-map_metadata设置的元数据。也可以通过使用空值来删除元数据。


例如,在输出文件中设置标题:

ffmpeg -i in.avi -metadata title="my title" out.flv

设置第一个音频流的语言:

ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT

-disposition [:stream_specifier]值(每流输出)

设置流的处置。


此选项将覆盖从输入流复制的处置。 通过将其设置为0,也可以删除该处置。


可以识别以下配置:

default

dub

original

comment

lyrics

karaoke

forced

hearing_impaired

visual_impaired

clean_effects

attached_pic

captions

descriptions

dependent

metadata

例如,将第二个音频流设置为默认流:

ffmpeg -i in.mkv -c copy -disposition:a:1 default out.mkv

要将第二个字幕流设置为默认流,并从第一个字幕流中删除默认配置:

ffmpeg -i in.mkv -c copy -disposition:s:0 0 -disposition:s:1 default out.mkv

要添加嵌入式封面/缩略图:

ffmpeg -i in.mp4 -i IMAGE -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic out.mp4

并非所有的混合器都支持嵌入式缩略图,而那些混合器仅支持几种格式,例如JPEG或PNG。


-program [title = title:] [program_num = program_num:] st = stream [:st = stream ...](输出)

创建一个具有指定标题program_num的程序,并将指定的流添加到其中。


-target type(输出)

指定目标文件类型(vcd,svcd,dvd,dv,dv50)。 type可以使用pal-,ntsc-或film-作为前缀以使用相应的标准。 然后自动设置所有格式选项(比特率,编解码器,缓冲区大小)。 您可以输入:

ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

但是,只要您知道其他选项与标准不冲突,就可以指定其他选项,例如:

ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg

-dn(输入/输出)

作为输入选项,阻止文件的所有数据流被过滤或为任何输出自动选择或映射。请参阅-discard选项以分别禁用流。


作为输出选项,禁用数据记录,即自动选择或映射任何数据流。有关完整的手动控制,请参见-map选项。


-dframes number(输出)

设置要输出的数据帧数。这是-frames:d的过时别名,应改为使用。


-frames [:stream_specifier] framecount(output,per-stream)

在帧计数帧之后停止写入流。


-q [:stream_specifier] q(output,per-stream)

-qscale [:stream_specifier] q(每流输出)

使用固定质量量表(VBR)。 q / qscale的含义取决于编解码器。如果在不使用stream_specifier的情况下使用qscale,则它仅适用于视频流,这是为了保持与以前的行为的兼容性,并且当没有stream_specifier时,为2个不同的音频和视频编解码器指定相同的编解码器特定值通常不是目的。用来。


-filter [:stream_specifier] filtergraph(output,per-stream)

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


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


如果要创建具有多个输入和/或输出的过滤图,请参见-filter_complex选项。


-filter_script [:stream_specifier] filename(output,per-stream)

此选项类似于-filter,唯一的区别是其参数是要从中读取过滤器描述的文件名。


-filter_threads nb_threads(global)

定义用于处理过滤器管道的线程数。每个管道将产生一个线程池,其中有许多线程可用于并行处理。默认值为可用的CPU数量。


-pre [:stream_specifier] preset_name(output,per-stream)

指定匹配流的预设。


-stats(全局)

打印编码进度/统计信息。默认情况下它是打开的,要显式禁用它,您需要指定-nostats。


-progress rul(全局)

将程序友好的进度信息发送到url。


进度信息大约每秒钟写入一次,并在编码过程结束时写入。它由“键=值”行组成。键仅包含字母数字字符。进度信息序列的最后一个关键字始终是“进度”。


-stdin

在标准输入上启用交互。默认情况下为开,除非使用标准输入作为输入。要显式禁用交互,您需要指定-nostdin。


例如,如果ffmpeg在后台进程组中,则禁用标准输入上的交互很有用。使用ffmpeg ... </ dev / null可以大致达到相同的结果,但是它需要一个shell。


-debug_ts(全局)

打印时间戳信息。默认情况下它是关闭的。此选项对于测试和调试目的最有用,并且输出格式可能会从一个版本更改为另一个版本,因此可移植脚本不应使用此选项。


另请参阅选项-fdebug ts。


-attach filename(输出)

将附件添加到输出文件。诸如Matroska之类的几种格式对此提供了支持。用于呈现字幕的字体。附件被实现为特定类型的流,因此此选项会将新的流添加到文件中。然后可以按通常方式在此流上使用每流选项。使用此选项创建的附件流将在所有其他流(即使用-map或自动映射创建的附件流)之后创建。


请注意,对于Matroska,您还必须设置mimetype元数据标记:

ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv

(假设附件流在输出文件中排在第三位)。


-dump_attachment [:stream_specifier]文件名(输入,每个流)

将匹配的附件流提取到名为filename的文件中。 如果filename是空的,则将使用filename的元数据标签的值。


例如。 将第一个附件提取到名为“ out.ttf”的文件中:

ffmpeg -dump_attachment:t:0 out.ttf -i INPUT

提取文件名标签确定的文件的所有附件:

ffmpeg -dump_attachment:t "" -i INPUT

技术说明–附件被实现为编解码器额外数据,因此此选项实际上可用于从任何流中提取额外数据,而不仅仅是附件。

标签: FFmpegffmpeg教程ffmpeg命令ffmpeg参数ffmpeg文档ffmpeg手册