okmijnuhb2C1
发表于 2024-1-19 21:07:06
tonyhsie 发表于 2024-1-19 19:35
舉例而言
感謝, 十分清晰
verdurewind
发表于 2024-4-19 12:14:05
本帖最后由 verdurewind 于 2024-4-19 13:43 编辑
请教下大佬,字幕里有一些特殊字符时,会导致调轴失败,例如这个字幕的78行有一个码点为 001E 的控制字符,就调轴失败了,删除了这个字符就能调轴成功。之前调轴时好像也遇到过类似情况,如果字幕中有码点在FFFF之后的字符也会调轴失败,这种情况有没有可能先在SushiHelper中处理下?例如检测到这些字符然后删除掉?
字幕来源于 https://share.dmhy.org/topics/view/334767_01-12_MKV_720p.html
tonyhsie
发表于 2024-4-20 01:45:16
verdurewind 发表于 2024-4-19 12:14
请教下大佬,字幕里有一些特殊字符时,会导致调轴失败,例如这个字幕的78行有一个码点为 001E 的控制字符, ...
一般字幕很少有這種問題,事先檢測對大多數字幕來說都是無用功
另外我也希望使用者能培養出一定的除錯能力,以及修正字幕的能力
SushiHelper 只是輔助,少數字幕檔案本身的問題,還是由使用者自行排除會比較有意義
zzy2000129
发表于 2024-7-7 13:30:32
操作SMB(网络位置)的文件的时候和音频同步偏移的临时字幕文件会跑到程序所在的盘里面去
比如sushi放在D:\Programs
操作【\\NAS\视频\TV.mkv/TV.ass】(音频有延迟)
然后D盘就出现了【D:\NAS\视频\TV.-xxxms.ass】
P.S. 我临时目录设置在本地(不是D盘)
tonyhsie
发表于 2024-7-7 19:45:23
zzy2000129 发表于 2024-7-7 13:30
操作SMB(网络位置)的文件的时候和音频同步偏移的临时字幕文件会跑到程序所在的盘里面去
比如sushi放在D:\ ...
試試這個版本,看有沒有解決你的問題
tmdtmdtmdqq
发表于 5 天前
本帖最后由 tmdtmdtmdqq 于 2025-6-28 16:09 编辑
源视频A 和 目标视频B 的音频都有带偏移
如果带了参数-td Z:\ddd
则会导致sushi用 调完轴的字幕 进行对 目标视频B用ffmpeg进行音频偏移的过程中,找不到字幕文件(因为调完轴的字幕在-td 设置的目录下,而ffmpeg则在视频的目录下找),导致出错:
v230301:
Chapter start points:
Group (start: 0:02:35.15, end: 0:03:49.35, lines: 34), shifts (start: -3.03466666667, end: -3.03466666667, average: -3.03466666667)
Group (start: 0:22:23.93, end: 0:23:42.55, lines: 24), shifts (start: 0.10175, end: 0.10175, average: 0.10175)
Done in 7.0039999485s
SushiHelper: Destination audio delay: -43ms
SushiHelper: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
在 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
在 a.a(String A_0, String A_1, String A_2, Boolean A_3)
在 a.a(String[] A_0)
Press ENTER to continue
v240707:
Chapter start points:
Group (start: 0:02:35.15, end: 0:03:49.35, lines: 34), shifts (start: -3.03466666667, end: -3.03466666667, average: -3.03466666667)
Group (start: 0:22:23.93, end: 0:23:42.55, lines: 24), shifts (start: 0.10175, end: 0.10175, average: 0.10175)
Done in 7.21600008011s
SushiHelper: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
在 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
在 a.a(String A_0, String A_1, String A_2, Decimal& A_3, Decimal& A_4, Boolean A_5)
在 a.a(String[] A_0)
Press ENTER to continue
不设置-td参数是能正常输出的。
另外,目前 源视频A 如果音频有偏移,运行过程中ffmpeg生成的 源字幕的偏移字幕 会在 源字幕的目录 下生成。我建议临时生成的文件全都在 -td 参数设置的临时目录下生成。(比如,我源字幕放在一个不可直接写的分区里了)
视频可以在 公网 或 天雪 找到
测试指令:
SushiHelper.exe -td "z:\temp" -mw 600 "Y:\ ToHeart Remember my memories 01 (DVD 960x720 x265p10 AAC).oped.ass" "Y:\ ToHeart Remember my memories 01 (DVD 960x720 x265p10 AAC).mkv" "Y:\ ToHeart Remember my memories 06 (DVD 960x720 x265p10 AAC).mkv"
配置文件已正确配置ffmpeg、ffprobe、sushi、OutputDir参数
tonyhsie
发表于 4 天前
tmdtmdtmdqq 发表于 2025-6-28 15:54
源视频A 和 目标视频B 的音频都有带偏移
如果带了参数-td Z:\ddd
则会导致sushi用 调完轴的字幕 进行对 目 ...
修改了 -td 相關的程式碼
但要麻煩你自己測試一下了
tmdtmdtmdqq
发表于 4 天前
本帖最后由 tmdtmdtmdqq 于 2025-6-29 11:00 编辑
tonyhsie 发表于 2025-6-29 05:55
修改了 -td 相關的程式碼
但要麻煩你自己測試一下了
感谢,前帖提到的问题解决了
但好像发现了另外一个问题
因为我在ini文件配置了OutputDir参数(SourceDir、DestinationDir、FinalDir 参数都是没填东西)
我看这个参数的含义是Ouput directory of subtitle files & sushi.txt
但这个跟-td连用的话,是不会把最终的字幕复制到OutputDir里的
没-td参数的话,OutputDir里面 和 视频文件夹 下都会存在最终的字幕
虽然没什么大影响就是了
tonyhsie
发表于 4 天前
tmdtmdtmdqq 发表于 2025-6-29 10:48
感谢,前帖提到的问题解决了
但好像发现了另外一个问题
temp-dir 這個預期之外參數完全打亂了 SushiHelper 原始的設計邏輯
導致程式裡很多地方都要重新考慮 temp-dir 的存在,硬生生要加上一些多餘的判斷跟處理
整個程式碼的複雜度也提升許多
我想问问,临时输出的.wav和.ass文件可不可以设置一个位置去存,不要输出到相同的目录里?
因为我有些视频的存档目录为了防删,设置成只读的
现在只读那种用mklink去一个一个文件软链接到一个临时目录中处理(虽然复制出来也可,但时间太长,mklink软链接快),操作有些繁琐
如果有个变量什么的能设置临时输出目录就更好了
回到你的原始需求
它跟 SushiHelper 本身的邏輯,其實沒有相關
純粹是使用者個人的特殊需求而已
我認為一種比較好的作法是,SushiHelper 保持原本的邏輯不變
而你另外寫一個程式(或批次檔),來處理你的需求
比如說在呼叫 SushiHelper 前要做哪些前置動作,在 SushiHelper 執行後,又要做哪些後置作業
由你的程式來自動化處理
這樣的好處是,兩個程式完全獨立運作,不會互相影響
而且可以徹底貼近你的環境跟你的需求
我自己一般也是這樣處理我的個人需求,SushiHelper 就是為了讓我自己能更方便使用 Sushi 而寫的
AlassFFsubsyncHelper 也是一樣
我通常不傾向於改變原軟體 (如 sushi/alass/FFsubsync/qBittorrent)
而是自己另外打造一個像是「前後端」或是「殼」的軟體,透過它來跟原軟體互動,滿足我的需求
好處就是,不管 sushi/alass/FFsubsync/qBittorrent 怎麼改版,只要它的輸出/輸入跟舊版一樣
我的 Helper 都不需要改 code,一樣通用
但如果把我的需求鑲進原軟體 (例如自己 fork、自己新增 code 後再編譯、或是連絡原作者,請他加入我要的功能)
那麼原軟體改版時,就有可能需要再次改 code,或是再次找原作者處理各種新的狀況
相對起來,這樣反而是把問題複雜化了
目前 temp-dir 就是一個讓問題變複雜的例子
如果「另外寫一個程式來處理 mklink、搬移 SushiHelper 的成果」
比起「由 SushiHelper 內部來處理」,「另外寫程式」會讓你遇到的問題簡單很多
下一版預計會拿掉 temp-dir 這個參數,回復 SushiHelper 原始處理檔案的邏輯
當然你還是可以繼續使用今天的測試版,或是之前的舊版就是了
页:
5
6
7
8
9
10
11
12
13
14
[15]