-
2020-07-01 20:30:36
多个srt文件合并
- 多个字幕文件路径以list存放,每个字幕文件的内容都追加在第一个字幕文件之后,时长累加,字幕编号累加。
直接上代码
/** * 合并srt字幕文件 * @param srtPathList */ public void mergeSrt(List<String> srtPathList){ if (srtPathList != null && srtPathList.size() > 0){ FileOutputStream mergeFos = null; int maxNumber = 0; long maxTime = 0L; File firstSrtFile = new File(srtPathList.get(0)); try { InputStreamReader read = new InputStreamReader(new FileInputStream(firstSrtFile), "utf-8"); BufferedReader bufferedReader = new BufferedReader(read); String lineTxt; List<String> lineList = new ArrayList<>(); // 取得第一个文件的行号最大值和字幕时间最大值 while ((lineTxt = bufferedReader.readLine()) != null){ lineList.add(lineTxt); } if (lineList != null && lineList.size() > 4){ int size = lineList.size(); maxNumber = Integer.parseInt(lineList.get(size - 4)); String timeString = lineList.get(size - 3).split(" ")[2]; maxTime = ConvertUtil.convertToMs(timeString); } read.close(); bufferedReader.close(); mergeFos = new FileOutputStream(firstSrtFile, true); for (int i = 1; i < srtPathList.size(); i++){ InputStreamReader readI = new InputStreamReader(new FileInputStream(srtPathList.get(i)), "utf-8"); BufferedReader bufferedReaderI = new BufferedReader(readI); String lineTxtI; int lines = (int) Files.lines(Paths.get(srtPathList.get(i))).count(); int index = 0; while ((lineTxtI = bufferedReaderI.readLine()) != null){ index ++; switch (index % 4){ case 1 : lineTxtI = String.valueOf(Integer.parseInt(lineTxtI) + maxNumber); break; case 2 : String[] timeArray = lineTxtI.split(" --> "); long bg = Long.valueOf(ConvertUtil.convertToMs(timeArray[0])) + maxTime; long ed = Long.valueOf(ConvertUtil.convertToMs(timeArray[1])) + maxTime; lineTxtI = ConvertUtil.convertTime(bg) + " --> " + ConvertUtil.convertTime(ed); break; } // 取得新的行号最大值和字幕时间最大值 switch (lines - index){ case 3 : maxNumber = Integer.parseInt(lineTxtI); break; case 2 : String[] timeArray = lineTxtI.split(" --> "); maxTime = Long.valueOf(ConvertUtil.convertToMs(timeArray[1])); break; } lineTxtI += "\r\n"; mergeFos.write(lineTxtI.getBytes()); } bufferedReaderI.close(); readI.close(); // 删除已经被合并的字幕文件 File delFile = new File(srtPathList.get(i)); delFile.delete(); } mergeFos.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { mergeFos.close(); } catch (IOException e) { e.printStackTrace(); } } }
- 用到的工具类
public class ConvertUtil { /** * @Author: luyang2 * @Param: * @Description: 毫秒转换为HH:mm:ss,SSS * @Date: 2020/5/11 14:46 */ public static String convertTime (long ms){ SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss,SSS"); format.setTimeZone(TimeZone.getTimeZone("GMT+00:00")); return format.format(ms); } /** * @Author: luyang2 * @Param: * @Description: HH:mm:ss,SSS转换为毫秒 * @Date: 2020/6/24 14:37 */ public static long convertToMs (String timeString){ if (StringUtils.isBlank(timeString)){ return 0; } long maxTime; String[] timeStringArray = timeString.split(":"); if (timeStringArray.length < 3){ return 0; } int hour = Integer.parseInt(timeStringArray[0]); int minute = Integer.parseInt(timeStringArray[1]); int second = Integer.parseInt(timeStringArray[2].split(",")[0]); if (timeStringArray[2].split(",").length < 2){ maxTime = (hour * 3600 + minute * 60 + second) * 1000; return maxTime; } maxTime = (hour * 3600 + minute * 60 + second) * 1000 + Integer.parseInt(timeStringArray[2].split(",")[1]); return maxTime; } }
更多相关内容 - 多个字幕文件路径以list存放,每个字幕文件的内容都追加在第一个字幕文件之后,时长累加,字幕编号累加。
-
java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频
2020-05-19 19:10:02java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频 通过test类运行。demo基于jave的源码。对ffmpeg的两种系统下的执行文件进行了替换。所以ffmpeg版本是最新的。可以执行ffmpeg官网上大多数的命令 -
使用python将多个字幕文件合并
2020-08-15 00:14:54为了解决此问题,写了以下代码来合并多个这样的文件 读取字幕文件 def read_srt(path): content = "" with open(path) as f: content = f.read() return content 小测试 content = read_srt('1.srt') print...下载电影字幕的时候,经常会出现一个字幕文件被分成cd1.srt、cd2.srt,但电影是一整块的尴尬情况。为了解决此问题,写了以下代码来合并多个这样的文件
读取字幕文件
def read_srt(path): content = "" with open(path) as f: content = f.read() return content
小测试
content = read_srt('1.srt') print(content)
content = read_srt('2.srt') print(content)
可以看到字幕的合并要做到两点,一个是内容要合并,一个是序号要对齐,因为2.srt中序号也是从1开始的。
字幕拆分
def get_sequences(content): sequences = content.split('\n\n') sequences = [sequence.split('\n') for sequence in sequences] # 去除每一句空值 sequences = [list(filter(None, sequence)) for sequence in sequences] # 去除整体空值 return list(filter(None, sequences))
小测试
sequences = get_sequences(content) sequences
字幕修改
def change_sequences(sequences, start_index): for sequence in sequences: sequence[0] = str(start_index) start_index += 1
生成新字幕
def save_srt(names): new_content = [] start_index = 1 for name in names: content = read_srt(name) sequences = get_sequences(content) change_sequences(sequences, start_index) start_index = len(sequences) + 1 new_content += sequences new_content = ['\n'.join(word) for word in new_content] new_content = '\n\n'.join(new_content) print(new_content) with open('result.srt', 'a') as f: f.write(new_content) save_srt(['1.srt', '2.srt'])
-
cc:使用 Enferno 和 FFMPEG 合并视频上的 srt 字幕的工具
2021-06-10 18:44:38要了解有关该框架及其用例的更多信息,您可以关注我在 Medium 上的文章: 先决条件 MongoDB Redis 如果您想处理图像,则支持 Python Imaging (jpeg/png) Node.js 和 npm(用于前端的东西) 快速开始 $ git clone... -
SRT字幕合并工作
2007-11-22 15:24:31用vobsub可以合并sub字幕,但合并srt字幕时会有问题,而实际上srt字幕的内容我们是可读懂的,他的合并应该更简单,我写了这个程序用C#做的因此要运行还要装.netframework,没办法,用C#写界面比C++容易太多了.嘿嘿,希望能... -
【影音工具】如何合并中英文字幕到一个文件
2019-11-19 19:32:47转载,原帖地址: ... ------------------------------正文--...解释,至于为什么选择Applications文件夹,应为这是唯一一个大家有权限改写文件而且不在用户文件夹下到地方,比较方便,所以就选它了 首先大家要到Appl...转载,原帖地址:
https://bbs.feng.com/read-htm-tid-8155886.html
------------------------------正文-----------------------------
解释,至于为什么选择Applications文件夹,应为这是唯一一个大家有权限改写文件而且不在用户文件夹下到地方,比较方便,所以就选它了首先大家要到Applications里新建一个文件夹叫字幕,反正lunchpad里不会显示。。。看清楚了,就叫字幕两个字,不要多不要少,不会的复制
新建文件夹
然后把两个字幕文件放进去,等会我会上传多字幕的流程,不过多字幕的文件夹里最好不要放别的,生成完就移走
注意,如果是两个字幕的文件请命名为file1.srt 和file2.srt
复制字幕文件倒文件夹
打开我的流程,等会会有多字幕的,方法一样我就不废话了
打开机器人
打开你的字幕文件夹
打开文件夹
选择你想合并的文件,选取
选择两个文件,确认
然后,就好了~~
嗒嗒
***终端版教程(适合喜欢自己操作的技术宅)
准备好两个文件
准备好两个字幕文件
自己命个名,简单一点
命名为你记得的名字,简单一点比较好
两个文件拖到同一个文件夹
然后都拖到同一个文件夹里
打开终端
打开应用程序里的终端
输入cd
先输入cd,一个空格
把文件夹的位置拖到cd后面,cd后面有一个空格
把文件夹的位置拖到cd后面
好了以后回车
可以看到变成这样,然后回车
然后输入cat 第一个文件 第二个文件 > merged.srt 后缀自己定
输入cat 第一个文件名加后缀 第二个文件名加后缀 > merged.srt (这个是srt文件,ass也可以) ... ...
然后回车,合并文件就在那个文件夹了
回车,你就能看到文件已经出来了
试一试没什么问题,完美显示,无视我的渣画质,只能下到720p的。。。
到电影里试一下,没问题oh
enjoy~
enjoy
----------------------------正文结束-----------------------
更多影音视频相关内容,请关注公众号:MouseMedia。
-
srt字幕编辑检查软件
2011-07-11 12:45:234.将单行的对话字幕拆分成多行(-开头或内容间有多个空格的判断为对话字幕) 5.将多行的对话字幕合并到一行 6.删除所有空行 7.下条字幕起始时间设为当前字幕结束时间,当前字幕结束时间设为下条字幕起始时间 8.当前... -
srt字幕制作助手
2013-05-22 08:18:29工具菜单中有多个srt字幕工具,用于合并字幕、切割字幕、调整字幕延时、内码转换等。 点击打开字幕,可以打开先前创建的字幕继续编辑,第一次点击保存会提示输入保存路径,如需更改以后的保存路径,可以单击另存为... -
srt英文字幕合并到中文字幕
2008-06-23 14:30:30周末在家上看《Rome》,发现有...程序源码见附件,效果就像很多港产片的字幕一样:上面是英文字幕,下面是中文字幕。 如果你看电影的时候发现有中英文两种字幕文件,不妨用附件的程序一试,一句话:“谁用谁知道!”:) -
VLC多媒体播放器将字幕srt等 内嵌在视频中且能合并到视频,保存为带字幕的新视频 自媒作首选工具
2021-12-15 23:51:52VLC 是一款自由、开源的跨平台多媒体播放器,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。可以说是一款万能的多媒体播放器。...点"添加"选择视频文件,注意这里不要选择下面的使用字幕文件...VLC 是一款自由、开源的跨平台多媒体播放器,可播放大多数多媒体文件,以及
DVD、音频 CD、VCD 及各类流媒体协议。可以说是一款万能的多媒体播放器。
官方网站:http://www.videolan.org/
将视频和字幕放到同一个文件夹,并保证二者名字相同。
将视频和字幕放到同一个文件夹,并保证二者名字相同。
将视频和字幕放到同一个文件夹,并保证二者名字相同。
选择菜单"媒体"->"流"或者ctrl+s
点"添加"选择视频文件,注意这里不要选择下面的使用字幕文件点击"串流"
单击"添加"按钮,下一步
单击“下一个”
单击"浏览"按钮设置输出文件保存位置
单击“下一个”
点击配置文件的设置安钮,设置相关参数
保存设置的相关参数 ,点击“保存”
点击“流”
软件自动合成后,VLC没有自动关闭播放器。注意一定要关闭VLC关闭播放器。
然后打开合成了字幕的视频。大功告成!
-
python-视频声音根据语音识别自动转为带时间的srt字幕文件
2021-02-23 14:22:21最近在看一些教程,发现没有字幕,网络上也没有匹配的,看着别扭 因此我使用au处理了视频,得到了视频声音,wav格式,20多分钟长度 然后使用讯飞的语音识别接口识别了下,准确度还可以。 20分钟说了1万多字,他的嘴... -
SRT字幕制作助手下载V1.6免费绿色版
2019-08-06 21:56:54SSRT字幕助手可以用于编辑、制作、调整、拆分、合并、预览srt字幕。 使用说明: 打开电影后,待放映至要添加字幕的位置时,点击开始... 工具菜单中有多个srt字幕工具,用于合并字幕、切割字幕、调整字幕延时、内码转 -
srt字幕制作助手~
2008-09-13 12:24:13工具菜单中有多个srt字幕工具,用于合并字幕、切割字幕、调整字幕延时、内码转换等。 点击打开字幕,可以打开先前创建的字幕继续编辑,第一次点击保存会提示输入保存路径,如需更改以后的保存路径,可以单击另存为... -
ffmpeg合并mkv视频文件和ass字幕文件
2019-11-14 16:18:11只要选择把ass字幕文件合并到mkv视频文件里面去。中途,还是使用mkvtoolnix进行mkv和ass文件的合并,但是合并出来仍会出现上面的情况。最后,就考虑自己手动使用ffmpeg进行合并。 步骤 首先,准备你的mkv视频文件和... -
srt字幕制作助手 字幕编辑工具
2009-11-11 00:34:58工具菜单中有多个srt字幕工具,用于合并字幕、切割字幕、调整字幕延时、内码转换等。 点击打开字幕,可以打开先前创建的字幕继续编辑,第一次点击保存会提示输入保存路径,如需更改以后的保存路径,可以单击另存为... -
ffmpeg 合并视频 添加字幕 bat命令
2022-01-17 09:36:16首先将ffmpeg添加进系统环境变量 ...2. mp4添加字幕并转换mkv (字幕格式为srt,名称与视频名称一致) for %%a in ("*.mp4") do ffmpeg -i %%~na.mp4 -i %%~na.srt -vcodec copy -acodec copy %%~na.mkv 3.视频合并 -
[Python练习-文件] 多目录下的字幕vtt转srt
2020-04-27 09:29:45一套网上下载的全英托业学习视频,字幕为vtt格式,无法加载,须换成srt格式。复习内容:Python列表。 -
火鸟字幕合并器
2013-02-26 23:04:24一个字幕合并的软件,完全免费不捆绑任何插件。 功能介绍: 1.合并相同片源不同语种的srt/ssa/ass文本字幕,生成可同时播放的双语字幕; 2.合并CD1/CD2形式多字幕文件为单一的完整字幕,用以播放未分割版的... -
制作SRT的软件,生成电影字幕
2008-11-03 15:23:40工具菜单中有多个srt字幕工具,用于合并字幕、切割字幕、调整字幕延时、内码转换等。 点击打开字幕,可以打开先前创建的字幕继续编辑,第一次点击保存会提示输入保存路径,如需更改以后的保存路径,可以单击另存为... -
字幕编辑器(Srt Sub Master)
2020-12-30 15:56:50字幕编辑器...字幕编辑器(Srt Sub Master)是一款具有强大的字幕编辑功能的软件,使用这款专业的字幕编辑器(Srt Sub Master)可让用户按时间轴排好字幕时间顺序,还具有字幕调整、组合拆分和查找替换功能。... -
免费视频制作工具满足非专业用户的视频处理需求:压缩视频、转码视频、倒放视频、合并片段、根据字幕裁切...
2020-09-12 15:57:45免费视频制作工具满足非专业用户的视频处理需求:压缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段、自动配字幕、自动剪辑等。有了它你也可以做出优秀的视频啦~ Quick Cut 是一款轻量、强大、好用的视频... -
字幕助手2.0一款时时识别抓取视频字幕软件.exe
2022-05-20 11:46:28字幕编辑助手是一款很好用的字幕编辑软件,软件支持双字幕处理,并且支持的功能有时间轴调整、视频预览对照、内容过滤及插入、样式调整、字幕拆行、更多保存格式,目前字幕编辑助手支持ssa、srt、ass、lrc、ksc、krc... -
Time machine字幕编辑器
2017-11-02 18:55:348.时间机器Time machine字幕制作软件可以追加字幕,当你把多CD字幕合并为一个字幕的时候这个功能比较有用,当然时间你得重新对着视频调整。 或者多人翻译的字幕合并起来。 9.一键CC处理拿到英文CC字幕之后打开,点CC... -
转贴:网友【原创·教程】 SRT外挂字幕时间轴调整及合并中英文同步字幕制作方法
2008-03-11 11:34:00【原创·教程】 SRT外挂字幕时间轴调整及合并中英文同步字幕制作方法现时比较流行的一种外挂字幕之一就是SRT字幕了,视频电影在压制过程中如果加入字幕就会有损画质,所以就使用起外挂字幕,可隐藏可换多种不同字幕... -
rmvb视频字幕怎么添加 如何给rmvb文件替换/制作字幕
2021-06-08 15:50:09RMVB视频里面带有中文字幕,现有ASS格式中英文字幕,想覆盖上去或者消掉...srt字幕助手可以用于编辑、制作、调整、拆分、合并、预览srt字幕。 使用说明 打开电影后,待放映至要添加字幕的位置时,点击开始计时(F5),...