利用Golang和FFmpeg實作視訊幀擷取的方法
摘要:
本文介紹如何使用Golang和FFmpeg來擷取影片的幀,並給出了具體的程式碼範例。透過此方法,可以方便地從影片中提取出每一幀,並進行後續的處理和分析。
以下是一個範例程式碼,展示如何使用Golang呼叫FFmpeg指令來擷取影片畫面:
package main import ( "log" "os" "os/exec" ) func main() { inputFile := "input.mp4" // 输入视频文件 outputDir := "frames/" // 输出目录,存放提取出的视频帧 // 创建输出目录 err := os.MkdirAll(outputDir, os.ModePerm) if err != nil { log.Fatal(err) } // 构造FFmpeg命令 cmd := exec.Command("ffmpeg", "-i", inputFile, "-vf", "fps=1", outputDir+"frame-%03d.jpg") // 执行命令 err = cmd.Run() if err != nil { log.Fatal(err) } log.Println("视频帧提取完成!") }
上述程式碼的功能是將指定影片檔案(input.mp4)中的每一幀提取出來,並保存為jpg格式的圖片文件,存放在frames/目錄下。其中,"-vf fps=1"參數表示每秒提取一格。
go run filename.go
即可開始擷取視訊影格。提取過程可能需要一定時間,取決於影片的大小和幀率。 以上是利用Golang和FFmpeg實現視訊幀提取的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!