概要

ffprobe [options] [input_url]

描述

ffprobe从多媒体流收集信息,然后以人可读和机器可读的方式打印出来。

例如,它可用于检查多媒体流使用的容器的格式以及其中包含的每个媒体流的格式和类型。

如果在输入中指定了url, ffprobe将尝试打开并探测url内容。如果无法打开url或将其识别为多媒体文件,则返回一个肯定的退出码。

ffprobe可以作为独立应用程序使用,也可以与文本过滤器结合使用,文本过滤器可以执行更复杂的处理,例如统计处理或绘图。

选项用于列出ffprobe支持的一些格式,或指定要显示哪些信息,以及设置ffprobe显示信息的方式。

ffprobe输出被设计成可以被文本过滤器轻松解析,它由所选写入器定义的表单的一个或多个部分组成,由print_format选项指定。

节可以包含其他嵌套的节,并通过名称(其他节可以共享)和唯一名称标识。参见部分的输出。

存储在容器或流中的元数据标签被识别并以相应的“FORMAT”、“STREAM”或“PROGRAM_STREAM”部分打印出来。

选项

流说明符

参见ffmpeg。

一般选项

参见ffmpeg。

AV选项

参见ffmpeg。

主要选项

选项 参数 说明
-f format 强制格式使用。
-unit 显示显示值的单位。
-prefix 对显示的值使用SI前缀。除非使用“-byte_binary_prefix”选项,否则所有前缀都是十进制的。
-byte_binary_prefix 强制对字节值使用二进制前缀。
-sexagesimal 使用六十进制格式HH:MM:SS。时间值为微秒。
-pretty 修饰显示值的格式,它对应于选项“-unit -prefix -byte_binary_prefix -sexagesimal”。
-of, -print_format writer_name[=writer_options] 设置输出打印格式。
writer_name指定写入器的名称,writer_options指定传递给写入器的选项。
例如,要打印JSON格式的输出,请指定:
-print_format json
有关可用输出打印格式的详细信息,请参阅下面的作者部分。
-sections 打印节结构和节信息,然后退出。输出并不意味着要由机器进行解析。
-select_streams stream_specifier 仅选择stream_specifier指定的流。这个选项只影响与流相关的选项(例如show_streams, show_packet等)。
例如,只显示音频流,您可以使用命令:
ffprobe -show_streams -select_streams a INPUT
仅显示索引为1的视频流中的视频包:
ffprobe -show_packets -select_streams v:1 INPUT
-show_data 以十六进制和ASCII转储的形式显示有效负载数据。再加上-show_packet,它将转储数据包的数据。加上-show_streams,它将转储编解码器引渡。
转储被打印为“data”字段。它可能包含换行符。
-show_data_hash algorithm 显示负载数据的散列,对于带-show_packet的数据包和带-show_streams的编解码器引渡。
-show_error 显示在尝试探测输入时发现的错误信息。
错误信息打印在名为“error”的部分中。
-show_format 显示有关输入多媒体流的容器格式的信息。
所有容器格式信息都打印在名为“format”的区域内。
-show_format_entry name 与-show_format类似,但只打印容器格式信息的指定条目,而不是全部。此选项可能被多次给出,然后所有指定的条目将被显示。
不赞成使用此选项,请使用show_entries。
-show_entries section_entries 设置要显示的条目列表。
根据以下语法指定条目。section_entries包含一个由:分隔的节条目列表。每个节条目由一个节名称(或唯一名称)组成,后面可选地后跟该节本地的条目列表,用分隔。
如果指定了节名,但是后面跟着no =,那么所有条目以及包含的所有节都会打印到输出。否则,只打印本地部分条目列表中指定的条目。特别是,如果指定了=,但是本地条目列表为空,那么该部分将不会显示任何条目。
注意,本地部分条目的指定顺序在输出中没有得到遵守,通常的显示顺序将保留。
形式语法由:
LOCAL_SECTION_ENTRIES ::= SECTION_ENTRY_NAME[,LOCAL_SECTION_ENTRIES]
SECTION_ENTRY ::= SECTION_NAME[=[LOCAL_SECTION_ENTRIES]]
SECTION_ENTRIES ::= SECTION_ENTRY[:SECTION_ENTRIES]
例如,要仅显示每个流的索引和类型,以及数据包的PTS时间、持续时间和流索引,可以指定参数:
packet=pts_time,duration_time,stream_index : stream=index,codec_type
要显示“format”小节中的所有条目,但只显示“stream”小节中的编解码器类型,请指定参数:
format : stream=codec_type
要显示流和格式部分中的所有标签:
stream_tags : format_tags
在流部分中仅显示title标签(如果可用):
stream_tags=title
-show_packets 显示包含在输入多媒体流中的每个数据包的信息。
每个数据包的信息打印在一个名为“PACKET”的专用部分中。
-show_frames 显示包含在输入多媒体流中的每一帧和副标题的信息。
每一帧的信息都被打印在一个名为“FRAME”或“SUBTITLE”的专用部分中。
-show_log loglevel 根据loglevel中设置的值显示解码器关于每一帧的日志记录信息(参见-loglevel)。这个选项需要-show_frames。
每个日志消息的信息都打印在名为“LOG”的专用部分中。
-show_streams 显示包含在输入多媒体流中的每个媒体流的信息。
每个媒体流信息都打印在名为“STREAM”的专用部分中。
-show_programs 显示包含在输入多媒体流中的有关程序及其流的信息。
每个媒体流信息都打印在一个名为“PROGRAM_STREAM”的专用部分中。
-show_chapters 显示有关章节存储格式的信息。
每一章都印在一个专门的章节中,并命名为“CHAPTER”。
-count_frames 计算每个流的帧数,并在相应的流部分报告。
-count_packets 计算每个流的包数,并在相应的流部分中报告它。
-read_intervals read_intervals 只读取指定的间隔。read_interval必须是一个由","分隔的间隔规范序列。ffprobe将查找到间隔起始点,并从该起始点继续读取。
每个间隔由两个可选部分指定,以“%”分隔。
第一部分指定间隔的起始位置。它被解释为绝对位置,或者如果它前面有“+”字符,则被解释为与当前位置的相对偏移量。如果没有指定第一部分,则在读取此间隔时将不执行任何查找。
第二部分指定间隔结束位置。它被解释为绝对位置,或者如果它前面有“+”字符,则被解释为与当前位置的相对偏移量。如果偏移量规范以“#”开始,它将被解释为从间隔开始读取的包数(不包括刷新包)。如果没有指定第二部分,程序将读取直到输入结束。
注意,查找是不准确的,因此实际的间隔起始点可能与指定的位置不同。另外,当指定了间隔持续时间时,绝对结束时间的计算方法是将持续时间添加到通过查找文件找到的间隔起始点,而不是添加到指定的起始值。
形式语法由:
INTERVAL ::= [START|+START_OFFSET][%[END|+END_OFFSET]]
INTERVALS ::= INTERVAL[,INTERVALS]
下面是几个例子。
查找到时间10,读取数据包直到找到查找点后20秒,然后查找到位置01:30(1分30秒),读取数据包直到位置01:45。
在寻求位置01:23后只读42个包:
01:23%+#42
只阅读开始的前20秒:
%+20
从开始读到位置02:30:
%02:30
-show_private_data, -private 显示私有数据,即取决于所显示的特定元素的格式的数据。这个选项在默认情况下是启用的,但是您可能需要为特定的用途禁用它,例如在创建符合xsd的XML输出时。
-show_program_version 显示与程序版本相关的信息。
版本信息在名为“PROGRAM_VERSION”的区域中打印。
-show_library_versions 显示与图书馆版本相关的信息。
每个库的版本信息都打印在名为“LIBRARY_VERSION”的部分中。
-show_versions 显示与程序和库版本相关的信息。这相当于同时设置-show_program_version和-show_library_versions选项。
-show_pixel_formats 显示FFmpeg支持的所有像素格式的信息。
每种格式的像素格式信息都打印在名为“PIXEL_FORMAT”的区域中。
-bitexact 强制精确输出,用于产生不依赖于特定构建的输出。
-i input_url 读input_url。

