Go言語とFFmpegを使用して動画をスピードアップ・ダウンする方法
ビデオの高速化・低速化には Go 言語の os/exec パッケージを利用して FFmpeg コマンドを実行する
まず、FFmpegがインストールされており、システムの環境変数に追加されていることを確認してください。
以下のコードで動画の加速と減速を実現できます。
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
inputFile := "input.mp4" // 输入视频文件
outputFile := "output.mp4" // 输出视频文件
speed := 2.0 // 加速或减速的倍数,2.0表示加速两倍,0.5表示减速一半
// 构建FFmpeg命令行参数
args := []string{"-i", inputFile, "-vf", fmt.Sprintf("setpts=%f*PTS", 1/speed), "-r", "30", outputFile}
// 创建一个Cmd对象
cmd := exec.Command("ffmpeg", args...)
// 设置输出流,用于显示FFmpeg的输出日志
cmd.Stdout = os.Stdout
// 执行命令
err := cmd.Run()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("视频加速/减速完成!")
}
上の例では、setpts フィルターを使用して、ビデオの再生速度を制御します。ここで、setpts パラメーターの値は、PTS(Presentation Time Stamp) を変更して加速または減速を行う式です。-r パラメーターは、出力ビデオのフレームレートを指定するために使用され、必要に応じて調整できます。
なお、以上のサンプルでは動画の高速化、低速化の基本的な機能のみの実装であり、ご要望に合わせてパラメータ調整や機能拡張を行ってください。