From 8ee57655df761bab537d05e825e53895243c528f Mon Sep 17 00:00:00 2001
From: Christian Pointner <equinox@helsinki.at>
Date: Fri, 31 Aug 2018 22:44:57 +0200
Subject: [PATCH] improved ffmpeg based fetch converter

---
 importer/fetch_converter.go | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/importer/fetch_converter.go b/importer/fetch_converter.go
index a925316..86d8158 100644
--- a/importer/fetch_converter.go
+++ b/importer/fetch_converter.go
@@ -103,11 +103,16 @@ func newFFmpegConverter(job *Job) (c *ffmpegConverter, err error) {
 	filename := job.im.store.GetFilePath(job.Group, job.ID)
 	job.im.dbgLog.Printf("ffmpeg-converter: starting ffmpeg for file '%s'", filename)
 
-	// c.cmd = exec.CommandContext(job.ctx, "ffmpeg", "-hide_banner", "-nostats", "-i", "-", "-map_metadata", "0")
-	c.cmd = exec.CommandContext(job.ctx, "ffmpeg", "-nostats", "-i", "-", "-map_metadata", "0")
-	c.cmd.Args = append(c.cmd.Args, "-filter:a", "loudnorm=print_format=summary:dual_mono=true")
+	// c.cmd = exec.CommandContext(job.ctx, "ffmpeg", "-hide_banner", "-nostats", "-i", "-")
+	c.cmd = exec.CommandContext(job.ctx, "ffmpeg", "-nostats", "-y", "-i", "-")
+	c.cmd.Args = append(c.cmd.Args, "-map_metadata", "0", "-vn")
 	c.cmd.Args = append(c.cmd.Args, "-ar", strconv.FormatUint(uint64(job.im.store.Audio.SampleRate), 10))
 	c.cmd.Args = append(c.cmd.Args, "-f", job.im.store.Audio.Format.String(), filename)
+	// loudness normalization, see: http://k.ylo.ph/2016/04/04/loudnorm.html
+	c.cmd.Args = append(c.cmd.Args, "-map_metadata", "-1", "-vn")
+	c.cmd.Args = append(c.cmd.Args, "-ar", "192k")
+	c.cmd.Args = append(c.cmd.Args, "-filter:a", "loudnorm=print_format=json:dual_mono=true")
+	c.cmd.Args = append(c.cmd.Args, "-f", "null", "/dev/null")
 
 	if c.stdin, err = c.cmd.StdinPipe(); err != nil {
 		c.log.Append("ERROR opening stdin pipe: " + err.Error())
-- 
GitLab