写入器

一个写入器定义了ffprobe采用的输出格式,并将用于打印输出的所有部分。

写入器可以接受一个或多个参数,参数指定要采用的选项。选项被指定为键=值对的列表,用“:”分隔。

所有写入器都支持以下选项:

选项 参数 说明
string_validation, sv 设置字符串验证模式。
可以接受以下值。
‘fail’:如果在输入中发现无效的字符串(UTF-8)序列或代码点,编写器将立即失败。这对于验证输入元数据特别有用。
‘ignore’:任何验证错误都将被忽略。这可能会导致错误的输出,特别是对于json或xml编写器。
‘replace’:编写器将用string_validation_replacement指定的字符串替换无效的UTF-8序列或代码点。
默认值是“replace”。
string_validation_replacement, svr 设置替换字符串用于string_validation被设置为’ replace '的情况。
如果没有指定该选项,编写器将假定为空字符串,也就是说,它将从输入字符串中删除无效序列。

下面是对当前可用写入器的描述。

default

默认格式。

列印表格各部分:

[SECTION]
key1=val1
...
keyN=valN
[/SECTION]

元数据标记在相应的格式、STREAM或PROGRAM_STREAM部分中打印为一行,并以字符串“TAG:”作为前缀。

下面是可接受选项的描述。

