Golang と FFmpeg を使用してビデオ セグメンテーション エンコーディングを実装するテクニック
要約:
ビデオ処理では、長時間のビデオ ファイルを分割する必要がある場合があります。簡単に保存、転送、処理できる複数の小さなビデオ クリップ。この記事では、Golang と FFmpeg を使用してビデオ セグメンテーション エンコード技術を実装する方法を紹介し、具体的なコード例を示します。
1.1 Golang
Golang は、Google によって開発された静的に型付けされ、コンパイルされた高レベル プログラミング言語であり、同時実行パフォーマンスとシンプルな設計で知られています。 Golang は、効率的なネットワークおよび分散アプリケーションの構築に適した、豊富な標準ライブラリと強力な同時実行メカニズムを提供します。
1.2 FFmpeg
FFmpeg は、オーディオおよびビデオのエンコード、デコード、変換、ストリーミング メディア処理などの機能を実現できるオープンソースのオーディオおよびビデオ処理ツール セットです。 FFmpeg は、オーディオとビデオを簡単に処理するための豊富なコマンド ライン ツールとライブラリ関数を提供します。
2.1 FFmpeg と Golang をインストールする
まず、FFmpeg と Golang をインストールする必要があります。 FFmpegのインストール方法についてはFFmpeg公式サイトを、Golangのインストール方法についてはGolang公式サイトを参照してください。
2.2 必要なライブラリをインポートする
Golang では、os/exec パッケージを使用してコマンド ライン操作を実行できます。コードでパッケージをインポートします。
import ( "os/exec" )
2.3 ビデオ セグメンテーション エンコーディング
次に、FFmpeg を使用してビデオ セグメンテーション エンコーディングを実装します。 「input.mp4」という名前のビデオ ファイルがあり、それを長さ 10 秒の複数の小さなビデオ クリップに分割する必要があるとします。
Golang の os/exec パッケージを使用すると、次のコードを実行できます:
func segmentEncodeVideo(inputFile string, segmentDuration int) { cmd := exec.Command("ffmpeg", "-i", inputFile, "-c", "copy", "-map", "0", "-f", "segment", "-segment_time", fmt.Sprintf("%d", segmentDuration), "-reset_timestamps", "1", "output%03d.mp4") err := cmd.Run() if err != nil { log.Fatalf("Failed to encode video: %s", err) } }
上記のコードでは、ffmpeg コマンドを使用してビデオをエンコードします。 「-i」パラメータは入力ファイル名を指定し、「-c」パラメータはエンコード形式を指定し、「-map」パラメータはすべてのストリームのマッピングを指定し、「-f」パラメータは出力形式をセグメントとして指定します。 -segment_time" パラメータはセグメント化時間を指定します。"-reset_timestamps" パラメータはタイムスタンプをリセットするために使用されます。最後のパラメータは出力ファイル名です。ここで、"d" は 3 桁のシリアル番号を表します。
package main import ( "fmt" "log" "os/exec" ) func segmentEncodeVideo(inputFile string, segmentDuration int) { cmd := exec.Command("ffmpeg", "-i", inputFile, "-c", "copy", "-map", "0", "-f", "segment", "-segment_time", fmt.Sprintf("%d", segmentDuration), "-reset_timestamps", "1", "output%03d.mp4") err := cmd.Run() if err != nil { log.Fatalf("Failed to encode video: %s", err) } } func main() { segmentEncodeVideo("input.mp4", 10) }
上記のコードでは、ビデオセグメントのエンコードを実行するには、segmentEncodeVideo 関数を呼び出します。渡されるパラメータには、入力ファイル名とセグメント期間が含まれます。
以上がGolang と FFmpeg を使用してビデオ セグメンテーション エンコーディングを実装するためのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。