23 元數據(metadata)
FFmpeg能夠提取媒體文件元數據,並轉儲到一個簡單的utf-8編碼的類INI文本文件中,然后在分離器/混合器中再次使用
轉儲的文件格式為:
-
文件包含一個頭,以及一些元數據標簽,元數據放置在各自子節的行中
-
文件頭有一個 ‘;FFMETADATA’ 字符串,緊接着版本號(目前為1)
-
元數據標簽以‘key=value’ 形式給出
-
頭緊跟着是全局元數據
-
在全局元數據后可能有分部的元數據(每個流/每個章)
-
分節元數據從分節名,由(‘[’, ‘]’)括起的大寫字符串(STREAM 或者 CHAPTER),直至下一節或者文件結束
-
在一章的開始部分可能有一個可選的時基用於開始/結束值(start/end),其形如
TIMEBASE=num/den
,這里num
和den
是整數。如果沒有設置,則開始/結束 時間以milliseconds為單位下一章(節)的元數據描述包含了開始結束時間的(形如 ‘START=num’, ‘END=num’)則時間值(這里的
num
)必須是正整數 -
空行(無效),開始字符是";"或者"#"的行被忽略
-
如果元數據標簽或者值中包含特殊字符(‘=’, ‘;’, ‘#’, ‘\’和 回車/換行),必須由''進行轉義
-
注意空格在元數據中(例如‘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=multi\
line
通過使用ffmetadata,混合器和分離器可以從輸入的ffmetadata文件中導出元數據,也可以編輯ffmetadata文件以轉換輸出到輸出文件中
利用ffmetadata導出元數據:
ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
從FFMETADATAFILE 文件中加載元數據信息輸出到輸出文件中:
ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT