开源命令行字幕转换器


Answers:


26

您可以尝试FFmpeg(出色的工具!):

$ ffmpeg -i file.srt file.vtt

9

我用来转换字幕的非常简单有效的oneliner:

for i in *.ass ; do ffmpeg -i "$i" "$i.srt" ; done

只是改变ass并srt根据您的需要。


7

字幕perl瑞士军刀(滚动到页面结尾)。

在这里您可以找到更多选项。

另外,mplayer / mencoder有一些dumpXXXsub选项,可能会起作用。我从没有尝试过,但是读这个人,它应该可以工作。例:

-dumpmpsub (MPlayer only)
              Convert the given subtitle (specified with the -sub option) to MPlayer's subtitle format, MPsub.  Creates a dump.mpsub file in the current directory.

确实,这很方便,尽管仅支持三种不同的格式;.srt,.sub,.smi。
— 约翰斯(Johnas)2010年

我检查了Mplayer和Mencoder。没得到它的工作。它仅支持SRT,SMI,SUB和JACO。很好的建议,谢谢。
— 约翰斯(Johnas)2010年

很好,谢谢!在这里:pastebin.com/T6DM9xbq是我的基于此的转换器,使用mplayer进行帧率检测
— Lukasz Frankowski 2012年

3

开源程序Subtitle Edit具有命令行转换器,可用于Windows和Linux。

语法:SubtitleEdit /convert "pattern" "name-of-format-without-spaces"

示例1:SubtitleEdit /convert sub1.srt sami
结果:将sub1.srt转换为sub1.sub转换为SAMI格式

示例2:SubtitleEdit /convert *.srt adobeencore
结果:将所有.srt文件转换为Adobe Encore格式

对于Linux,命令行需要稍长一些…

语法:mono SubtitleEdit.exe /convert "pattern" "name-of-format-without-spaces"

…但是可以很容易地包装成脚本。


GUI可以工作,但是从命令行运行时出现错误..我需要安装libmono-winformsGUI才能工作(如README中所述)...也许CLI需要一些额外的东西才能工作...我得到一个AttachConsole...错误。使用Ubuntu 10.04 ...
— Peter.O 2012年

这似乎已在版本3.2.3中修复-至少在Ubuntu上有效
— Johanz 2012年

1
@Johanz:谢谢。版本3.2.3可以使用。它转换成一个.ass以SubRip(.SRT)......只有一件事我notieced:它产生\r\n(CRLF)行结束,即使源行结束是\n...但很少会成为一个问题,很容易固定sed,如果需要。
— Peter.O 2012年

+1,因为这是一个非常好的转换器和开源应用程序。并且它具有一个cmd线路接口。
— user10607 2015年

1

您要确切转换什么?如果介于字幕格式之间,则取决于您所讨论的格式。那些基于位图的将需要OCR转换为文本格式,并且通常始终需要用户输入以确认OCR的准确性

如果是所有文本格式,则可能要使用Jubler或Aegisub


简单的文字字幕。SRT,STL,SUB,PAC。来来回回。
— 约翰·约翰斯(Johnas)2010年

@johnas -我的答案更新了几个可能的原因
— Shevek

感谢Shevek,但是以上都不是命令行操作。尽管如果我可以使用GUI,它们将是完美的。
— 约翰斯(Johnas)2010年

1

我发现某些播放器(例如Google Drive视频播放器)不喜欢通过以下方式生成的.srt:

ffmpeg -i subtitles.ass <blah>.srt

要么:

SubtitleEdit /convert subtitles.ass subrip

但:

ffmpeg -i subtitles.ass -codec:s text subtitles.srt

...对我有用


0

使用sed重命名文件名

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt" ; done

如果要.srt在转换后删除文件,则只需在之后添加rm命令即可。

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt"  &&  rm -f "$i"  ; done

1
如果文件名是big.assassins.assured(加上扩展名)怎么办?您sed将为其命名bigassinsured。没有sed缺陷也没有缺陷:"${i%.ass}.srt"。
— 卡米尔Maciorowski

0
#!/bin/bash

file="*.srt"                     # Find file
ffmpeg -i "$file" "${file%.*}.vtt"   # Convert file  
rm "$file"                         # Remove file .srt from your dir

如果要在for循环中使用此程序转换更多文件。


如果Ffmpeg中止怎么办?
— 174140

ffmpeg是开源的多媒体库。
— Manoj kumar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.