分页: 1 / 2

【置顶】[Python脚本]BD Chapters MOD - 从mpls中抽取Chapter并输出qpfile

发表于 : 2011-12-20 20:21
cunhan
原始脚本来自:jamesthebard http://www.jamesthebard.net/blog/?p=125
有从mpls抽取chapter输出xml的功能
而这个mod在此基础上追加以下功能:
1、增加ogm格式输出,并强制utf8输出
2、按m2ts分隔输出
3、可指定章节项的最大长度,按此值来分割chapter
4、可自动填入章节标题
5、可输出qpfile

运行环境:
Python2 或者 Python3均可。

脚本参数说明如下:
-n CHAPTERNAME, --chapter-name=CHAPTERNAME
给脚本指定一个文本文件,文件内每行包含一个章节标题。脚本会顺序填入即将输出的chapter中。注意:脚本只是“顺序”填入,并不会智能填入,所以类似某些片子部分ep有avant部分ep没有avant的情况就不适用了 -_,-
-f FORMAT, --format=FORMAT
指定chapter输出格式,xml 或 ogm,默认为ogm
-o OUTPUT, --output=OUTPUT
指定输出路径。此参数非必需,若不指定,则脚本按内置命名规则输出;若指定此参数,则脚本以此参数的值为输出路径的前缀,脚本内置命名规则生成文件名后缀,前后缀合并作为输出文件名。
-q, --qpfile
是否输出qpfile的开关,输出路径规则同章节文件输出规则
--force-fps=FORCE_FPS
指定帧率以覆盖mpls记录的m2ts帧率,格式为xxxxx/xxxx,脚本根据此帧率来计算qpfile的输出帧。此参数一般用于对30i片源做IVTC的情况。
--time-code=TIMECODE
向脚本提供一个v2格式的timecode文件,脚本根据此timecode来计算qpfile的输出帧。此参数一般用于片源需要处理成VFR的情况。
--scene-cut
向脚本提供一个scene change的frame list,用以辅助脚本修正qpfile的输出,而chapter也会同步修正输出。因此修正的准确度依赖于所提供的scene change file。
--include=INCLUDE
给定一个5位数字的m2ts文件编号,例如--include 00002,则脚本只输出该编号对应的chapter/qpfile
-l MAXLENGTH, --max-length=MAXLENGTH
指定章节项的时间戳最大值,格式为hh:mm:ss。若在一个playlist里面遇到时间戳大于该值的章节项时,则从该章节项开始分割这个playlist,并调节分割后的时间戳。此功能一般用于对付一个m2ts内含两集动画的情况。
关于qpfile的输出结果:
一般来说,如果不对片源作“改变帧数”处理的话,qpfile中的帧数都是准确对应各章节项的起始帧的。如果您在这种情况下使用本脚本得到的qpfile不是完全准确的,请作为bug报告给作者。
但是,如果对片源做了“改变帧数”的处理,例如IVTC或者手动/自动VFR等等,qpfile的输出结果就很难保证完全准确,使用该qpfile前请对照avs进行必要的修正。这种情况下生成的qpfile一般是有些是准确的有些是不准确的,就权当是参考资料吧。

Q:这个脚本抽出来的chapter好像有问题,我如何确认?
A:可以运行eac3to或者bdtools里的mpls_dump,对照结果。

# changlog:
# 2012-07-21:
# * bug fix: delete "link point"
# 删除"link point"类型的Playlist Mark entry
#
# 2012-02-05:
# * bug fix: exception occured when extract a empty playlist of some m2ts
# * 当mpls里的m2ts的playlist为空时,处理不当而抛异常。
#
# 2011-12-29:
# * add: --scene-cut, give a file contains scene cut frame number, to help script ajust qpfile/chapter output.
# 指定一个内容为scene cut帧号的文件,辅助本脚本修正qpfile/chapter的输出。
# 至于scene cut文件如何来,就请八仙过海吧。例如可以用taro新发布的SCDetect脚本。
# * add: add a comment line to the end of splited qpfile, to give a hint where to trim m2ts file
# 在分割的qpfile文件末尾写入一行注释,记录分割项的第一项在源m2ts的位置,以便trim。


# 2011-12-26:
# * bug fix: error output of splited chapter/qpfile.
# 修正分割时的输出错误
# * bug fix: some mpls fill 00 at the end can't extract.
# 不能抽取那些在文件尾填充00的mpls(例如白兔糖的BD)


下载地址(或者附件):
http://code.google.com/p/cunhan-media-t ... pters_MOD/

Re: [Python脚本]BD Chapters MOD - 从BDMV的mpls中抽取Chapter并输出qpfil

发表于 : 2011-12-20 21:08
-o-o-304-o-o-
拜谢村神~~

Re: [Python脚本]BD Chapters MOD - 从BDMV的mpls中抽取Chapter并输出qpfil

