summaryrefslogtreecommitdiff
path: root/mkvlib/ass2pgs.go
diff options
context:
space:
mode:
authorb5f0d6c3 <[email protected]>2022-04-27 23:33:39 +0800
committerb5f0d6c3 <[email protected]>2022-04-27 23:33:39 +0800
commit1927ddd43cad6fd528f8644ffa6efb760c8091dd (patch)
treee5d14973b8cd31815072d401dd549f2424fa494a /mkvlib/ass2pgs.go
parent3eb107af46f9e4ca0448c9fdff41931ad84cae41 (diff)
update mkvlib:ass2pgs use ass2bdnxml
Diffstat (limited to 'mkvlib/ass2pgs.go')
-rw-r--r--mkvlib/ass2pgs.go32
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
}