布里兰特 发表于 2021-1-31 02:02

陶大知 发表于 2021-2-2 21:04

陶大知 发表于 2021-2-3 16:26

Tring 发表于 2021-2-3 17:34

陶大知 发表于 2021-2-3 16:26
好哥哥,我发现游戏里有些重要剧情必须要看播片的,虽然片子少但是里面剧情好像讲的都蛮重要的。 ...

视频的编解码是很专业的范畴了,而且因为是CD直接导出的镜像,里面还有涉及到很多物理层纠错信息,处理起来会很麻烦。
而且就算能做,如果不是标准编码有现成的编码器的话,用脚本来编码效率肯定吃不消,各种压片压到天荒地老内存溢出。而如果要自己写编码器的话,那就太麻烦了。

我只能说看一眼,看看能不能找到现成工具做这个的。
如果没有的话,要做起来太费劲。

ajsh 发表于 2021-2-3 17:40

牛逼,支持楼主

Tring 发表于 2021-2-3 17:51

陶大知 发表于 2021-2-3 16:26
好哥哥,我发现游戏里有些重要剧情必须要看播片的,虽然片子少但是里面剧情好像讲的都蛮重要的。 ...

http://www.romhacking.net/utilities/878/
试试这个吧。号称能把STR转AVI也能把AVI转回STR。
游戏的STR文件被导出在ext文件夹下的STR.BIN,修改完后一样的名字放进mod文件夹下就能导回去。

我就不折腾了。

剑起苍斓 发表于 2021-2-3 18:00

真正的互联网精神啊

—— 来自 OnePlus ONEPLUS A5010, Android 9上的 S1Next-鹅版 v2.4.4.1

陶大知 发表于 2021-2-3 22:37

Tring 发表于 2021-2-3 22:45

陶大知 发表于 2021-2-3 22:37
看了些鬼佬的资料,鬼佬说更改播片要保证数据大小和源文件不能有差异,还要保证数据头对应……但是 ...

不一定的,看游戏里是怎么引用的。
你先用我说的方法试试看行不行。
事实上如果只是偏移有问题,反而还不算太难搞定。

陶大知 发表于 2021-2-3 22:51

Tring 发表于 2021-2-3 22:55

陶大知 发表于 2021-2-3 22:51
也许还是我太菜了,转成str的时候不知道这个该怎么填,除了倍速其他都找不到信息,而且还不会把 ...
哦,看来这工具不能像JPSXDESC那样自动解析开头结尾,要手动填。
有空我再看看吧。

先当视频改不了吧。要是我之后看了发现有简单的方法能改,再说也不迟。

Tring 发表于 2021-2-3 23:30

本帖最后由 Tring 于 2021-2-3 23:34 编辑

我试了下,86楼那个工具不太行,毕竟很老一直也没更新了。
那工具直接导出的AVI设置不对都导不回去,导回去了也会出现黑屏,就算不管黑屏还会丢失帧信息。

然后看了下jpsxdec的文档,在安装目录DOC下有一篇很长的manual手册,是这工具的命令行模式的手册。
命令行下,这工具支持很多GUI下不支持的功能,比如修改视频。
但是用起来特别麻烦(不是导视频,而是逐帧修改图片,还需要自己构建一个描述文件,但是可以用mask,所以其实可以用这方法导字幕),你如果真的想折腾的话,可以去研究一下那个文档。
这工具是直接处理ISO文件的,因此所有操作你都可以直接对汉化完的ISO进行。

Tring 发表于 2021-2-4 01:01

本帖最后由 Tring 于 2021-2-4 01:47 编辑


试着用了下上面提到的那个逐帧修改功能。
不知道为啥mask掩完了还剩下个黑框。(又试了试,黑框好像是没办法解决的,可能是内部编码问题吧,没办法弄透明背景的字幕)
(看了源码,mask也是以16*16的block为单位进行的,所以没办法做到逐像素mask,必然还有个黑框。至于为什么源码要这么做我是不太理解就是了。)
先除开这个不提,这么做字幕的话,需要自己把每一个字幕帧的图存下来,然后手动打轴。
打轴的部分最多是用脚本转一下现有格式之类的,还是挺麻烦。
看你想不想这么折腾了。

你要愿意折腾的话,可以现在开始准备了。
每句字幕单独保存一张png,黑底白字,320*208分辨率,对应屏幕,调整好字幕的大小和位置。其他颜色也行,但是字幕背景外框以外必须是黑色。
然后手动把每一句字幕的开始时间和结束时间标出来,单位秒,带小数点,记录在一个文本文件里,格式:
开始时间,结束时间,字幕文件名
一行一句,每一个视频单独打轴。

