在Golang中使用FFmpeg可以實現音頻混音和分離。下面是一個簡單的示例代碼:
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
// 音頻混音
mixAudio()
// 音頻分離
separateAudio()
}
func mixAudio() {
// 輸入音頻文件路徑
audioFile1 := "audio1.mp3"
audioFile2 := "audio2.mp3"
// 輸出混音后的音頻文件路徑
outputFile := "mixed_audio.mp3"
// 使用FFmpeg進行音頻混音
cmd := exec.Command("ffmpeg", "-i", audioFile1, "-i", audioFile2, "-filter_complex", "[0:a][1:a]amerge=inputs=2[aout]", "-map", "[aout]", outputFile)
err := cmd.Run()
if err != nil {
fmt.Println("音頻混音失敗:", err.Error())
return
}
fmt.Println("音頻混音完成")
}
func separateAudio() {
// 輸入音頻文件路徑
audioFile := "mixed_audio.mp3"
// 輸出分離后的音頻文件路徑
outputFile1 := "separated_audio1.mp3"
outputFile2 := "separated_audio2.mp3"
// 使用FFmpeg進行音頻分離
cmd1 := exec.Command("ffmpeg", "-i", audioFile, "-map", "0:0", outputFile1)
err1 := cmd1.Run()
if err1 != nil {
fmt.Println("音頻分離失敗:", err1.Error())
return
}
cmd2 := exec.Command("ffmpeg", "-i", audioFile, "-map", "0:1", outputFile2)
err2 := cmd2.Run()
if err2 != nil {
fmt.Println("音頻分離失敗:", err2.Error())
return
}
fmt.Println("音頻分離完成")
}
上述代碼中,mixAudio函數使用FFmpeg將兩個音頻文件進行混音,輸出混音后的音頻文件。separateAudio函數使用FFmpeg將混音后的音頻文件分離成兩個單獨的音頻文件。
要運行上述代碼,確保已經安裝了FFmpeg,并將其添加到系統的環境變量中。并且使用go mod管理依賴。
此外,你還可以根據自己的需求自定義FFmpeg的命令參數,以實現更復雜的音頻混音和分離操作。