发表于 : 2011-12-26 1:19
cunhan
update @ 2011-12-26

修了两个bug

Re: [Python脚本]BD Chapters MOD - 从BDMV的mpls中抽取Chapter并输出qpfil

发表于 : 2011-12-29 19:34
cunhan
update @2011-12-29

增加外部输入scene change frame list,辅助修正qpfile的功能。

Re: [Python脚本]BD Chapters MOD - 从BDMV的mpls中抽取Chapter并输出qpfil

发表于 : 2012-02-05 17:40
06_taro

代码: 全选

D:\Program Files\Media\MeGUI\tools\ChapterGrabber>D:\Python\27\python.exe BD_Chapters_MOD.py --qpfile "E:\Download\[BDMV]Detective Conan Movie 5 Countdown To Heaven\BDMV\PLAYLIST\00001.mpls"
Input file: E:\Download\[BDMV]Detective Conan Movie 5 Countdown To Heaven\BDMV\PLAYLIST\00001.mpls
Output file: E:\Download\[BDMV]Detective Conan Movie 5 Countdown To Heaven\BDMV\PLAYLIST\00001
Output format: ogm
Traceback (most recent call last):
  File "BD_Chapters_MOD.py", line 533, in <module>
    main(arg, options, p)
  File "BD_Chapters_MOD.py", line 474, in main
    multi_ptsinfo = get_playlist(mpls)
  File "BD_Chapters_MOD.py", line 355, in get_playlist
    info.shift_pts()
  File "BD_Chapters_MOD.py", line 111, in shift_pts
    offset = self.pts[0]
IndexError: list index out of range
An exception occured.
Maybe you can send the info above to the author for debug.
Press Enter to continue
00001.mpls.7z
(284 Bytes) 下载 294 次
2.7和3.2一样

Re: [Python脚本]BD Chapters MOD - 从BDMV的mpls中抽取Chapter并输出qpfil

发表于 : 2012-02-05 19:05
cunhan
06_taro 写了:

代码: 全选

D:\Program Files\Media\MeGUI\tools\ChapterGrabber>D:\Python\27\python.exe BD_Chapters_MOD.py --qpfile "E:\Download\[BDMV]Detective Conan Movie 5 Countdown To Heaven\BDMV\PLAYLIST\00001.mpls"
Input file: E:\Download\[BDMV]Detective Conan Movie 5 Countdown To Heaven\BDMV\PLAYLIST\00001.mpls
Output file: E:\Download\[BDMV]Detective Conan Movie 5 Countdown To Heaven\BDMV\PLAYLIST\00001
Output format: ogm
Traceback (most recent call last):
  File "BD_Chapters_MOD.py", line 533, in <module>
    main(arg, options, p)
  File "BD_Chapters_MOD.py", line 474, in main
    multi_ptsinfo = get_playlist(mpls)
  File "BD_Chapters_MOD.py", line 355, in get_playlist
    info.shift_pts()
  File "BD_Chapters_MOD.py", line 111, in shift_pts
    offset = self.pts[0]
IndexError: list index out of range
An exception occured.
Maybe you can send the info above to the author for debug.
Press Enter to continue
00001.mpls.7z
2.7和3.2一样

已修正@2012-02-05
以前大虾也跟我报告过这个bug,不过那时候引起bug的mpls只有一个空playlist,于是我觉得无伤大雅就没更新了
而这次taro报的mpls则既含空playlist也含非空的

Re: [Python脚本]BD Chapters MOD - 从BDMV的mpls中抽取Chapter并输出qpfil

发表于 : 2012-07-22 0:21
cunhan
update
# 2012-07-21:
# * bug fix: delete "link point"
# 删除"link point"类型的Playlist Mark entry

Re: 【置顶】[Python脚本]BD Chapters MOD - 从mpls中抽取Chapter并输出qpfile

发表于 : 2013-09-25 22:27
upyzl
使用11月的那个版本
qpfile遇到问题:
初音2013Live disc1整体偏多125874帧 disc2整体偏多341648帧
但chapters的时间是准确的
也尝试--force-fps不过没用

这是由于BD的特殊性所致?

Re: 【置顶】[Python脚本]BD Chapters MOD - 从mpls中抽取Chapter并输出qpfile

发表于 : 2013-09-26 9:18
cunhan
请提供一下mpls,脚本生产的qpfile文件,以及你期待的正确qpfile。

Re: 【置顶】[Python脚本]BD Chapters MOD - 从mpls中抽取Chapter并输出qpfile

发表于 : 2013-09-26 9:48
upyzl
cunhan 写了:请提供一下mpls,脚本生产的qpfile文件,以及你期待的正确qpfile。
fixed为期待正确的qpfile(whole的那个用不上所以没弄fixed...)
顺带上chapters
PLAYLIST.zip
MIKUPA2013INKANSAI_BD_DISC2
(2.21 KiB) 下载 265 次