Documentation ¶
Index ¶
- func AddFrontName(info supplier.SubInfo, orgName string) string
- func ChangeVideoExt2SubExt(subInfos []supplier.SubInfo)
- func DeleteOneSeasonSubCacheFolder(seriesDir string) error
- func GetFrontNameAndOrgName(log *logrus.Logger, info *supplier.SubInfo) string
- func MergeMultiDialogue4EngSubtitle(inSubParser *subparser.FileInfo)
- func OrganizeDlSubFiles(log *logrus.Logger, tmpFolderName string, subInfos []supplier.SubInfo, ...) (map[string][]string, error)
- func SearchMatchedSubFileByDir(log *logrus.Logger, dir string) ([]string, error)
- func SearchMatchedSubFileByOneVideo(l *logrus.Logger, oneVideoFullPath string) ([]string, error)
- func SearchVideoMatchSubFileAndRemoveExtMark(l *logrus.Logger, oneVideoFullPath string) error
- func SelectChineseBestBilingualSubtitle(subs []subparser.FileInfo, subTypePriority int) *subparser.FileInfo
- func SelectChineseBestSubtitle(subs []subparser.FileInfo, subTypePriority int) *subparser.FileInfo
- type DialogueMerger
- type Feature
- type KeyFeatures
- type SubUnit
- func GetVADInfoFeatureFromSub(fileInfo *subparser.FileInfo, frontAndEndPer float64, subUnitMaxCount int, ...) ([]SubUnit, error)
- func GetVADInfoFeatureFromSubNeedOffsetTimeWillInsert(fileInfo *subparser.FileInfo, SkipFrontAndEndPer float64, subUnitMaxCount int, ...) ([]SubUnit, error)
- func GetVADInfoFeatureFromSubNew(fileInfo *subparser.FileInfo, SkipFrontAndEndPer float64) (*SubUnit, error)
- func NewSubUnit() *SubUnit
- func (s *SubUnit) Add(oneSubStartTime, oneSubEndTime time.Time)
- func (s *SubUnit) AddAndInsert(oneSubStartTime, oneSubEndTime time.Time)
- func (s *SubUnit) AddBaseTime(addBaseTime time.Duration)
- func (s SubUnit) GetDialogueCount() int
- func (s SubUnit) GetEndTime(realOrOffsetTime bool) time.Time
- func (s SubUnit) GetEndTimeNumber(realOrOffsetTime bool) float64
- func (s SubUnit) GetExpandRangeIndex(expandTimeRange float64) (int, int)
- func (s SubUnit) GetFFMPEGCutRangeString(expandTimeRange float64) (string, string, time.Time, float64)
- func (s SubUnit) GetIndexTime(index int, realOrOffsetTime bool) (bool, time.Time)
- func (s SubUnit) GetIndexTimeNumber(index int, realOrOffsetTime bool) (bool, float64)
- func (s SubUnit) GetOffsetTimeNumber() float64
- func (s SubUnit) GetStartTime(realOrOffsetTime bool) time.Time
- func (s SubUnit) GetStartTimeNumber(realOrOffsetTime bool) float64
- func (s SubUnit) GetTimelineRange() float64
- func (s *SubUnit) GetVADByteSlice() []byte
- func (s *SubUnit) GetVADFloatSlice() []float64
- func (s SubUnit) RealTimeToOffsetTime(realTime time.Time) time.Time
- func (s SubUnit) Save2Txt(outFileFPath string, oneLine bool) error
- func (s *SubUnit) SetBaseTime(setBaseTime time.Time)
- func (s *SubUnit) SetOffsetEndTime(realEndTime time.Time)
- func (s *SubUnit) SetOffsetStartTime(realStartTime time.Time)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddFrontName ¶
AddFrontName 添加文件的前缀
func ChangeVideoExt2SubExt ¶
ChangeVideoExt2SubExt 检测 Name,如果是视频的后缀名就改为字幕的后缀名
func DeleteOneSeasonSubCacheFolder ¶
DeleteOneSeasonSubCacheFolder 删除一个连续剧中的所有一季字幕的缓存文件夹
func GetFrontNameAndOrgName ¶
GetFrontNameAndOrgName 返回的名称包含,那个网站下载的,这个网站中排名第几,文件名
func MergeMultiDialogue4EngSubtitle ¶
只针对英文字幕进行合并分散的 DialoguesFilter 会遇到这样的字幕,如下0 2line-The Card Counter (2021) WEBDL-1080p.chinese(inside).ass 它的对白一句话分了两个 dialogue 去做。这样做后续字幕时间轴校正就会遇到问题,因为只有一半,匹配占比会很低 (每一个 Dialogue 的首字母需要分析,大写和小写的占比是多少,统计一下,正常的,和上述特殊的) 那么,就需要额外的逻辑去对 DialoguesFilterEx 进行额外的推断 暂时考虑的方案是,英文对白每一句的开头应该是英文大写字幕,如果是小写字幕,就应该与上语句合并,且每一句的字符长度有大于一定才触发
func OrganizeDlSubFiles ¶
func OrganizeDlSubFiles(log *logrus.Logger, tmpFolderName string, subInfos []supplier.SubInfo, isMovie bool) (map[string][]string, error)
OrganizeDlSubFiles 需要从汇总来是网站字幕中,解压对应的压缩包中的字幕出来
func SearchMatchedSubFileByDir ¶
SearchMatchedSubFileByDir 搜索符合后缀名的视频文件,排除 Sub_SxE0 这样的文件夹中的文件
func SearchMatchedSubFileByOneVideo ¶
SearchMatchedSubFileByOneVideo 搜索这个视频当前目录下匹配的字幕
func SearchVideoMatchSubFileAndRemoveExtMark ¶
SearchVideoMatchSubFileAndRemoveExtMark 找到找个视频目录下相匹配的字幕,同时去除这些字幕中 .default 或者 .forced 的标记。注意这两个标记不应该同时出现,否则无法正确去除
Types ¶
type DialogueMerger ¶
type DialogueMerger struct {
// contains filtered or unexported fields
}
DialogueMerger 合并分散的对白,目标是搞定英文字幕
func NewDialogueMerger ¶
func NewDialogueMerger() *DialogueMerger
func (*DialogueMerger) Add ¶
func (d *DialogueMerger) Add(inDialogueEx subparser.OneDialogueEx) bool
func (*DialogueMerger) Clear ¶
func (d *DialogueMerger) Clear()
func (*DialogueMerger) Get ¶
func (d *DialogueMerger) Get() []subparser.OneDialogueEx
type Feature ¶
type Feature struct { BigThanTime float64 // 大于这个时间 LessThanTime float64 // 小于这个时间 LeastCount int // 至少有几个特征 NowCount int // 用于计数 }
Feature 钥匙锯齿的特征
func NewFeature ¶
NewFeature 时间如果传入的是 -1,那么就跳过这个判断
type KeyFeatures ¶
KeyFeatures 钥匙的组合特征
func NewKeyFeatures ¶
func NewKeyFeatures(big, middle, small Feature) KeyFeatures
type SubUnit ¶
type SubUnit struct { VADList []vad.VADInfo // 注意这里存储的是真实时间 // contains filtered or unexported fields }
func GetVADInfoFeatureFromSub ¶
func GetVADInfoFeatureFromSub(fileInfo *subparser.FileInfo, frontAndEndPer float64, subUnitMaxCount int, insert bool) ([]SubUnit, error)
GetVADInfoFeatureFromSub 跟下面的 GetVADInfoFeatureFromSubNeedOffsetTimeWillInsert 函数功能一致
func GetVADInfoFeatureFromSubNeedOffsetTimeWillInsert ¶
func GetVADInfoFeatureFromSubNeedOffsetTimeWillInsert(fileInfo *subparser.FileInfo, SkipFrontAndEndPer float64, subUnitMaxCount int, offsetTime float64, insert bool) ([]SubUnit, error)
GetVADInfoFeatureFromSubNeedOffsetTimeWillInsert 只不过这里可以加一个每一句话固定的偏移时间 这里的字幕要求是完整的一个字幕 1. 抽取字幕的时间片段的时候,暂定,前 15% 和后 15% 要避开,前奏、主题曲、结尾曲 2. 将整个字幕,抽取连续 5 句对话为一个单元,提取时间片段信息 3. 这里抽取的是特征,也就有额外的逻辑去找这个特征(本程序内会描述为“钥匙”)
func GetVADInfoFeatureFromSubNew ¶
func GetVADInfoFeatureFromSubNew(fileInfo *subparser.FileInfo, SkipFrontAndEndPer float64) (*SubUnit, error)
GetVADInfoFeatureFromSubNew 将 Sub 文件转换为 VAD List 信息
func NewSubUnit ¶
func NewSubUnit() *SubUnit
func (*SubUnit) AddAndInsert ¶
AddAndInsert 添加一句对白进来,并且填充中间的空白,间隔 10ms。传入的时间是真实的时间
func (*SubUnit) AddBaseTime ¶
AddBaseTime 如果 BaseTime 还有偏移,可以在 Add 和 AddAndInsert 逻辑完成后,调用此方法去调整基准时间
func (SubUnit) GetDialogueCount ¶
GetDialogueCount 获取这个对白单元由几个对话
func (SubUnit) GetEndTime ¶
GetEndTime 获取这个单元的起始时间
func (SubUnit) GetEndTimeNumber ¶
GetEndTimeNumber 获取这个单元的结束时间,单位是秒
func (SubUnit) GetExpandRangeIndex ¶
GetExpandRangeIndex 导出扩展的起始时间和结束的时间,整个多出的参数只适用于整体的字幕范围,局部不试用 以当前的 VAD 信息为基准,正负 expandTimeRange(秒为单位) 来生成截取的片段时间轴信息 向左偏移的时候是可知有多少可以移动的,越界就置为 0 向右移动的时候,总长度是未知的,所以返回的值需要在外部重新 Check 是否会越界
func (SubUnit) GetFFMPEGCutRangeString ¶
func (s SubUnit) GetFFMPEGCutRangeString(expandTimeRange float64) (string, string, time.Time, float64)
GetFFMPEGCutRangeString 这里会生成导出 FFMPEG 的参数字段,起始时间和结束的时间长度 以当前的 VAD 信息为基准,正负 expandTimeRange(秒为单位) 来生成截取的片段时间轴信息
func (SubUnit) GetIndexTime ¶
GetIndexTime 当前 OffsetIndex 的时间
func (SubUnit) GetIndexTimeNumber ¶
GetIndexTimeNumber 当前 OffsetIndex 的时间
func (SubUnit) GetOffsetTimeNumber ¶
GetOffsetTimeNumber 偏移时间,单位是秒
func (SubUnit) GetStartTime ¶
GetStartTime 获取这个单元的起始时间
func (SubUnit) GetStartTimeNumber ¶
GetStartTimeNumber 获取这个单元的起始时间,单位是秒
func (SubUnit) GetTimelineRange ¶
GetTimelineRange 开始到结束的时间长度,单位是秒
func (*SubUnit) GetVADByteSlice ¶
GetVADByteSlice 获取 VAD 的 byte 数组信息
func (*SubUnit) GetVADFloatSlice ¶
GetVADFloatSlice 获取 VAD 的 float64 数组信息
func (SubUnit) RealTimeToOffsetTime ¶
RealTimeToOffsetTime 真实时间转偏移时间
func (*SubUnit) SetBaseTime ¶
SetBaseTime 设置基准时间