From 2b8bfe8bd970f84fd3226924dac1465e5726444a Mon Sep 17 00:00:00 2001 From: Alexey Khit Date: Fri, 9 Dec 2022 22:07:57 +0300 Subject: [PATCH] Add support width and height params for FFmpeg --- cmd/ffmpeg/ffmpeg.go | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/cmd/ffmpeg/ffmpeg.go b/cmd/ffmpeg/ffmpeg.go index c2792f3c..b6338403 100644 --- a/cmd/ffmpeg/ffmpeg.go +++ b/cmd/ffmpeg/ffmpeg.go @@ -125,22 +125,46 @@ func Init() { s = cmd + input if query != nil { + // 1. Process raw params for FFmpeg for _, raw := range query["raw"] { s += " " + raw } - for _, rotate := range query["rotate"] { - switch rotate { - case "90": - s += " -vf transpose=1" // 90 degrees clockwise - case "180": - s += " -vf transpose=1,transpose=1" - case "-90", "270": - s += " -vf transpose=2" // 90 degrees counterclockwise + // 2. Process video filters (resize and rotation) + var filters []string + + if query["width"] != nil || query["height"] != nil { + filter := "scale=" + if query["width"] != nil { + filter += query["width"][0] + } else { + filter += "-1" } - break + filter += ":" + if query["height"] != nil { + filter += query["height"][0] + } else { + filter += "-1" + } + filters = append(filters, filter) } + if query["rotate"] != nil { + switch query["rotate"][0] { + case "90": + filters = append(filters, "transpose=1") // 90 degrees clockwise + case "180": + filters = append(filters, "transpose=1,transpose=1") + case "-90", "270": + filters = append(filters, "transpose=2") // 90 degrees counterclockwise + } + } + + if filters != nil { + s += " -vf " + strings.Join(filters, ",") + } + + // 3. Process video codecs switch len(query["video"]) { case 0: s += " -vn" @@ -165,6 +189,7 @@ func Init() { } } + // 4. Process audio codecs switch len(query["audio"]) { case 0: s += " -an"