ホームページ >バックエンド開発 >Golang >Golang と FFmpeg を使用してビデオ フレームを抽出する方法

Golang と FFmpeg を使用してビデオ フレームを抽出する方法

PHPz
PHPzオリジナル
2023-09-29 16:05:081466ブラウズ

Golang と FFmpeg を使用してビデオ フレームを抽出する方法

Golang と FFmpeg を使用してビデオ フレームを抽出する方法

要約:
この記事では、Golang と FFmpeg を使用してビデオ フレームを抽出する方法を紹介し、具体的な内容を示します。コード例。この方法により、ビデオから各フレームを簡単に抽出し、その後処理して分析することができます。

  1. はじめに
    ビデオ コンテンツが増加し続けるにつれて、ビデオ処理の需要も増加しています。その中でも、ビデオ フレームの抽出は、多くのビデオ分析および処理タスクの基本手順の 1 つです。この記事では、GolangとFFmpegを使ってビデオフレームを抽出する方法を紹介します。
  2. FFmpeg の概要
    FFmpeg は、オーディオおよびビデオ形式の変換、エンコード、デコードができるオープンソースのマルチメディア処理ツールセットです。これは、多くのビデオ処理タスクで頼りになるツールの 1 つであり、大規模なユーザー コミュニティと活発な開発者ベースがあります。
  3. FFmpeg のインストール
    FFmpeg を使用するには、まずコンピュータにインストールする必要があります。コンパイルされたバイナリは、公式 Web サイト (https://www.ffmpeg.org/) からダウンロードするか、パッケージ マネージャーを通じてインストールできます。
  4. Golang を使用して FFmpeg を呼び出す
    Golang では、os/exec パッケージを通じて外部コマンドを実行できます。このパッケージを使用すると、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」パラメータは1秒間に1フレームを切り出すことを意味します。

  1. コードの実行
    上記のコードを go ファイルとして保存し、コマンド ラインで go run filename.go を実行してビデオ フレームの抽出を開始します。ビデオのサイズとフレーム レートによっては、抽出プロセスに時間がかかる場合があります。
  2. 概要
    この記事では、Golang と FFmpeg を使用してビデオ フレームを抽出する方法を紹介します。 FFmpeg コマンドを呼び出すことで、ビデオをフレーム画像に変換し、その後の処理と分析を簡単に実行できます。この記事がビデオ フレーム抽出を必要とする読者に役立つことを願っています。

以上がGolang と FFmpeg を使用してビデオ フレームを抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。