- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章ass2srt.vbs(ass/ssa批量转换srt的脚本)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
iPad中的OPlayer只支持srt格式的字幕,而动画一般使用的是ass/ssa格式的字幕,所以需要将ass/ssa批量转换srt.
Google了一下,在《ass2srt[ass/ssa批量转换srt]》中找到一个ass2srt.wsf脚本,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
<
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)代码的文本文档,它结合了若干功能,提高了脚本编程的灵活性。由于 Windows 脚本文件并不局限于特定的引擎,它们能够包含所有遵循 ActiveX(R)规范的脚本引擎的脚本.
上面的脚本文件同时包含了JScript和VBScript的代码。问题在于,有这个必要么?单纯用JScript或者VBScript都可以实现,为什么要混用不同的语言呢?JScript在代码中的作用仅仅是正则表达式而已,一个合理的推断是作者不会VBScript的正则表达式,或者嫌VBScript的正则表达式太麻烦。就算撇开语言混杂不说,上面代码的风格实在是不敢恭维.
下面是我写的ass2srt.vbs,也许比上面的代码好一点点罢.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
Option
Explicit
Const
Encoding =
"unicode"
'assume unicode
'Author: Demon
'Website: http://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,然后将需要转换的ass/ssa字幕拖动到ass2srt.vbs脚本上即可。如果需要批量转换的ass/ssa字幕比较多,可以先把它们放到同一个文件夹里,然后直接双击运行ass2srt.vbs,选择字幕所在的文件夹即可.
原文:http://demon.tw/my-work/ass2srt.html 。
最后此篇关于ass2srt.vbs(ass/ssa批量转换srt的脚本)的文章就讲到这里了,如果你想了解更多关于ass2srt.vbs(ass/ssa批量转换srt的脚本)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想用正则表达式解析字幕。但不匹配多行文本。 正则表达式代码: (?(\d+))\n(?([\d:,]+))[\s-{2}\>]+(?([\d:,]+))\n(?(.+|\n)) https://re
我有一个srt文件 1 00:00:07,000 --> 00:00:09,000 Time to amaze the world.. create by Hazy 2 00:00:11,000 --
我正在使用这条线: exec_push /home/production/bin/ffmpeg -i rtmp://localhost:1935/live/slot4 -codec copy -g 1
所以我知道使用 FFMPEG 你可以阅读 srt://现在我现在您也可以拍摄视频并将其仅转换为音频。 但是我们遇到的问题是 我们不知道如何只发送视频中的音频srt到icecast服务器 到 iceca
我有一个 SRT 文件,想更改各个轨道的背景颜色和透明度。这可能吗,还是我必须采用更高级的格式?这个任务甚至可以在 FFMPEG 中工作吗? 1 0:0:1,440 --> 0:0:1,970 Y1
我用ffmpeg给视频加中文字幕。并且已经安装了 libass 库。 我执行以下命令会出现错误信息 ffmpeg -i video.mp4 -vf "ass=subtitle.srt" -y out.
标题说明了我真正需要的 ATM。 基本上我已经创建了一个基于 Tesseract 和 ImageMagick 的 OCR 工具链。我已经设法使输出文本非常一致。我正在使用它对一些旧的硬字幕视频进行 O
我尝试将文件读取为字符串,我尝试将其编码为 UTF-8 但仍然失败,它在输出中返回一些奇怪的字符。 这是我读取文件的函数: private static String readFile(String
我制作了一个脚本来在我的浏览器中编辑我的字幕。不在文本编辑器等中。所以我做了所有事情,我正处于最后阶段,当我单击“保存”按钮下载我编辑的版本时,我的浏览器会按预期自动下载 SRT 文件,但是副标题是显
我正在开发一个非常简单的程序,它将接收一个文件的名称和一个数字(您想从该文件延迟多少字幕),然后将该文件另存为另一个延迟时间的文件。我的问题是如何编写一个可以改变时间的函数。 假设文件看起来像这样:
我正在用 python 编写一个小脚本,但由于我是新手,所以我被困在了一个部分:我需要从 .srt 文件中获取时间和文本。例如,来自 1 00:00:01,000 --> 00:00:04,074 S
1 00:00:00,074 --> 00:00:02,564 Previously on Breaking Bad... 2 00:00:02,663 --> 00:00:04,393 Words.
我已经搜索过了,没有找到类似的东西。 我想要实现的是创建一个简单的 PHP/js/jq 脚本,它可以从 .srt 文件中添加或减去秒数。我不确定正则表达式是我应该用来实现它还是其他东西。 用户将上传/
我知道如何通过 ffmpeg 组合视频 1.mp4 和 srt 1.srt 文档, ffmpeg -i 1.mp4 -i 1.srt -map 0 -map 1 -c copy -crf 23 vid
我正在尝试显示 .srt 文件中的字幕。 (适用于安卓 4.1+)设备中同时存在mp4文件和srt文件。 public class MainActivity extends Activity impl
我是新手,我需要将 Srt(字幕文件)分成多个 block 。 例如:如果我有一个视频的字幕文件(60 分钟)。然后将字幕文件分割成6个字幕文件,每个字幕文件10分钟。 即 6 X 10 = 60 分
我一直在研究java上的字幕系统。可以保存正常的 .srt 文件并且字幕显示正常。我希望字幕具有不同的属性,例如 diff 字体/颜色/大小,所有这些属性都未编码在普通 .srt 中,该文件必须保存为
我接到了一项任务,要从如下所示的 txt 文件中读取模拟进程。 ID: 35; Arrival_Time: 0; Total_Exec_Time: 4; ID: 65; Arrival_Time: 2
Android 的 MediaPlayer 是否支持 SRT 字幕?我试图将 SRT 文件放在与视频文件相同的目录中并命名为相同的文件(当然除了扩展名),但没有任何运气让它们显示。有什么想法和建议吗?
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我是一名优秀的程序员,十分优秀!