From 678d16a83a0d954109347ec3b252ab569d6b125f Mon Sep 17 00:00:00 2001 From: wangzewang Date: Tue, 23 Feb 2021 02:55:24 +0800 Subject: [PATCH 1/5] Change lib ref --- ffmpeg/ffmpeg.go | 6 +++--- ffmpeg/metadata.go | 2 +- go.mod | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index ea84fbc..53ea457 100644 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -13,8 +13,8 @@ import ( "strconv" "strings" - "github.com/floostack/transcoder" - "github.com/floostack/transcoder/utils" + "github.com/wangzewang/transcoder" + "github.com/wangzewang/transcoder/utils" ) // Transcoder ... @@ -192,7 +192,7 @@ func (t *Transcoder) validate() error { } // GetMetadata Returns metadata for the specified input file -func (t *Transcoder) GetMetadata() ( transcoder.Metadata, error) { +func (t *Transcoder) GetMetadata() (transcoder.Metadata, error) { if t.config.FfprobeBinPath != "" { var outb, errb bytes.Buffer diff --git a/ffmpeg/metadata.go b/ffmpeg/metadata.go index 4e81910..617819a 100644 --- a/ffmpeg/metadata.go +++ b/ffmpeg/metadata.go @@ -1,6 +1,6 @@ package ffmpeg -import "github.com/floostack/transcoder" +import "github.com/wangzewang/transcoder" // Metadata ... type Metadata struct { diff --git a/go.mod b/go.mod index 4c9ade4..05467ec 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,3 @@ -module github.com/floostack/transcoder +module github.com/wangzewang/transcoder -go 1.13 +go 1.16 From baaeb74331e9505fecb1c1d20598c0a6abcc0b6f Mon Sep 17 00:00:00 2001 From: wangzewang Date: Tue, 23 Feb 2021 03:00:35 +0800 Subject: [PATCH 2/5] Return process when start ffmpeg --- ffmpeg/ffmpeg.go | 12 ++++++------ transcoder.go | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index 53ea457..50c6033 100644 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -36,7 +36,7 @@ func New(cfg *Config) transcoder.Transcoder { } // Start ... -func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, error) { +func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, *os.Process, error) { var stderrIn io.ReadCloser @@ -46,13 +46,13 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, // Validates config if err := t.validate(); err != nil { - return nil, err + return nil, nil, err } // Get file metadata _, err := t.GetMetadata() if err != nil { - return nil, err + return nil, nil, err } // Append input file and standard options @@ -88,7 +88,7 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, if t.config.ProgressEnabled && !t.config.Verbose { stderrIn, err = cmd.StderrPipe() if err != nil { - return nil, fmt.Errorf("Failed getting transcoding progress (%s) with args (%s) with error %s", t.config.FfmpegBinPath, args, err) + return nil, nil, fmt.Errorf("Failed getting transcoding progress (%s) with args (%s) with error %s", t.config.FfmpegBinPath, args, err) } } @@ -99,7 +99,7 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, // Start process err = cmd.Start() if err != nil { - return nil, fmt.Errorf("Failed starting transcoding (%s) with args (%s) with error %s", t.config.FfmpegBinPath, args, err) + return nil, nil, fmt.Errorf("Failed starting transcoding (%s) with args (%s) with error %s", t.config.FfmpegBinPath, args, err) } if t.config.ProgressEnabled && !t.config.Verbose { @@ -115,7 +115,7 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, err = cmd.Wait() } - return out, nil + return out, cmd.Process, nil } // Input ... diff --git a/transcoder.go b/transcoder.go index 9e58206..a61f40a 100644 --- a/transcoder.go +++ b/transcoder.go @@ -2,11 +2,12 @@ package transcoder import ( "io" + "os" ) // Transcoder ... type Transcoder interface { - Start(opts Options) (<-chan Progress, error) + Start(opts Options) (<-chan Progress, *os.Process, error) Input(i string) Transcoder InputPipe(w *io.WriteCloser, r *io.ReadCloser) Transcoder Output(o string) Transcoder From d154549bfd78d7c0de6c30590d379421974c92ca Mon Sep 17 00:00:00 2001 From: wangzewang Date: Wed, 10 Mar 2021 17:58:36 +0800 Subject: [PATCH 3/5] Add ffmpeg command str --- ffmpeg/ffmpeg.go | 1 + 1 file changed, 1 insertion(+) diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index 50c6033..a194323 100644 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -83,6 +83,7 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, // Initialize command cmd := exec.Command(t.config.FfmpegBinPath, args...) + fmt.Println("ffmpeg command is :", cmd.String()) // If progresss enabled, get stderr pipe and start progress process if t.config.ProgressEnabled && !t.config.Verbose { From 1b10d8d971a6749b54ab97c6a9d922c33c3b4019 Mon Sep 17 00:00:00 2001 From: wangzewang Date: Mon, 15 Mar 2021 02:52:32 +0800 Subject: [PATCH 4/5] Add gpu accelerate --- ffmpeg/ffmpeg.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index a194323..8c5bb78 100644 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -56,7 +56,7 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, } // Append input file and standard options - args := append([]string{"-i", t.input}, opts.GetStrArguments()...) + args := append([]string{"-vsync", "0", "-hwaccel", "cuvid", "-c:v", "h264_cuvid", "-i", t.input}, opts.GetStrArguments()...) outputLength := len(t.output) optionsLength := len(t.options) From 124a1ab389aea2428c28eb0afbbf20a2bbe9102d Mon Sep 17 00:00:00 2001 From: wangzewang Date: Mon, 15 Mar 2021 13:38:02 +0800 Subject: [PATCH 5/5] Fix gpu accelerate --- ffmpeg/ffmpeg.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ffmpeg/ffmpeg.go b/ffmpeg/ffmpeg.go index 8c5bb78..fb7380c 100644 --- a/ffmpeg/ffmpeg.go +++ b/ffmpeg/ffmpeg.go @@ -56,7 +56,7 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress, } // Append input file and standard options - args := append([]string{"-vsync", "0", "-hwaccel", "cuvid", "-c:v", "h264_cuvid", "-i", t.input}, opts.GetStrArguments()...) + args := append([]string{"-vsync", "0", "-hwaccel", "cuvid", "-hwaccel_output_format", "cuda", "-i", t.input}, opts.GetStrArguments()...) outputLength := len(t.output) optionsLength := len(t.options)