选项 参数 说明
nokey, nk 如果设置为1,则指定不打印每个字段的键。默认值为0。
noprint_wrappers, nw 如果设置为1,则指定不打印节标题和页脚。默认值为0。

compact, csv

Compact和CSV格式。

csv写入器相当于compact,但是支持不同的默认值。

每个部分打印在一行上。如果没有指定选项,输出形式如下:

section|key1=val1| ... |keyN=valN

元数据标签以对应的“format”或“stream”部分打印。如果输出元数据标签键,则以字符串“tag:”作为前缀。

下面是可接受选项的描述。

选项 参数 说明
item_sep, s 指定用于分隔输出行的字段的字符。它必须是一个单独的可打印字符,默认为“
nokey, nk 如果设置为1,则指定不打印每个字段的键。它的默认值是0(对于csv编写器来说是1)。
escape, e 设置转义模式使用,默认为“c”(csv写入器为“csv”)。
它可以假设下列值之一:
c:执行c转义。字符串包含一个换行符(\n),回车(\r),一个标签(\t),一种饲料(‘\f),转义字符(“\”)或项目分隔符SEP使用类似c的格式转义,因此换行符转换为序列’\n’,回车符转为’\r’,’‘转为’\‘再将分隔符SEP转换为’ \SEP ‘。
csv:执行RFC4180中描述的类似于csv的转义。包含换行符(’\n’)、回车符(’\r’)、双引号(’"’)或SEP的字符串被括在双引号中。
none:不执行转义。
print_section, p 如果值为1,则禁用它,并将值设置为0。默认值为1。

flat

flat格式。

一种自由格式的输出,其中每行都包含一个显式的key=value,比如"streams.stream.3.tag.foo=bar"。输出是shell转义的,因此只要分隔符是字母数字字符或下划线,就可以直接嵌入到sh脚本中(请参阅sep_char选项)。

下面是可接受选项的描述。

选项 参数 说明
sep_char, s 分隔符用于分隔章节、节名、id和打印字段键中的潜在标签。
默认值是’ . '。
hierarchical, h 指定节名规范是否应该是分层的。如果设置为1,并且当前章节中有多个章节,那么章节名称将以章节名称作为前缀。值为0将禁用此行为。
默认值为1。

ini

INI格式输出。

以INI格式打印输出。

通过了下列公约:

  • 所有键和值都是UTF-8
  • '.'是子组分隔符
  • 换行符,’\t’, ‘\f’, '\b’和下面的字符进行转义
  • '\'是转义字符
  • '#'是注释指示器
  • '='是键/值分隔符
  • ':'不使用,但通常解析为键/值分隔符

这个编写器以键=值对列表的形式接受选项,以’:'分隔。

下面是可接受选项的描述。

选项 参数 说明
hierarchical, h 指定节名规范是否应该是分层的。如果设置为1,并且当前章节中有多个章节,那么章节名称将以章节名称作为前缀。值为0将禁用此行为。
默认值为1。

json

基于JSON格式。

每个部分都使用JSON符号打印。

下面是可接受选项的描述。

选项 参数 说明
compact, c 如果设置为1,则使压缩输出,即每个部分将打印在一行上。默认值为0。

有关JSON的更多信息,请参见http://www.json.org/。

xml

基于XML的格式。

XML输出在XML模式描述文件ffprobe中进行描述。在FFmpeg数据adir中安装的xsd。

模式的更新版本可以从url http://www.ffmpeg.org/schema/ffprobe.xsd检索到,它将重定向到提交到FFmpeg开发源代码树中的最新模式。

注意,发出的输出将符合ffprobe。只有当没有指定特殊的全局输出选项(unit、prefix、byte_binary_prefix、sexagesimal等)时,才使用xsd模式。

下面是可接受选项的描述。

选项 参数 说明
fully_qualified, q 如果设置为1,则指定输出是否应该完全限定。默认值为0。这对于生成可通过XSD文件进行验证的XML文件是必需的。
xsd_strict, x 如果设置为1,则执行更多检查以确保输出符合XSD。默认值为0。此选项自动将fully_qualified设置为1。

有关XML格式的更多信息,请参见https://www.w3.org/XML/。

时间码

ffprobe支持时间码提取:

  • MPEG1/2时间码是从GOP中提取的,可以在视频流的详细信息中找到(-show_streams,请参阅timecode)。
  • MOV时间码是从tmcd轨道中提取的,所以可以在tmcd流元数据中使用(-show_streams,参见TAG:timecode)。
  • DV、GXF和AVI时间码都可以在格式元数据中使用(-show_format,参见TAG:timecode)。

ffprobe-命令行详解相关推荐

  1. python的pytest模块:pytest命令行详解

    一.官方文档 How to invoke pytest - pytest documentationhttps://docs.pytest.org/en/latest/how-to/usage.htm ...

  2. GCC 命令行详解 -L -l

    我们用gcc编译程序时,常常会用到"-I"(大写i),"-L"(大写l),"-l"(小写l)等参数,下面做个记录: GCC 命令行详解 -L ...

  3. 7Z解压缩包软件命令行详解

    7Z命令行 7z.exe在CMD窗口的使用说明如下: 7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06 Usage: 7za ...

  4. windows winrar 指令_【转】winrar命令行详解

    从命令行也可以运行 WinRAR 命令,常规的命令行语法描述如下: WinRAR  - - 命令:WinRAR 运行的字符组合代表功能 开关:切换操作指定类型,压缩强度,压缩文件类型,等等的定义. 压 ...

  5. WinZip命令行详解

    在WinZip安装包中没有包含命令行工具,但在其官方站点上有单独提供下载,所以如需要WinZip命令行工具就得去官方站点下载并单独安装,需要注意的是安装WinZip命令行工具前确保机子上已经安装有适当 ...

  6. FFmpeg 快速上手:命令行详解、工具、教程、电子书

    FFmpeg 简介 FFmpeg 是一个开源的音视频处理工具,诞生已22年.它可以用来处理音视频的编解码.格式转换.剪辑.合并.抽取.压缩.解压缩.滤镜.字幕等等.它可以在 Windows.Linux ...

  7. php cli 判断,php cli 命令行详解【转】

    CLI PHP 的优点 多年以来,我一直都在应用不确定的工程师职责定义.我个人认为,工程师就是使用工具来实现与该工具最初开发目的无关的功能.虽然这种想法并不总是正确,但当您认真考虑它时,将发现大多数创 ...

  8. [转]GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名

    1.gcc包含的c/c++编译器 gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什 么意思:))一般c程序就用gcc编译,c++程序就用g++编 ...

  9. Python爬虫从入门到放弃(十三)之 Scrapy框架的命令行详解

    这篇文章主要是对的scrapy命令行使用的一个介绍 创建爬虫项目 scrapy startproject 项目名 例子如下: localhost:spider zhaofan$ scrapy star ...

  10. 命令行详解下载高清视频

    使用youtubedr直接给出命令行 1.youtubedr info "视频地址" 2.youtubedr download -q 视频tag "视频地址" ...

