diff options
Diffstat (limited to 'mkvlib/ass2pgs.go')
| -rw-r--r-- | mkvlib/ass2pgs.go | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/mkvlib/ass2pgs.go b/mkvlib/ass2pgs.go index 08ea305..fd5b438 100644 --- a/mkvlib/ass2pgs.go +++ b/mkvlib/ass2pgs.go @@ -1,8 +1,30 @@ -//go:build !windows || (windows && !amd64) - package mkvlib -func ass2Pgs(input []string, resolution, frameRate int, fontsDir string, output string, lcb logCallback) bool { - printLog(lcb, "Only work in win64.") - return false +import ( + "fmt" + "path" +) + +func ass2Pgs(input []string, resolution, frameRate, fontsDir, output string, lcb logCallback) bool { + r := false + for _, item := range input { + _, _, _, _f := splitPath(item) + fn := path.Join(output, _f+".pgs") + args := make([]string, 0) + args = append(args, "-a1", "-p1") + args = append(args, "-z0", "-u0", "-b0") + args = append(args, "-g", fontsDir) + args = append(args, "-v", resolution) + args = append(args, "-f", frameRate) + args = append(args, "-o", fn) + args = append(args, item) + if p, err := newProcess(nil, nil, nil, "", ass2bdnxml, args...); err == nil { + s, err := p.Wait() + r = err == nil && s.ExitCode() == 0 + if !r { + printLog(lcb, fmt.Sprintf(`Failed to Ass2Pgs:"%s"`, item)) + } + } + } + return r } |
