You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.1 KiB
61 lines
1.1 KiB
package config
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
"encoding/json"
|
|
)
|
|
|
|
type VideoOpts struct {
|
|
Format string
|
|
Scale string
|
|
VideoBitrate int
|
|
VideoCodec string
|
|
AudioBitrate int
|
|
AudioCodec string
|
|
Speed string
|
|
CleanFilename bool
|
|
CRF int
|
|
FPS int
|
|
Tune string
|
|
Input string
|
|
OutDir string
|
|
Test int
|
|
TestStart int
|
|
Passes int
|
|
Extras []string
|
|
}
|
|
|
|
type Settings struct {
|
|
Debug int
|
|
Progress bool
|
|
ConfigPath string
|
|
Encodings []VideoOpts
|
|
}
|
|
|
|
func ParseFlags(c *Settings) {
|
|
flag.IntVar(&c.Debug, "debug", 0, "1=print the ffmpeg command, 2=and its stderr output")
|
|
flag.BoolVar(&c.Progress, "progress", false, "Show percent progress. Not accurate (thanks ffmpeg)")
|
|
flag.StringVar(&c.ConfigPath, "config", "config.json", "config.json to load")
|
|
|
|
flag.Parse()
|
|
}
|
|
|
|
func Load() Settings {
|
|
var config Settings
|
|
|
|
ParseFlags(&config)
|
|
|
|
data, err := os.ReadFile(config.ConfigPath)
|
|
if err != nil {
|
|
log.Fatalf("error reading config %s: %v", config.ConfigPath, err);
|
|
}
|
|
|
|
err = json.Unmarshal(data, &config.Encodings)
|
|
if err != nil {
|
|
log.Fatalf("error loading %s: %v", config.ConfigPath, err)
|
|
}
|
|
|
|
return config
|
|
}
|
|
|