From edf850e536d5355bdb0c7211722a375bb22f9893 Mon Sep 17 00:00:00 2001 From: piyongcai Date: Mon, 20 Nov 2023 17:33:49 +0800 Subject: [PATCH] remove aws dependence --- examples/example_test.go | 18 --------------- ffmpeg.go | 47 ---------------------------------------- go.mod | 1 - go.sum | 17 --------------- 4 files changed, 83 deletions(-) diff --git a/examples/example_test.go b/examples/example_test.go index 4624454..1d58567 100644 --- a/examples/example_test.go +++ b/examples/example_test.go @@ -3,8 +3,6 @@ package examples import ( "testing" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" "github.com/disintegration/imaging" "github.com/stretchr/testify/assert" ffmpeg "github.com/u2takey/ffmpeg-go" @@ -34,22 +32,6 @@ func TestExampleShowProgress(t *testing.T) { ExampleShowProgress("./sample_data/in1.mp4", "./sample_data/out2.mp4") } -func TestSimpleS3StreamExample(t *testing.T) { - err := ffmpeg.Input("./sample_data/in1.mp4", nil). - Output("s3://data-1251825869/test_out.ts", ffmpeg.KwArgs{ - "aws_config": &aws.Config{ - Credentials: credentials.NewStaticCredentials("xx", "yyy", ""), - //Endpoint: aws.String("xx"), - Region: aws.String("yyy"), - }, - // outputS3 use stream output, so you can only use supported format - // if you want mp4 format for example, you can output it to a file, and then call s3 sdk to do upload - "format": "mpegts", - }). - Run() - assert.Nil(t, err) -} - func TestExampleChangeCodec(t *testing.T) { err := ffmpeg.Input("./sample_data/in1.mp4"). Output("./sample_data/out1.mp4", ffmpeg.KwArgs{"c:v": "libx265"}). diff --git a/ffmpeg.go b/ffmpeg.go index 3df2f9f..0f4a7fe 100644 --- a/ffmpeg.go +++ b/ffmpeg.go @@ -3,14 +3,7 @@ package ffmpeg_go import ( "context" "errors" - "io" "log" - "os" - "strings" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/s3/s3manager" ) // Input file URL (ffmpeg ā€œ-iā€œ option) @@ -122,45 +115,5 @@ func (s *Stream) Output(fileName string, kwargs ...KwArgs) *Stream { if s.Type != "FilterableStream" { log.Panic("cannot output on non-FilterableStream") } - if strings.HasPrefix(fileName, "s3://") { - return s.outputS3Stream(fileName, kwargs...) - } return OutputContext(s.Context, []*Stream{s}, fileName, kwargs...) } - -func (s *Stream) outputS3Stream(fileName string, kwargs ...KwArgs) *Stream { - r, w := io.Pipe() - fileL := strings.SplitN(strings.TrimPrefix(fileName, "s3://"), "/", 2) - if len(fileL) != 2 { - log.Panic("s3 file format not valid") - } - args := MergeKwArgs(kwargs) - awsConfig := args.PopDefault("aws_config", &aws.Config{}).(*aws.Config) - bucket, key := fileL[0], fileL[1] - o := Output([]*Stream{s}, "pipe:", args). - WithOutput(w, os.Stdout) - done := make(chan struct{}) - runHook := RunHook{ - f: func() { - defer func() { - done <- struct{}{} - }() - - sess, err := session.NewSession(awsConfig) - uploader := s3manager.NewUploader(sess) - _, err = uploader.Upload(&s3manager.UploadInput{ - Bucket: &bucket, - Key: &key, - Body: r, - }) - //fmt.Println(ioutil.ReadAll(r)) - if err != nil { - log.Println("upload fail", err) - } - }, - done: done, - closer: w, - } - o.Context = context.WithValue(o.Context, "run_hook", &runHook) - return o -} diff --git a/go.mod b/go.mod index f27c692..4b2f491 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module github.com/u2takey/ffmpeg-go go 1.16 require ( - github.com/aws/aws-sdk-go v1.38.20 github.com/disintegration/imaging v1.6.2 github.com/stretchr/testify v1.5.1 github.com/u2takey/go-utils v0.3.1 diff --git a/go.sum b/go.sum index acc214a..a46c53a 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -github.com/aws/aws-sdk-go v1.38.20 h1:QbzNx/tdfATbdKfubBpkt84OM6oBkxQZRw6+bW2GyeA= -github.com/aws/aws-sdk-go v1.38.20/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -11,10 +9,6 @@ github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -24,7 +18,6 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/panjf2000/ants/v2 v2.4.2/go.mod h1:f6F0NZVFsGCp5A7QW/Zj/m92atWwOkY0OIhFxRNFr4A= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -37,21 +30,11 @@ github.com/u2takey/go-utils v0.3.1 h1:TaQTgmEZZeDHQFYfd+AdUT1cT4QJgJn/XVPELhHw4y github.com/u2takey/go-utils v0.3.1/go.mod h1:6e+v5vEZ/6gu12w/DC2ixZdZtCrNokVxD0JUklcqdCs= gocv.io/x/gocv v0.25.0 h1:vM50jL3v9OEqWSi+urelX5M1ptZeFWA/VhGPvdTqsJU= gocv.io/x/gocv v0.25.0/go.mod h1:Rar2PS6DV+T4FL+PM535EImD/h13hGVaHhnCu1xarBs= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=