最新文章

  1. 为什么优秀的程序员都成了无能的领导?
  2. asp.net c#截取指定字符串函数
  3. Java live template[在此处输入文章标题]
  4. 使用Celery踩过的坑
  5. truncate、drop、delete区别
  6. ocRuntime基本功
  7. 智能优化算法:蝠鲼觅食优化算法 - 附代码
  8. 安防在智能家居中扮演什么角色?
  9. Fiddler2(汉化版)下载
  10. 深度学习:pycharm随机种子
  11. 深度卷积神经网络及各种改进
  12. python求15 17 23 65 97的因数_32个常用的Python功能介绍
  13. 2015-2016 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2015) Adjoin the Networks (树的直径)
  14. Linux 学习路线图
  15. 为学日益,为道日损——编程的学与做
  16. java 相关论坛或网站
  17. OpenCV 利用高斯模糊实现简单的磨皮美颜效果
  18. pdfplumber读取PDF文本内容时出现cid字符
  19. 骁龙820 html5 dom,苹果iPhone 7 A10处理器探秘:这项性能 11倍于骁龙820!
  20. UIPATH 收发Outlook邮件

热门文章

  1. 四轴飞行器——Pixhawk指示灯和蜂鸣器的含义
  2. pkcs1转pkcs8 php,pkcs1与pkcs8格式RSA私钥互相转换
  3. 利用css 画三角形
  4. 微信小程序 绝对路径 require
  5. 前端 模块化导入导出方法
  6. php微信支付商户免充值代金券接口升级
  7. 2021年熔化焊接与热切割考试报名及熔化焊接与热切割试题及解析
  8. 扫地机器人石头爬坡_障碍挡不住!石头扫地机器人T6体验:脱困越障不跌落的全能选手...
  9. 【HAOI 2008】 移动玩具
  10. GE医疗正式发布高端全身超声机晶准E9