ffmpeg文档23-元数据(metadata)

23 元数据(metadata)

FFmpeg能够提取媒体文件元数据,并转储到一个简单的utf-8编码的类INI文本文件中,然后在分离器/混合器中再次使用

转储的文件格式为:

  1. 文件包含一个头,以及一些元数据标签,元数据放置在各自子节的行中
  2. 文件头有一个 ‘;FFMETADATA’ 字符串,紧接着版本号(目前为1)
  3. 元数据标签以‘key=value’ 形式给出
  4. 头紧跟着是全局元数据
  5. 在全局元数据后可能有分部的元数据(每个流/每个章)
  6. 分节元数据从分节名,由(‘[’, ‘]’)括起的大写字符串(STREAM 或者 CHAPTER),直至下一节或者文件结束
  7. 在一章的开始部分可能有一个可选的时基用于开始/结束值(start/end),其形如TIMEBASE=num/den,这里numden是整数。如果没有设置,则开始/结束 时间以milliseconds为单位

    下一章(节)的元数据描述包含了开始结束时间的(形如 ‘START=num’, ‘END=num’)则时间值(这里的num)必须是正整数

  8. 空行(无效),开始字符是";"或者"#"的行被忽略
  9. 如果元数据标签或者值中包含特殊字符(‘=’, ‘;’, ‘#’, ‘\’和 回车/换行),必须由‘‘进行转义
  10. 注意空格在元数据中(例如‘foo = bar’)会被认为是标签的一部分(前面的标签关键字是 ‘foo ’——注意有一个空格的,值是 ‘ bar’——也有一个空格的)

一个ffmetadata文件大致像:

;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team
[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multiline

通过使用ffmetadata,混合器和分离器可以从输入的ffmetadata文件中导出元数据,也可以编辑ffmetadata文件以转换输出到输出文件中

利用ffmetadata导出元数据:

ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE

从FFMETADATAFILE 文件中加载元数据信息输出到输出文件中:

ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
时间: 2024-12-13 03:21:29

ffmpeg文档23-元数据(metadata)的相关文章

ffmpeg文档43-开发者

43 开发者 是FFmpeg的开发者 关于作者的详细信息,可以观看项目(git://source.ffmpeg.org/ffmpeg)的Git历史,或者项目中目录中使用命令git log了解,或者浏览在线的源码(http://source.ffmpeg.org) 源代码树中维护者文件(MAINTAINERS)列出了特定组件的维护人员 另本文档英文版本由makeinfo于2015年6月16日生成 汉化翻译补充说明 由xdsnet(xdsnet at gmail dot com)在2015年6月16

ffmpeg文档16-音频编码器

16 音频编码器 介绍当前可用的音频编码器 aac AAC(Advanced Audio Coding )编码器 当前原生(内置)编码器还处于实验阶段,而且只能支持AAC-LC(低复杂度AAC).要使用这个编码器,必须选择 ‘experimental’或者'lower' 因为当前还处于实验期,所以很多意外可能发生.如果需要一个更稳定的AAC编码器,参考libvo-aacenc,然而它也有一些负面报告. aac选项 b 设置码率,单位是bits/s,是自动恒定比特率(CBR)模式的码率 q 设置为

ffmpeg文档05-选项

5 选项 所有的数值选项,如果没有特殊定义,则需要一个接受一个字符串代表一个数作为输入,这可能跟着一个单位量词首字母,例如"k","m"或"G" 如果i是附加到SI单位的首字母,完整的字母将被解释为一个2的幂数单位,这是基于1024而不是1000的,添加B的SI单位则是再将此值乘以8.例如KB,MiB,G和B 对于选项中不带参数的布尔选项,即把相应的值设置为true,它们可以添加no设置为false,例如nofoo就相当于foo false .

ffmpeg文档27-输出设备

27 输出设备 输出设备是可配置用于ffmpeg写入多媒体数据的元素,其附加到系统的输出设备. 在编译配置ffmepg时,所有支持的输出设备都被默认允许.你可以使用配置选项–list-outdevs了解有哪些设备. 你可以通过–disable-outdevs禁止编译所有输出设备,然后再通过–enable-outdev=OUTDEV以支持个别的设备,也可以通过默认配置,再添加–disable-outdev=OUTDEV来禁用个别设备. 在ff*工具集中,-devices可以显示当前允许的输出设备.

ffmpeg文档26-输入设备

26 输入设备 FFmpeg中的输入设备配置元素用来启用对附加到您的系统一个多媒体设备访问数据. 当编译时,默认会支持所有的输入设备.你可以通过在配置脚本执行时附加–list-indevs了解到支持的设备. 可以通过–disable-indevs在编译时禁用所有输入设备,也可以在此基础上通过–enable-indev=INDEV允许个别设备,或者在默认支持基础上通过–disable-indev=INDEV禁用个别设备支持达到类似的目的. 在ff*工具集中,使用-devices可以获取当前支持的设

ffmpeg文档17-视频编码器

17 视频编码器 介绍一些当前有效的视频编码器 libtheora libtheora的封装 编译需要头和库文件,还需要利用--enable-libtheora在配置中允许 更多信息参考http://www.theora.org/ libtheora选项 下面是映射给libtheora的全局选项,它们对品质和码率产生影响. b 对CBR(固定码率编码)设置码率,单位bit/s,在VBR(动态码率编码)模式下本选项被忽略. flags 设置是否允许qscale标志(恒定质量模式——VBR模式下)在

ffmpeg文档38-视频源

38 视频源 下面是当前有效的视频源 buffer 缓冲视频帧,其可以作为滤镜链图的环节 它通常用于编程,特别是通过libavfilter/vsrc_buffer.h的接口. 接受如下参数: video_size 指定视频尺寸,(同时指定width 和 height).语法同于ffmpeg-utils手册中的视频尺寸章节. width 输入视频宽 height 输入视频高 pix_fmt 像素格式描述,可以是一个表征像素格式的号码或者名称 time_base 指定时间戳时基 frame_rate

ffmpeg文档40-多媒体滤镜

40 多媒体滤镜 下面介绍当前有效的多媒体滤镜 avectorscope 转换输入音频到视频输出以代表音频矢量范围(一种图形化音频处理) 这个滤镜用来测量立体声音频中两路音频间的区别.如果是单声道信号做成的2个声道(左右耳声道),因为两路完全相同(其实只有1路),所以输出是一个垂直的直线(表示二者无差别).如果是立体声信号(两路肯定或多或少有差别),则创建一个利萨如(Lissajous)图形,其水平看,线长度与相位等表征了两个声道差异情况. 滤镜接受如下选项: mode, m 设置矢量显示模式,

ffmpeg文档21-分离器

分离器 分离器是使得ffmpeg能从特定类型文件中读取多媒体流的组件元素. 当编译ffmepg时,所有支持的分离器都默认被包含,你可以通过编译配置脚本中的--list-demuxers列出所有支持的分离器. 你也可以通过配置--disable-demuxers禁用所有的分离器,如果要在此基础上允许单独的分离器可以选用--enable-demuxer=DEMUXER形式配置,也可以在默认情况下通过--disable-demuxer=DEMUXER禁用个别分离器. ff*工具集中-formats选项