当然,你也可以完全自己来,不用等我脚本换算输出。保存一个xml文件类似这样:
<?xml version="1.0"?>
<str-replace version="0.2">
    <partial-replace frame="#60" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#61" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#62" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#63" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#64" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#65" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#66" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#67" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#68" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#69" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
    <partial-replace frame="#70" tolerance="5" mask="sub2.bmp"> sub2.bmp </partial-replace>
</str-replace>每一条代表一帧,frame是帧号,理论上来说带不带#号都一样,但是最好还是带上。在这游戏里和时间的换算是1秒15帧。
tolerance在用mask的时候不太重要,随便填个5就好。
mask和项内的内容都填保存的字幕png文件名。
因为每一条只显示一帧,所以上面这个实际上只是把sub2这张图里的内容,在从4秒到4.66秒之间显示了出来。
然后装个java,运行:
java -jar path\to\jpsxdec\jpsxdec.jar -x tc1v.idx -i 2358 -replaceframes sub.xml其中tc1v.idx是用gui版打开汉化rom后保存的index文件,sub.xml是上面描述的那个文件。
-i后面按个数字是你用文本编辑器打开idx文件后看到的你想修改的视频文件前面的那个编号。2358是视频0,2359是视频1,类推。
没报错就是顺利导入进去了。之后用gui版打开修改后的rom看看视频是否改对了就行了。


要是不想折腾的话,就直接省事。


陶大知 发表于 2021-2-4 19:20

Tring 发表于 2021-2-4 19:42

本帖最后由 Tring 于 2021-2-4 19:54 编辑

陶大知 发表于 2021-2-4 19:20
靠一個字一個字手打了字幕,但是遇到了意料外狀況:字母變得很糊而且還在一閃一閃的。附件為視頻。 ...
毕竟是经过编码的,可能是会糊掉,建议用黑体系(sans-serif系)的字体,如果必要可以加个粗,甚至可以勾个边。
闪的问题有可能是实际帧数和逻辑帧数不合,把frame前的#号去掉试试。
另外记得,源ISO文件每次改完后,要再次修改前,都要删掉再换回原版,否则修改就会在前一次的基础上叠加。(先试这一条,如果还是闪再动frame。)

陶大知 发表于 2021-2-11 01:56

zris 发表于 2021-2-11 12:59

牛哇。
资瓷楼主

布里兰特 发表于 2021-2-11 14:03

陶大知 发表于 2021-3-8 13:05

shikeyu 发表于 2021-3-16 20:08

视频汉化的问题不知道解决了没有,如果没有的话我可以说说我的解决方法。

陶大知 发表于 2021-3-16 20:31

shikeyu 发表于 2021-3-18 12:13

本帖最后由 shikeyu 于 2021-3-22 10:02 编辑

视频文件的提取和转换可以用jpsxdec。
下载地址 https://github.com/m35/jpsxdec/releases
字幕编辑我用的是Aegisub,网址是 https://aegi.vmoe.info/
字幕和视频的合成可以用格式工厂来做,要注意的是要输出为无压缩的AVI格式。
AVI转换为STR我用的是MC32,这个在PSX的开发包里有,
介绍和下载地址是 http://www.psxdev.net/help/psyq_install.html
修改后文件的导入我通常用我自己写的小工具,不过这个工具没有做ECC数据
的修正,如果刻盘需要用ECCREGEN这个软件修复一下镜像文件。
链接:https://pan.baidu.com/s/1pI9y1DGOJdo4EudjlXsT8g
提取码:ukf1
另外这个工具要求新文件小于或等于旧文件才能进行替换。
如果新文件比旧文件大就需要重组ISO。建议使用MKPSXISO这个工具。
网址是 https://github.com/Lameguy64/mkpsxiso。
看了一下这个游戏的所有动画都是集合在STR.BIN一个文件里的,
这种情况我之前没有碰到过,不过如果游戏是按照帧数进行调用的话,
保持各段的帧数不变,分解处理后再合并也许是可以的。

IRIS虹 发表于 2021-3-18 16:23

陶大知 发表于 2021-3-18 16:39

willzyj 发表于 2021-3-18 19:38

本帖最后由 willzyj 于 2021-3-21 19:45 编辑

从猫犬吧跳转过来,登上了10多年没用过的ID……
看到众位的反复钻研,深感这态度可比某些官方汉化强多了~

