46 lines
962 B
Go
Executable File
46 lines
962 B
Go
Executable File
package streamer
|
|
|
|
import (
|
|
"fmt"
|
|
c "live-streamer/config"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func buildFFmpegArgs(videoItem c.InputItem) []string {
|
|
videoPath := videoItem.Path
|
|
|
|
args := []string{"-re"}
|
|
if videoItem.Start != "" {
|
|
args = append(args, "-ss", videoItem.Start)
|
|
}
|
|
|
|
if videoItem.End != "" {
|
|
args = append(args, "-to", videoItem.End)
|
|
}
|
|
|
|
args = append(args,
|
|
"-i", videoPath,
|
|
)
|
|
|
|
for k, v := range config.Play {
|
|
args = append(args, k)
|
|
if str, ok := v.(string); ok {
|
|
filename := strings.TrimSuffix(filepath.Base(videoPath), filepath.Ext(videoPath))
|
|
str = strings.ReplaceAll(str, "{{filepath}}", videoPath)
|
|
str = strings.ReplaceAll(str, "{{filename}}", filename)
|
|
args = append(args, str)
|
|
} else {
|
|
args = append(args, fmt.Sprint(v))
|
|
}
|
|
}
|
|
|
|
args = append(args, fmt.Sprintf("%s/%s", config.Output.RTMPServer, config.Output.StreamKey))
|
|
|
|
log.Debug("build ffmpeg", zap.Strings("args", args))
|
|
|
|
return args
|
|
}
|