GoとFFmpeg: 音声の合成とスピード調整を行う方法

Go言語でFFmpegライブラリを利用して、音声を合成・変換する機能を実現することができます。以下は、Go言語を使用してFFmpegを呼び出し、これらの機能を実現する方法を示すサンプルコードです。

はじめに、FFmpegをインストールしシステムパスで利用可能であることを確認する必要があります。その後、Golangのos/execパッケージを使用してFFmpegコマンドを実行できます。

FFmpegを使用して2つのオーディオファイルを1つのファイルにマージする方法を示す、サンプルコードを以下に示します。

package main
import (
"fmt"
"log"
"os"
"os/exec"
)
func main() {
// 输入音频文件路径
inputFile1 := "input1.mp3"
inputFile2 := "input2.mp3"
// 输出音频文件路径
outputFile := "output.mp3"
// 使用FFmpeg合成音频文件
cmd := exec.Command("ffmpeg", "-i", inputFile1, "-i", inputFile2, "-filter_complex", "amix=inputs=2:duration=first", outputFile)
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Println("音频合成完成!")
}

上記のコードでは、amix フィルターを使用して、2 つのオーディオファイル input1.mp3 と input2.mp3 を 1 つのオーディオファイル output.mp3 に合成しています。

FFmpeg を使用してオーディオファイルの再生速度を変える方法を示すサンプルコードを次に示します。

package main
import (
"fmt"
"log"
"os"
"os/exec"
)
func main() {
// 输入音频文件路径
inputFile := "input.mp3"
// 输出音频文件路径
outputFile := "output.mp3"
// 使用FFmpeg改变音频文件的播放速度
cmd := exec.Command("ffmpeg", "-i", inputFile, "-filter:a", "atempo=2.0", outputFile)
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Println("音频变速完成!")
}

atempoフィルターを使用する上記コードは、オーディオファイルinput.mp3の再生速度を2倍にし、新しいオーディオファイルoutput.mp3を生成します。

これらの例はご自身のご要件に合うように変更し、拡張してご使用ください。

bannerAds