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.
67 lines
1.5 KiB
67 lines
1.5 KiB
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"lcthw.dev/vidcrunch/config"
|
|
"github.com/modfy/fluent-ffmpeg"
|
|
)
|
|
|
|
const DevNull = "NUL"
|
|
|
|
func Run(pass int, output string) {
|
|
pid := 1
|
|
|
|
encode := fluentffmpeg.NewCommand("")
|
|
|
|
mp4_opts := []string{
|
|
"-vf", fmt.Sprintf("scale=%s:flags=lanczos", config.Settings.Scale),
|
|
"-aspect", config.Settings.Scale,
|
|
"-pix_fmt", "yuv420p",
|
|
"-tune", config.Settings.Tune,
|
|
"-movflags", "faststart",
|
|
"-pass", fmt.Sprint(pass),
|
|
"-passlogfile", fmt.Sprintf("ffmpeg2pass-%d.log", pid),
|
|
"-preset", config.Settings.Speed,
|
|
}
|
|
|
|
if pass != 3 {
|
|
mp4_opts = append(mp4_opts, "-an")
|
|
} else {
|
|
encode.AudioCodec("aac")
|
|
mp4_opts = append(mp4_opts,
|
|
"-b:a", fmt.Sprint(config.Settings.AudioBitrate * 1024))
|
|
}
|
|
|
|
if config.Settings.Test > 0 {
|
|
encode.InputOptions(
|
|
"-ss", fmt.Sprintf("00:%d", config.Settings.TestStart))
|
|
mp4_opts = append(mp4_opts, "-t", fmt.Sprint(config.Settings.Test))
|
|
}
|
|
|
|
encode.VideoCodec("libx264").
|
|
VideoBitRate(config.Settings.VideoBitrate * 1024).
|
|
FrameRate(config.Settings.FPS).
|
|
ConstantRateFactor(config.Settings.CRF)
|
|
|
|
encode.OutputOptions(mp4_opts...)
|
|
|
|
cmd := encode.InputPath(config.Settings.Input).
|
|
OutputFormat("mp4").
|
|
OutputPath(output).
|
|
Build()
|
|
|
|
fmt.Println("COMMAND", cmd.String())
|
|
|
|
err := cmd.Run()
|
|
if err != nil { log.Fatalf("%v", err) }
|
|
}
|
|
|
|
func main() {
|
|
config.Load()
|
|
fmt.Println(config.Settings)
|
|
|
|
Run(1, DevNull)
|
|
Run(2, DevNull)
|
|
Run(3, config.Settings.Output)
|
|
}
|
|
|