3j29cd 发表于 2019-10-13 17:49:08

特效字幕製作工具 SubFX(暫定名稱)

本帖最后由 3j29cd 于 2019-10-14 18:57 编辑

這工具的核心是Yutils的c++改寫版
目的是為了要能更方便的製作特效字幕
目前前台是接python

如果你不喜歡python 可以自己綁到其他程式語言
核心函式庫沒有任何一行用到python的api

主要前端是SubFXCLI (目前沒有GUI版)
只要把設定檔(json)拖放到exe上面 就會自動生成特效字幕

設定檔各個欄位的說明如下

名稱 資料類型說明
subtitle字串 你要輸入的字幕檔的檔名,編碼只接受沒有BOM的UTF-8
logFile字串 紀錄檔的存檔位置
outputFile字串 要輸出的字幕檔的名稱
scripts陣列 各個特效腳本的設定
scripts也是儲存json 各個欄位的說明如下

名稱 資料類型 說明
script字串特效腳本的檔名 下面會詳細說明
mode字串特效要以哪種方式套用 下面會詳細說明
startLine數字要從字幕哪一行開始套用特效 第一行的編號為0 以此類推
endLine數字 要在那一行結束套用特效 如果這數字小於0 就套用到整份字幕
設定檔範例:
{
    "subtitle": "test.ass",
    "logFile": "test.log",
    "outputFile": "test_out.ass",
    "scripts":
    [
      {
            "script": "effect1.py",
            "mode": "line",
            "startLine": 0,
            "endLine": -1
      },
      {
         "script": "M:/path/to/your/effect2.py",
         "mode": "syl",
         "startLine": 2,
         "endLine": 5
       }
    ]
}


關於mode的說明
mode可以是line syl word char
line syl char的意思和aegisub的karaoke template一樣
word的意思是在每個文字特用特效
例如:
I'm drinking tea.
此時word就會拆解成 "I'm", "drinking", "tea."

關於特效腳本的內容
這裡面必須包含"SubFXMain"這函數
內容範例:from tcaxPy import *

def SubFXMain(line, currentSymbol):
    assBuf = []
   
    timeStart = line["start_time"]
    timeEnd = line["end_time"]
    effect = fad(300, 300)

    ass_main(assBuf, SubL(timeStart, timeEnd, 0, 'default'), effect, line["text"])

    return assBufSubFXMain有兩個參數
line:當前作用行 是個dictionary 內容是Yutils的PARSER.dialogs(true)的返回值的內容拿掉syls words和chars這三個entries
會拿掉syls words和chars這三個entries的原因是防止有人誤觸造成非預期的結果
currentSymbol:
如果在設定檔中指定mode為line時 這會帶入空的list 沒有實質作用
在其他mode 這裡會帶入當前的symbol的dictionary
內容是Yutils的PARSER.dialogs(true)的返回值的內容的chars, words或syls(視mode決定)的table的元素
當前要作用的table才會帶入

SubFXMain要返回一個python的string list
這最後將數據序列化成ass時會用到
為了方便 可以直接調用SubL和ass_main這兩個函數來建構需要的string
這兩個函數定義在tcaxPy.py裡面
詳細可以參考TCAX的文檔

範例中腳本的作用是讓每行文字淡入淡出

其餘的還有個CoreLibPy 這就是個Yutils的修改版
主要是ass的反序列化 數學相關函數 基本的像素化(例如: 像素字)
詳細有什麼函數 可以在python中用help去看

程式源代碼在這裡
歡迎PR或提供意見或建議

壓縮包裡的icudt65.dll icuin65.dll和icuuc65.dll是來自於這裡
tcaxPy.py是來自於TCAX 內容經過修改

附件是windows的預編譯版
需要搭配python3.7或更新版
页: [1]
查看完整版本: 特效字幕製作工具 SubFX(暫定名稱)