feat: initialise project structure with core encoding queue, database models, and web management API
Build / Build and Push (push) Successful in 50s
Build / Build and Push (push) Successful in 50s
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package encoder
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (m *FFmpegManager) BuildAudioCmd(inputPath, outputPath, ffmpegFlags string) (*exec.Cmd, error) {
|
||||
args := []string{"-i", inputPath, "-c:a", "libmp3lame", "-b:a", "320k"}
|
||||
|
||||
if ffmpegFlags != "" {
|
||||
userArgs := ShlexSplit(ffmpegFlags)
|
||||
args = append(args, userArgs...)
|
||||
}
|
||||
|
||||
args = append(args, outputPath, "-y")
|
||||
|
||||
return exec.Command(m.BinaryPath, args...), nil
|
||||
}
|
||||
|
||||
func (m *FFmpegManager) ShouldSkipAudio(inputPath string) bool {
|
||||
// Probe the codec
|
||||
cmd := exec.Command("ffprobe", "-v", "quiet", "-select_streams", "a:0",
|
||||
"-show_entries", "stream=codec_name", "-of", "csv=p=0", inputPath)
|
||||
out, err := cmd.Output()
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
codec := strings.TrimSpace(string(out))
|
||||
|
||||
// If it's already mp3, check bitrate
|
||||
if codec == "mp3" {
|
||||
cmdBr := exec.Command("ffprobe", "-v", "quiet", "-select_streams", "a:0",
|
||||
"-show_entries", "stream=bit_rate", "-of", "csv=p=0", inputPath)
|
||||
outBr, err := cmdBr.Output()
|
||||
if err == nil {
|
||||
br, _ := strconv.Atoi(strings.TrimSpace(string(outBr)))
|
||||
if br >= 300000 {
|
||||
return true // It's ~320k mp3
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user