Golang と FFmpeg: リアルタイムのビデオ ストリーム転送と処理を実装するテクノロジには、特定のコード サンプルが必要です
マルチメディア テクノロジの急速な発展に伴い、ビデオ それは人々の生活の不可欠な部分となっています。リアルタイムのビデオ ストリーム転送および処理テクノロジーは、高品質のビデオ サービスを実現するための鍵の 1 つです。この記事では、Golang と FFmpeg を使用してリアルタイム ビデオ ストリームを転送および処理する方法を紹介し、具体的なコード例を添付します。この記事の紹介を通じて、読者がリアルタイム ビデオ ストリームの転送と処理テクノロジについてより深く理解できることを願っています。
次に、Golang と FFmpeg を使用してリアルタイムのビデオ ストリームの転送と処理を実装する方法を紹介します。コード例を次に示します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>package main
import (
"fmt"
"log"
"os"
"os/exec"
)
func main() {
// 采集
captureCmd := exec.Command("ffmpeg", "-f", "avfoundation", "-i", "0", "-r", "30", "-s", "640x480", "-c:v", "libx264", "-preset", "ultrafast", "-tune", "zerolatency", "-f", "mpegts", "-")
capturePipe, err := captureCmd.StdoutPipe()
if err != nil {
log.Fatal(err)
}
captureCmd.Stderr = os.Stderr
// 编码
encodeCmd := exec.Command("ffmpeg", "-i", "pipe:0", "-c:v", "copy", "-f", "mpegts", "-")
encodePipe, err := encodeCmd.StdinPipe()
if err != nil {
log.Fatal(err)
}
encodeCmd.Stdout = os.Stdout
encodeCmd.Stderr = os.Stderr
// 传输
transmitCmd := exec.Command("ffmpeg", "-i", "pipe:0", "-c:v", "copy", "-f", "mpegts", "udp://127.0.0.1:1234")
transmitPipe, err := transmitCmd.StdinPipe()
if err != nil {
log.Fatal(err)
}
transmitCmd.Stdout = os.Stdout
transmitCmd.Stderr = os.Stderr
// 启动命令
if err := captureCmd.Start(); err != nil {
log.Fatal(err)
}
if err := encodeCmd.Start(); err != nil {
log.Fatal(err)
}
if err := transmitCmd.Start(); err != nil {
log.Fatal(err)
}
// 等待命令执行完毕
if err := captureCmd.Wait(); err != nil {
log.Fatal(err)
}
if err := encodeCmd.Wait(); err != nil {
log.Fatal(err)
}
if err := transmitCmd.Wait(); err != nil {
log.Fatal(err)
}
// 输出结果
fmt.Println("视频流传输完成")
}
</pre><div class="contentsignin">ログイン後にコピー</div></div>
上記のコード例では、Golang の os/exec
パッケージを使用して FFmpeg コマンド ライン ツールを実行します。まず、
コマンドを使用して、ビデオ ストリームをキャプチャ、エンコード、送信します。最後に、リアルタイム ビデオ ストリームの転送と処理が実現されます。
以上がGolang と FFmpeg: リアルタイムのビデオ ストリームの転送と処理のためのテクノロジーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。