1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| package main import ( "fmt" "os" "os/exec" "strings" )
func compressVideo(inputFile, outputFile string) error { args := []string{ "-i", inputFile, "-c:v", "hevc_nvenc", "-preset", "slow", "-b:v", "2M", "-maxrate", "2.5M", "-bufsize", "5M", "-cq", "28", "-b:a", "128K", outputFile, } cmd := exec.Command("ffmpeg", args...) output, err := cmd.CombinedOutput() if err != nil { return fmt.Errorf("无法压缩视频: %w\n%s", err, output) } return nil }
func main() { files, err := os.ReadDir(".") if err != nil { fmt.Println("读取目录时出错:", err) return }
for _, file := range files { if !file.IsDir() && strings.HasSuffix(strings.ToLower(file.Name()), ".mp4") { inputFile := file.Name() outputFile := "compressed_" + file.Name()
fmt.Printf("Compressing %s to %s...\n", inputFile, outputFile) if err := compressVideo(inputFile, outputFile); err != nil { fmt.Println("压缩视频时出错:", err) continue } fmt.Println("压缩成功完成.") } } }
|