PSPChina's Archiver

天神十三煞 发表于 2009-6-30 01:42

2009-06-30 蓝光影视媒体菜单结构浅析

虽然标题说浅析,但实际内容可能较复杂,修改原盘现阶段也是很烦琐的工作
本文写给有兴趣修改原盘加字幕流或音频流的网友看的,没兴趣的可以不看了

本文主要以菜单基本类型为例子,其他情况实例操作以后再补充说明
本文可能有错误或不准确的地方,请明确指出,我会加以修正或补充

准备工作,需要的工具
tsmuxer
BDedit
AVCHD-Patcher
HxD
下载连接(tsmuxer的包里含前三个工具)
[url]http://gilleco.2alien.net/MediaTools/tsMuxer.rar[/url]
[url]http://gilleco.2alien.net/MediaTools/HxD.rar[/url]

然后,你得懂十六进制和其算法[Hex],不懂就先去问搜索引擎,学会再来
够大的移动硬盘用于PS3试验,PC虽有相关播放器,但实硬体BD播放器情况才准确

有足够耐心,仔细,因为烦琐,所以操作时不要毛躁
时刻注意备份,主要指菜单结构文件备份,数据修改较多,常备份减少重做工量

本文的结构信息说明肯定是不全面的,选主要的讲,其他细节信息需要各位慢慢摸索总结
BDedit可以进行不少的结构信息修改,但是该软件有写操作bug,所以尽量用HxD代替操作

本文后面凡是带h字母的,则为16进制表示法,hexagon
本文后面凡是带d字母的,则为10进制表示法,decimal

天神十三煞 发表于 2009-6-30 01:43

[size=5][color=blue][b]菜单文件数据结构[/b][/color][/size]

[quote][b]index[/b]
播放列表的序号索引
[img]http://img2.a9vg.com/4000/3802//album//1245075879/1245076175593.png[/img]
无特别需要,一般不需要修改此文件
此文件和object信息是对应的[/quote]
[quote][b]object[/b]
各视频播放时对应菜单和指令表
[img]http://img2.a9vg.com/4000/3802//album//1245075879/1245076221046.png[/img][/quote]
[quote][b]media playlist[/b]
mpls就是播放列表信息
[img]http://img2.a9vg.com/4000/3802//album//1245075879/1245076331936.png[/img]
mpls里包含一段完整的媒体信息,整段影片可能是多个剪辑块串联而成[/quote]
[quote][b]clip information[/b]
clpi就是媒体剪辑块的信息
[img]http://img2.a9vg.com/4000/3802//album//1245075879/1245076405266.png[/img][/quote]
[quote]
[img]http://img2.a9vg.com/4000/3802//album//1245075879/1245080188164.png[/img]

Offset 0030h 起 0008h 个字节 0004050C40000000h 是该播放列表允许的菜单功能的信息
见BDedit查看mpls时顶上的两排

Offset 000Eh 起 0002h 个字节 058Eh代表的是该列表整段影片章节时间码信息储存区开始位置
Offset 003Ch 起 0002h 个字节 0550h代表的是该列表整段影片的全部剪辑块信息储存区总长度
也是章节时间码开始位置偏移长度,3Dh+550h=58Dh

Offset 0040h 起 0002h 个字节 是该列表整段影片所含剪辑块的个数
Offset 0044h 起 054Ah 个字节 是该列表整段影片全部剪辑块信息区域
Offset 0044h 起 0092h 个字节 是该列表第一个剪辑块信息区域
Offset 0050h 起 0001h 个字节 是该剪辑块与前后块的关系类型[1h为起始、6h为接续、15h为分歧]
Offset 0052h 起 0008h 个字节 是该剪辑块的开始时间[IN time]和结束时间[Out time]
Offset 0066h 起 0002h 个字节 是该剪辑块所含流标签信息储存区的长度,6Eh+67h=D5h
Offset 006Ah 起 0007h 个字节 是该剪辑块所含流的条数信息,STN[Vi/Au/PG/IG/sV/sA/PIP]
Offset 0076h 起 0060h 个字节 是该剪辑块所含流标签信息,10h[16d]个字节为一条流信息
Offset 00C6h 起 0010h 个字节 是该剪辑块的弹出菜单标签信息
后面的剪辑块情况不再赘述,请按规律依次类推

Offset 0566h 起 0024h 个字节 是该列表整段影片使用的弹出菜单对应媒体块的信息

Offset 058Eh 起 0004h 个字节 是该列表整段影片章节时间码信息储存区总长度,591h+286h=817h
Offset 0592h 起 0002h 个字节 是该列表整段影片章节时间码条数,2Eh[46d]

Offset 0594h 起 0284h 个字节 是该列表整段影片全部章节时间码信息区域
Offset 0594h 起 000Eh 个字节 是该列表整段影片章节时间码中第一条的信息
Offset 0598h 起 0004h 个字节 是该条章节时间码的具体时间值
Offset 0596h 起 0002h 个字节 是该条章节时间码的对应的媒体剪辑块序号[在该位储存值上加1][/quote]
[quote]
[img]http://img2.a9vg.com/4000/3802//album//1245075879/1245076681301.png[/img]

