GoとFFmpegを使った動画フレーム抽出の方法

動画フレーム抽出には Go 言語と FFmpeg を使用します。Go 言語の os/exec パッケージを使用して FFmpeg コマンドを実行できます。以下に簡単なサンプルコードを示します。

package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
// 设置FFmpeg命令参数
inputFile := "input.mp4"
outputDir := "frames/"
// 创建输出目录
err := os.MkdirAll(outputDir, os.ModePerm)
if err != nil {
fmt.Println("无法创建输出目录:", err)
return
}
// 运行FFmpeg命令
cmd := exec.Command("ffmpeg", "-i", inputFile, "-vf", "fps=1/5", outputDir+"frame%d.jpg")
err = cmd.Run()
if err != nil {
fmt.Println("运行FFmpeg命令失败:", err)
return
}
fmt.Println("视频帧提取完成!")
}

上記例では、すでにFFmpegがインストール済みで、システム環境変数に追加されているものと仮定しています。コードの重要な点は、os/execパッケージを使用してFFmpegコマンドを実行することです。この例では、以下のようなコマンド引数を使用しました:

  1. “-i”:入力ファイルの指定
  2. “-vf”を指定してビデオフィルターを指定する。”fps=1/5″は毎秒5フレーム抽出することを示す
  3. outputDir+“frame%d.jpg”: 出力ファイル名の形式を指定します、ここで%dはファイルのインデックス番号で自動的に置換されます

必要に応じて入力ファイル、出力ディレクトリのパスを変更したり、フレーム抽出間隔を調整できます。上記のコードを実行すると、動画のフレームが抽出し、指定された出力ディレクトリに保存されます。

bannerAds