mirror of
https://github.com/xfrr/goffmpeg.git
synced 2025-10-05 16:06:50 +08:00
Add the possibility to change whitelist protocols
This commit is contained in:
@@ -24,6 +24,7 @@ type Transcoder struct {
|
|||||||
process *exec.Cmd
|
process *exec.Cmd
|
||||||
mediafile *models.Mediafile
|
mediafile *models.Mediafile
|
||||||
configuration ffmpeg.Configuration
|
configuration ffmpeg.Configuration
|
||||||
|
whiteListProtocols []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetProcessStderrPipe Set the STDERR pipe
|
// SetProcessStderrPipe Set the STDERR pipe
|
||||||
@@ -51,6 +52,10 @@ func (t *Transcoder) SetConfiguration(v ffmpeg.Configuration) {
|
|||||||
t.configuration = v
|
t.configuration = v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *Transcoder) SetWhiteListProtocols(availableProtocols []string) {
|
||||||
|
t.whiteListProtocols = availableProtocols
|
||||||
|
}
|
||||||
|
|
||||||
// Process Get transcoding process
|
// Process Get transcoding process
|
||||||
func (t Transcoder) Process() *exec.Cmd {
|
func (t Transcoder) Process() *exec.Cmd {
|
||||||
return t.process
|
return t.process
|
||||||
@@ -75,6 +80,11 @@ func (t Transcoder) FFprobeExec() string {
|
|||||||
func (t Transcoder) GetCommand() []string {
|
func (t Transcoder) GetCommand() []string {
|
||||||
media := t.mediafile
|
media := t.mediafile
|
||||||
rcommand := append([]string{"-y"}, media.ToStrCommand()...)
|
rcommand := append([]string{"-y"}, media.ToStrCommand()...)
|
||||||
|
|
||||||
|
if t.whiteListProtocols != nil {
|
||||||
|
rcommand = append([]string{"-protocol_whitelist", strings.Join(t.whiteListProtocols, ",")}, rcommand...)
|
||||||
|
}
|
||||||
|
|
||||||
return rcommand
|
return rcommand
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,6 +176,10 @@ func (t *Transcoder) Initialize(inputPath string, outputPath string) error {
|
|||||||
|
|
||||||
command := []string{"-i", inputPath, "-print_format", "json", "-show_format", "-show_streams", "-show_error"}
|
command := []string{"-i", inputPath, "-print_format", "json", "-show_format", "-show_streams", "-show_error"}
|
||||||
|
|
||||||
|
if t.whiteListProtocols != nil {
|
||||||
|
command = append([]string{"-protocol_whitelist", strings.Join(t.whiteListProtocols, ",")}, command...)
|
||||||
|
}
|
||||||
|
|
||||||
cmd := exec.Command(cfg.FfprobeBin, command...)
|
cmd := exec.Command(cfg.FfprobeBin, command...)
|
||||||
cmd.Stdout = &outb
|
cmd.Stdout = &outb
|
||||||
cmd.Stderr = &errb
|
cmd.Stderr = &errb
|
||||||
|
28
transcoder/transcored_test.go
Normal file
28
transcoder/transcored_test.go
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package transcoder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"github.com/xfrr/goffmpeg/models"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestTranscoder(t *testing.T) {
|
||||||
|
t.Run("#SetWhiteListProtocols", func(t *testing.T) {
|
||||||
|
t.Run("Should not set -protocol_whitelist option if it isn't present", func(t *testing.T) {
|
||||||
|
ts := Transcoder{}
|
||||||
|
|
||||||
|
ts.SetMediaFile(&models.Mediafile{})
|
||||||
|
require.NotEqual(t, ts.GetCommand()[0:2], []string{"-protocol_whitelist", "file,http,https,tcp,tls"})
|
||||||
|
require.NotContains(t, ts.GetCommand(), "protocol_whitelist")
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Should set -protocol_whitelist option if it's present", func(t *testing.T) {
|
||||||
|
ts := Transcoder{}
|
||||||
|
|
||||||
|
ts.SetMediaFile(&models.Mediafile{})
|
||||||
|
ts.SetWhiteListProtocols([]string{"file","http","https","tcp","tls"})
|
||||||
|
|
||||||
|
require.Equal(t, ts.GetCommand()[0:2], []string{"-protocol_whitelist", "file,http,https,tcp,tls"})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
Reference in New Issue
Block a user