這篇文章主要介紹“如何實現(xiàn)ass/ssa批量轉(zhuǎn)換srt的腳本”,在日常操作中,相信很多人在如何實現(xiàn)ass/ssa批量轉(zhuǎn)換srt的腳本問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何實現(xiàn)ass/ssa批量轉(zhuǎn)換srt的腳本”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)建站服務(wù)項目包括新河網(wǎng)站建設(shè)、新河網(wǎng)站制作、新河網(wǎng)頁制作以及新河網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,新河網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到新河省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!iPad中的OPlayer只支持srt格式的字幕,而動畫一般使用的是ass/ssa格式的字幕,所以需要將ass/ssa批量轉(zhuǎn)換srt。
Google了一下,在《ass2srt[ass/ssa批量轉(zhuǎn)換srt]》中找到一個ass2srt.wsf腳本,內(nèi)容如下:
<job id="ass2srt"> <script language="JScript"> cInput="unicode"; // You can find them from: cOutput="utf-8"; // HKEY_CLASSES_ROOT\MIME\Database\Charset function rrr(){ re = /Dialogue: [^,.]*[0-9]*,([1-9]?[0-9]*:[0-9]*:[0-9]*.[0-9]*),([1-9]?[0-9]*:[0-9]*:[0-9]*.[0-9]*),[^,.]*,[^,.]*,[0-9]*,[0-9]*,[0-9]*,[^,.]*,(.*)/gi; rv = ss.match(re); t1 = RegExp.$1; t2 = RegExp.$2; t3 = RegExp.$3; rg = /\{[^}.]*(\\pos\([0-9]*,[0-9]*\))[^}.]*}/gi; t3 = t3.replace(rg,"$1" + "}"); rg =/\{[^}.]*}/gi; t3 = t3.replace(rg,""); rg =/(\\pos\([0-9]*,[0-9]*\)})/gi; t3 = t3.replace(rg,"{" + "$1"); } </Script> <script language="VBScript"> set ad=CreateObject("adodb.stream") set af=CreateObject("adodb.stream") set ass=CreateObject("adodb.stream") ad.open af.open ass.open ad.Charset=cInput af.Charset=cOutput ass.Charset=cOutput Set objArgs = WScript.Arguments For I = 0 to objArgs.Count - 1 ad.LoadFromFile(objArgs(I)) z=0 gg=left(objArgs(I),len(objArgs(I))-3)&"srt" Do While ad.eos <> True ss =ad.ReadText(-2) if left(ss,8)="Dialogue" then ss=replace(ss,",,",",d,") rrr t3=replace(t3,"\n",vbcrlf) t3=replace(t3,"\N",vbcrlf) z=z+1 af.writetext z,1 af.writetext t1 & " --> " & t2,1 af.writetext t3 & vbcrlf & vbcrlf else ass.writetext ss,1 end if Loop af.savetofile gg,2 ass.savetofile gg&".style",2 Next if i=0 then msgbox "Please drag files to me!",,"Error!" else msgbox "Converted "&i&" file(s).",,"All Over!" end if </Script> </job>
Windows 腳本 (.wsf) 文件是一個包含可擴展標記語言(XML)代碼的文本文檔,它結(jié)合了若干功能,提高了腳本編程的靈活性。由于 Windows 腳本文件并不局限于特定的引擎,它們能夠包含所有遵循 ActiveX(R)規(guī)范的腳本引擎的腳本。
上面的腳本文件同時包含了JScript和VBScript的代碼。問題在于,有這個必要么?單純用JScript或者VBScript都可以實現(xiàn),為什么要混用不同的語言呢?JScript在代碼中的作用僅僅是正則表達式而已,一個合理的推斷是作者不會VBScript的正則表達式,或者嫌VBScript的正則表達式太麻煩。就算撇開語言混雜不說,上面代碼的風格實在是不敢恭維。
下面是我寫的ass2srt.vbs,也許比上面的代碼好一點點罷。
Option Explicit Const Encoding = "unicode" 'assume unicode 'Author: Demon 'Website: /tupian/20230522/demon.tw 'Date: 2012/6/16 Dim shell, folder, fso, ext, i, args Set shell = CreateObject("Shell.Application") Set fso = CreateObject("scripting.filesystemobject") Set args = WScript.Arguments If args.Count = 0 Then Set folder = shell.BrowseForFolder(0, "請選擇ASS字幕所在的文件夾", 1) If folder Is Nothing Then WScript.Quit For Each i In fso.GetFolder(folder.Self.Path).Files ext = LCase(fso.GetExtensionName(i.Path)) If ext = "ass" Or ext = "ssa" Then ASS2SRT i.Path, Encoding End If Next Else For i = 0 To args.Count - 1 ASS2SRT args(i), Encoding Next End If MsgBox CInt(i) & " file(s) Converted!", vbInformation Function ASS2SRT(path, charset) Const adTypeText = 2 Const adReadLine = -2 Const adSaveCreateOverWrite = 2 Dim ass, srt, re, str, arr, s, e, t, i Set ass = CreateObject("ADODB.Stream") Set srt = CreateObject("ADODB.Stream") Set re = New RegExp re.Global = True re.IgnoreCase = True re.Pattern = "\{.*?\}" ass.Type = adTypeText ass.Charset = charset ass.Open ass.LoadFromFile path srt.Type = adTypeText srt.Charset = "utf-8" srt.Open i = 0 Do Until ass.EOS str = ass.ReadText(adReadLine) If Left(str, 8) = "Dialogue" Then i = i + 1 arr = Split(str, ",", 10) s = "0" & arr(1) & "0" 'Start time e = "0" & arr(2) & "0" 'End time t = arr(9) 'Text s = Replace(s, ".", ",") e = Replace(e, ".", ",") t = re.Replace(t, "") t = Replace(t, "\n", vbCrLf) t = Replace(t, "\N", vbCrLf) srt.WriteText i & vbCrLf srt.WriteText s & " --> " & e & vbCrLf srt.WriteText t & vbCrLf & vbCrLf End If Loop path = Left(path, Len(path) - 3) & "srt" srt.SaveToFile path, adSaveCreateOverWrite End Function
把上面代碼保存為ass2srt.vbs,然后將需要轉(zhuǎn)換的ass/ssa字幕拖動到ass2srt.vbs腳本上即可。如果需要批量轉(zhuǎn)換的ass/ssa字幕比較多,可以先把它們放到同一個文件夾里,然后直接雙擊運行ass2srt.vbs,選擇字幕所在的文件夾即可。
到此,關(guān)于“如何實現(xiàn)ass/ssa批量轉(zhuǎn)換srt的腳本”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
網(wǎng)站名稱:如何實現(xiàn)ass/ssa批量轉(zhuǎn)換srt的腳本-創(chuàng)新互聯(lián)
本文URL:http://www.rwnh.cn/article38/dcigsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、Google、網(wǎng)站排名、虛擬主機、網(wǎng)站設(shè)計公司、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容