From c08e5637d2e4eb5cc150c139962a28e9e9e2c620 Mon Sep 17 00:00:00 2001 From: RafaelEdwards Date: Wed, 20 Nov 2024 12:33:16 -0300 Subject: [PATCH] try fix web to ogg --- main.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/main.go b/main.go index 584c235..abd808e 100644 --- a/main.go +++ b/main.go @@ -77,15 +77,22 @@ func validateAPIKey(c *gin.Context) bool { return true } -func convertAudio(inputData []byte, format string) ([]byte, int, error) { +func convertAudio(inputData []byte, inputFormat string, outputFormat string) ([]byte, int, error) { var cmd *exec.Cmd - switch format { + switch outputFormat { case "mp3": cmd = exec.Command("ffmpeg", "-i", "pipe:0", "-f", "mp3", "pipe:1") case "wav": - cmd = exec.Command("ffmpeg", "-i", "pipe:0", "-f", "wav", "pipe:1") + cmd = exec.Command("ffmpeg", "-i", "pipe:0", "-f", "wav", "pipe:1") default: - cmd = exec.Command("ffmpeg", "-i", "pipe:0", "-ac", "1", "-ar", "16000", "-c:a", "libopus", "-f", "ogg", "pipe:1") + if inputFormat == "webm" { + // Custom settings for webm to ogg conversion + fmt.Println("Conversão de webm para ogg") + cmd = exec.Command("ffmpeg", "-i", "pipe:0", "-acodec", "libopus", "-b:a", "16k", "-vbr", "on", "-compression_level", "10", "-ac", "1", "-ar", "16000", "-f", "ogg", "pipe:1") + } else { + // Default settings for other formats to ogg + cmd = exec.Command("ffmpeg", "-i", "pipe:0", "-acodec", "libopus", "-ac", "1", "-ar", "16000", "-f", "ogg", "pipe:1") + } } outBuffer := bufferPool.Get().(*bytes.Buffer) errBuffer := bufferPool.Get().(*bytes.Buffer) @@ -166,9 +173,10 @@ func processAudio(c *gin.Context) { return } - format := c.DefaultPostForm("format", "ogg") + outputFormat := c.DefaultPostForm("output_format", "ogg") + inputFormat := c.DefaultPostForm("input_format", "ogg") - convertedData, duration, err := convertAudio(inputData, format) + convertedData, duration, err := convertAudio(inputData, inputFormat, outputFormat) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return @@ -177,7 +185,7 @@ func processAudio(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "duration": duration, "audio": base64.StdEncoding.EncodeToString(convertedData), - "format": format, + "format": outputFormat, }) }