@@ -2,10 +2,11 @@ package export
22
33import (
44 "fmt"
5- vsactivity "github.com/bcc-code/bcc-media-flows/activities/vidispine"
65 "strings"
76 "time"
87
8+ vsactivity "github.com/bcc-code/bcc-media-flows/activities/vidispine"
9+
910 "github.com/bcc-code/bcc-media-flows/activities"
1011 "github.com/bcc-code/bcc-media-flows/paths"
1112 "github.com/bcc-code/bcc-media-flows/services/vidispine"
@@ -28,6 +29,8 @@ type GenerateShortDataParams struct {
2829 OutputDirPath string `json:"OutputDir"`
2930 InSeconds float64 `json:"InSeconds"`
3031 OutSeconds float64 `json:"OutSeconds"`
32+ ModelSize string `json:"ModelSize"`
33+ DebugMode bool `json:"DebugMode"`
3134}
3235
3336func validationError (msg string ) error {
@@ -109,11 +112,27 @@ func GenerateShort(ctx workflow.Context, params GenerateShortDataParams) (*Gener
109112 return nil , err
110113 }
111114
115+ sceneDetectArgs := []string {
116+ "-i" , clipResult .VideoFile .Local (),
117+ "-filter_complex" , "select='gt(scene,0.1)',metadata=print:file=-" ,
118+ "-f" , "null" , "-" ,
119+ }
120+
121+ sceneResult , err := wfutils .Execute (ctx ,
122+ activities .Video .ExecuteFFmpegDump ,
123+ activities.ExecuteFFmpegInput {Arguments : sceneDetectArgs },
124+ ).Result (ctx )
125+ if err != nil {
126+ logger .Error ("Scene-detect FFmpeg failed: " + err .Error ())
127+ return nil , err
128+ }
129+
112130 submitJobParams := activities.SubmitShortJobInput {
113- InputPath : clipResult .VideoFile .Linux (),
114- OutputPath : tempFolder .Linux (),
115- Model : "n" ,
116- Debug : true ,
131+ InputPath : clipResult .VideoFile .Linux (),
132+ OutputPath : tempFolder .Linux (),
133+ Model : params .ModelSize ,
134+ Debug : params .DebugMode ,
135+ SceneChanges : sceneResult ,
117136 }
118137
119138 jobResult , err := wfutils .Execute (ctx , activities .Util .SubmitShortJobActivity , submitJobParams ).Result (ctx )
0 commit comments