在BD-Rip制作过程中,有个步骤叫做提取章节,其输出的最为简单的格式为OGM。
OGM格式详解
每个章节时间戳占两行,
第一行为章节时间点,格式为CHAPTERd{2}=d{2}:d{2}:d{2}.d{3}
第二行为章节名称,格式为CHAPTERd{2}NAME=.*
符号解释: d=匹配一个数字字符, {n}=n是一个非负整数。匹配确定的n次,.=匹配除“
”之外的任何单个字符,*=匹配前面的子表达式零次或多次,.=匹配.本身。
此处,d{2}为两位数字,表示章节序号。
d{2}:d{2}:d{2}.d{3}为时间,精确至毫秒
.*为章节名称
一般而言,每一集都会独立为一个m2ts文件,于是章节也是各自独立的,无需特殊处理。
但是,如果一个 BD 里面多集是连在一个 m2ts 文件的,情况就复杂了。典型的比如说化物语(Bakemonogatari) 的 Vol.1,两集是连在 00000.m2ts 里面的。
章节内容:
CHAPTER01=00:00:00.000
CHAPTER01NAME=Avant
CHAPTER02=00:02:43.038
CHAPTER02NAME=Opening
CHAPTER03=00:04:13.003
CHAPTER03NAME=A Part
CHAPTER04=00:14:24.906
CHAPTER04NAME=B Part
CHAPTER05=00:23:54.975
CHAPTER05NAME=Ending
CHAPTER06=00:25:57.055
CHAPTER06NAME=Avant
CHAPTER07=00:26:45.102
CHAPTER07NAME=Opening
CHAPTER08=00:28:15.067
CHAPTER08NAME=A Part
CHAPTER09=00:36:28.102
CHAPTER09NAME=B Part
CHAPTER10=00:49:27.088
CHAPTER10NAME=Ending
显然我们需要把两集给拆分开来,视频拆分完了,那章节呢?第二集的部分是这样:
CHAPTER06=00:25:57.055
CHAPTER06NAME=Avant
CHAPTER07=00:26:45.102
CHAPTER07NAME=Opening
CHAPTER08=00:28:15.067
CHAPTER08NAME=A Part
CHAPTER09=00:36:28.102
CHAPTER09NAME=B Part
CHAPTER10=00:49:27.088
CHAPTER10NAME=Ending
但是时间显然是应该从00:00:00.000重新开始计时的,也就是,这样:
CHAPTER01=00:00:00.000
CHAPTER01NAME=Avant
CHAPTER02=00:00:48.047
CHAPTER02NAME=Opening
CHAPTER03=00:02:18.012
CHAPTER03NAME=A Part
CHAPTER04=00:10:31.047
CHAPTER04NAME=B Part
CHAPTER05=00:23:30.033
CHAPTER05NAME=Ending
那么给你任务就是,给你一个未进行平移的章节片段,将它输出为以00:00:00.000初始时间的章节。
该输入包含多个样例,每一行为一个样例,输入以文件结束(EOF)为止。
第一行为测试样例数T
对每个测试样例,第一行为章节的个数n
接下来2n行为章节内容
输出
对每个测试样例,输出2n+1行,
前n行为修正后的章节信息
最后输出一空行