首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Javascript读取和解析srt字幕文件?

如何用Javascript读取和解析srt字幕文件?
EN

Stack Overflow用户
提问于 2022-05-28 11:34:01
回答 2查看 570关注 0票数 2

我正在尝试制作一个程序,它将从给定的路径翻译subtiltes文件。程序在电子内部运行,所以我可以访问计算机的文件。问题是我找不到关于如何读取和解析srt文件的解释,可以吗?

代码语言:javascript
复制
    function translateSubs(path, newPath){
      var srt = readFile(path)
      var translatedOutput = []
      srt.data.foreach(line => {
        line.text = translateToEnglishline.text()
      })
      parseFile(srt, newPath)
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-02 17:26:09

所以我就是这样做的:

代码语言:javascript
复制
var { default: srtParser2} = require('srt-parser-2');
var parser = new srtParser2()
const fs = require('fs');
//srt => json
fs.readFile(path,(err,data) =>{
  if (err) {
    console.error(err);
    return;
  }
  var subObj = parser.fromSrt(data.toString())
  console.log("lines in srt:", subObj.length)
  //json => srt
  outputSrt = ""
  subObj.forEach(item =>{
    translatedSub += "\n" + item.id + "\n"+ item.startTime + " --> " + item.endTime + "\n" + item.text + "\n" 
  })
  fs.writeFile(outputPath, outputSrt, (err) => {console.log(err)})
  console.log("wrote file into path:", outputPath)
})

读取srt:首先,我们使用FS读取srt,然后将输出转换为string,并使用srt -解析器-2读取它,这给我们提供了JSON中的srt。

创建Srt:我们创建具有以下格式的新字符串:

代码语言:javascript
复制
1
00:00:11,544 --> 00:00:12,682
Hello

2
00:00:17,123 --> 00:00:19,345
There

3
00:00:30,123 --> 00:00:31,345
General Kenobi

然后我们把它写到文件里。

有关更多信息,您可以在这里看到srt解析器-2文档:https://www.npmjs.com/package/srt-parser-2

票数 3
EN

Stack Overflow用户

发布于 2022-05-28 11:45:12

查看SRT文件格式,我们可以看到文件中的数据示例是:

代码语言:javascript
复制
1
00:05:00,400 --> 00:05:15,300
This is an example of
a subtitle.

2
00:05:16,400 --> 00:05:25,300
This is an example of
a subtitle - 2nd subtitle.

既然我看到您想要翻译文本,那么您所需要做的就是获取text部件,翻译它并覆盖它。

有很多方法可以做到这一点,但我如何做到这一点是通过将文件加载到string[]数组中。然后循环遍历它,在空行上分开,并将其解析为单独的对象。现在我有一个像这样的物体

代码语言:javascript
复制
class SubItem
{
    string[] lines
}

第三部分是遍历每个SubItem,翻译lines中的每个string预期前两个(第一个是ID,第二个时间帧)。

现在我有了一系列翻译好的SubItems。用空行分隔符将它们放回文件中,您就完成了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72415333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档