找回密码
 立即注册
查看: 1651|回复: 0

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

该用户从未签到

2

主题

11

回帖

5

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
256275
3j29cd 发表于 2019-10-13 17:49:08 | 显示全部楼层 |阅读模式
本帖最后由 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"這函數
內容範例:
  1. from tcaxPy import *

  2. def SubFXMain(line, currentSymbol):
  3.     assBuf = []
  4.    
  5.     timeStart = line["start_time"]
  6.     timeEnd = line["end_time"]
  7.     effect = fad(300, 300)

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

  9.     return assBuf
复制代码
SubFXMain有兩個參數
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或更新版

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 7活跃度 +192000 收起 理由
Seekladoom + 64000 给大佬递茶!
tonyhsie + 16000 很给力!
vxzms + 12800
千恋万花 + 32000 赞一个!
vcbcom2015 + 3200 很给力!
贽殿遮那 + 32000 赞一个!
菜姬 + 32000 赞一个!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表