前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字幕文件srt格式解析

字幕文件srt格式解析

作者头像
全栈程序员站长
发布2022-11-03 14:50:46
1.6K0
发布2022-11-03 14:50:46
举报
文章被收录于专栏:全栈程序员必看

解析srt文件,封装为list返回

  1. 首先新建个class,表示单个字幕数据的实体类
代码语言:javascript
复制
public class SrtEntity { 

/** * 字幕序号 */
public int number;
/** * 开始时间 */
public String bg;
/** * 结束时间 */
public String ed;
/** * 字幕内容 */
public String content;
public int getNumber() { 

return number;
}
public void setNumber(int number) { 

this.number = number;
}
public String getBg() { 

return bg;
}
public void setBg(String bg) { 

this.bg = bg;
}
public String getEd() { 

return ed;
}
public void setEd(String ed) { 

this.ed = ed;
}
public String getContent() { 

return content;
}
public void setContent(String content) { 

this.content = content;
}
}

2.编写srt转list的方法

代码语言:javascript
复制
	/** * 解析srt文件,封装为list并返回 * @param srtPath */
public List<SrtEntity> getSrtInfoList(String srtPath){ 

List<SrtEntity> srtList = new ArrayList<>();
try { 

InputStreamReader read = new InputStreamReader(new FileInputStream(srtPath), "utf-8");
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt;
int index = 0;
SrtEntity entity = new SrtEntity();
while ((lineTxt = bufferedReader.readLine()) != null){ 

index ++;
switch (index % 4){ 

case 1 :
entity.setNumber(Integer.parseInt(lineTxt));
break;
case 2 :
String[] timeArray = lineTxt.split(" --> ");
entity.setBg(timeArray[0]);
entity.setEd(timeArray[1]);
break;
case 3 :
entity.setContent(lineTxt);
break;
case 0 :
srtList.add(entity);
entity = new SrtEntity();
break;
}
}
} catch (UnsupportedEncodingException e) { 

e.printStackTrace();
} catch (FileNotFoundException e) { 

e.printStackTrace();
} catch (IOException e) { 

e.printStackTrace();
}
return srtList;
}

3.测试方法

代码语言:javascript
复制
public static void main(String[] args) { 

long begin = System.currentTimeMillis();
FileOperateServiceImpl impl = new FileOperateServiceImpl();
// 解析srt获取list
List<SrtEntity> list = impl.getSrtInfoList("E:\\111.srt");
long end = System.currentTimeMillis();
System.out.println(end - begin);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/200678.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解析srt文件,封装为list返回
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档