惊喜的是居然见到了shikeyu大神,有他在应该能有很大助力吧。
真诚期待各位大佬们的合作能够圆满成功。

陶大知 发表于 2021-3-19 13:26

shikeyu 发表于 2021-3-19 17:28

可以试试每个视频单独提取加字幕转换,然后用copy /b 命令合并成一个文件后导入,当然要确保每个文件大小和原来的一样。

陶大知 发表于 2021-3-19 21:15

Tring 发表于 2021-3-21 04:34

陶大知 发表于 2021-3-19 21:15
您好,copy /b 命令合并的话每个STR文件的Sectors都会紧密连接在一起,而原STR.BIN中,每个文件的Sectors ...

你确定第2段能放出来么?
我觉得第1段能放出来是肯定的,关键是第2段。如果第2段能放出来说明这么搞是有效的,微调下就能解决。如果放不出来说明要改动的东西还比较多。

陶大知 发表于 2021-3-21 09:06

文鳥 发表于 2021-3-21 14:12

借楼问一下,DS上的天空机器人是正统续作吗?

Tring 发表于 2021-3-21 18:07

陶大知 发表于 2021-3-21 09:06
我所有的都试了一下,能放出来的有这些:

STR0


别用什么copy来拼文件了,保存下面这个脚本为py文件运行试试吧。

#! python3
# coding: utf-8

import os, os.path

SECT_SIZE = 2352
def concat_files(output, input_list):
    base_snum = input_list
    with open(output, 'wb') as fo:
      datalen = 0
      last_iname = ''
      for snum, iptname in input_list:
            dstlen = (snum - base_snum) * SECT_SIZE
            if dstlen > datalen:
                fo.write(bytes(dstlen - datalen))
                datalen = dstlen
            elif dstlen < datalen:
                print('warning: src file is bigger than expected:',
                      last_iname, datalen - dstlen)
            last_iname = iptname
            with open(iptname, 'rb') as fi:
                iptdata = fi.read()
                fo.write(iptdata)
                datalen += len(iptdata)

if __name__ == '__main__':
    concat_files(
      'to.out', [
            (321, 't1.txt'),
            (322, 't2.txt'),
            (323, 't3.txt'),
            (324, 't1.txt'),
      ])
            

自己改下底下的文件名和sect号。to.out那是输出文件名,t1.txt那一串是输入文件名,前面的321那一串数字是起始sect号。
注意,列表中的sect号一定要是从小到大顺着排的,不能错序。
如果有输入文件超了目标大小会报个警告,但是会继续把文件拼完。

陶大知 发表于 2021-3-21 19:16

Tring 发表于 2021-3-21 19:20

陶大知 发表于 2021-3-21 19:16
抱歉出大问题了,导出来的文件在jpsxdec里面只能读出第一个视频,其他全都是垃圾文件,而且导出的文件也 ...

sect号和以前比是对准的么?如果是对准的还这样,那就说明仅仅插空白数据是不行的。

陶大知 发表于 2021-3-21 19:22

Tring 发表于 2021-3-21 19:27

陶大知 发表于 2021-3-21 19:22
是对准的,尝试过2次都是如此。

你可以看下jpsxdec提示的那个index.log里的warning报的啥。

这东西说实话我挺不想折腾的。因为这些视频结构是基于cd track的,并不是基于普通文件系统的。是怎么组织到一起的不仔细研究挺难猜测的。
其实说实话,之前没对准sect号的时候,反而后面能读出几个视频,而且视频开头都无偏差,应该就能说明这格式并不是按偏移地址来索引的了。

我猜测的是,这个大概是一整段连续视频,然后通过某个帧索引表来索引不同段落。也就是真正索引的是帧号,而不是偏移地址。所以插空反而会导致文件失效。

陶大知 发表于 2021-3-21 19:30

Tring 发表于 2021-3-21 19:43

陶大知 发表于 2021-3-21 19:30
每隔16sector就报错,洋洋洒洒报错报了几千行。
不过用copy/b却能读出来,挺奇妙的。
...

你看下你转出来的每一个零散的视频文件的准确长度能否整除2352。
或者干脆把前10段的准确长度都贴出来看下。

陶大知 发表于 2021-3-21 19:48

Tring 发表于 2021-3-21 19:52

陶大知 发表于 2021-3-21 19:48
请问是看哪一个?其字节吗?

大小:XXX (YYY 字节)

那个YYY的字节数。
不是占用空间的那个,是大小的那个。
页: 1 2 [3] 4 5
查看完整版本: 【汉化楼】PS1《猫犬协奏曲》完美汉化发布 25周年