Offset 0034h 起 0004h 个字节 是该剪辑块的rate  值,BDedit查看CLIPINF后Status有记录此值
Offset 0038h 起 0004h 个字节 是该剪辑块的packet值,BDedit查看CLIPINF后Status有记录此值

Offset 00EEh 起 0008h 个字节 是该剪辑块的开始时间[IN time]和结束时间[Out time]

Offset 00F8h 起 0084h 个字节 是该剪辑块所含流标签信息储存区
Offset 00F8h 起 0002h 个字节 0082h代表的是该储存区的长度F9h+82h=17Bh
Offset 0102h 起 0001h 个字节 是该块所含流的条数信息,此块共含5条流,1视频流/2音频流/2字幕流
Offset 0104h 起 0018h 个字节 是该块第一条流标签信息,后面几条一次类推[/quote]

天神十三煞 发表于 2009-6-30 01:44

[i=s] 本帖最后由 天神十三煞 于 2009-7-15 12:26 编辑 [/i]

[size=5][color=blue][b]修改流程步骤简述[/b][/color][/size]

[quote][b]一 提取章节时间码[/b]
用BDedit打开需要修改的原版,在Options项的chapter format选为Time
在Playlist项选中你要修改的媒体片段的mpls,点save chapters获得一个文本[/quote]
[quote][b]二 加流并分割[/b]
现在用tsmuxer对原盘中需要修改的部分进行加字幕,或音轨
如果是多段,请按照playlist里排列的顺序依次add后join各个m2ts
若源是分段的,加字幕或音轨不是分段的没有关系,只要总长时间可以对应就行了
在blu-ray项chapters选Custom,复制第一步操作里获得文本里内容到这里
为了方便将Option里m2ts数字填写为大于原目录下m2ts最大序号的数字
例bdmv/stream里最大为00200.m2ts,则填201,这是为了作分割时方便替换操作
如果你要移动硬盘播放,可以选择分割,填4.29[单位GB]或3.99[单位Gib]
选blu-ray或avchd封装输出,这里其他具体细节相关tsmuxer教程甚多,这里不再赘述[/quote]
[quote][b]三 替换文件[/b]
将原版里你刚才修改时参照的[u]原mpls[/u]列出的m2ts及其对应序号的clpi全部移开,或者删除
将[u]原mpls[/u]备份出来到任意目录,然后将新目录里的m2ts和clpi全部移到原版对应目录[/quote]
[quote][b]四 修改播放列表[/b]
现在打开HxD,新生成的mpls和[u]原mpls[/u]都拖进去,理清mpls基本数据结构后开始修改
在[u]原mpls[/u]里移到章节时间码信息储存区开始位置,记下数字,等下增长了好找修改位置

复制[u]新mpls[/u]里第一个剪辑块信息区域里新增的流标签信息,然后在[u]原mpls[/u]对应位置插入
一条流长度为10h[16d],不要看错,然后修改[u]原mpls[/u]的STN,增加标签流对应改大STN值
接下来修改[u]原mpls[/u]第一个剪辑块所含流标签信息储存区的长度值,增加一条标签就加10h

若新生成的有分割,复制改动过的[u]原mpls[/u]第一个剪辑块全部信息区域,按[u]新mpls[/u]分割块数
在第一剪辑块信息区末尾插入增加信息块[若原版也多块则将[u]原mpls[/u]后续剪辑块信息都删除]
这里要插入粘贴的次数当然是新生成m2ts数量减1,此操作完后修改该mpls所含剪辑块的个数

对照[u]新mpls[/u],修改[u]原mpls[/u]各个剪辑块的[IN time]和[Out time],修改块与块的关系类型
[u]原mpls[/u]的000Eh处修改章节时间码信息储存区开始位置,003Ch处改剪辑块信息储存区总长度

在[u]新mpls[/u]的000Eh处,按此值移到章节时间码信息储存区开始位置,复制此后所有信息
在[u]原mpls[/u]的000Eh处,按此值移到章节时间码信息储存区开始位置,删除此后所有信息,然后粘贴。

(注:如无分块情况,不大副操作去动章节码信息也是可行的)
(无分块时把[u]原mpls[/u]未改的[IN time]和[Out time]覆盖到新clpi即可)[/quote]
[quote]到此,所有必要修改操作算是完成了,如果要刻录,按照一般方法刻录BD即可
而需要移动硬盘模拟播放则用AVCHD-Patcher将原版index拖来patch一下就行了[/quote]

天神十三煞 发表于 2009-6-30 01:44

备用

JT.7 发表于 2009-6-30 19:15

[s:18]果然是睾科技~~~~~

zuisu 发表于 2009-6-30 19:28

严重支持技术贴,谢谢

pspv 发表于 2009-9-4 13:24

学习 感谢[s:1]

851 发表于 2010-1-9 21:24

[color=Magenta]支持!!!!!!!!!!!!!!!!!!!!!!!!!![/color][s:28]

页: [1]
Google
 

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.