Go 言語 (Go) は、Google によって開始されたオープン ソース プログラミング言語であり、そのシンプルな構文、同時実行モデル、強力なネットワーク プログラミング機能により、ライブ ストリーミングの分野で多くの開発者に支持されています。この記事では、Go言語を使用してストリーミングを実装する手順と関連技術を紹介します。
1. プッシュ プロトコル
プッシュ プロトコルは、ビデオ ストリームがクライアントからサーバーにプッシュされるときに使用される通信プロトコルを指します。通常、ストリーミング機能を実装するには、RTMP、HLS、HTTP-FLV などのプロトコルを使用します。
RTMP (Real-Time Messaging Protocol) は、Adobe によって開始されたオーディオおよびビデオのストリーミング伝送プロトコルであり、伝送に TCP プロトコルを使用します。 RTMP は、ストリーミング メディア ファイルのエンコード、圧縮、送信などの機能を提供し、ビデオ ライブ ブロードキャストやインタラクティブ ライブ ブロードキャストなどの分野で広く使用されています。 RTMP ストリーミング プロセス中に、librtmp、go-rtmp などのいくつかのライブラリを使用する必要があります。
HLS (HTTP Live Streaming) は、Apple が発表したストリーミング メディア プロトコルで、ビデオ全体を一連の小さなチャンクに分割します。ブロックは別のファイルです。これらの小さなファイルは、HTTP プロトコルを通じて送信して、ライブ ストリーミングの効果を実現できます。 HLS で使用される M3U8 プレイリストと ts フラグメント形式は標準の HTTP プロトコル形式であり、クライアントはブラウザを直接使用して再生できます。
HTTP-FLV は、HTTP プロトコル送信に基づく FLV 形式のストリーミング メディア プロトコルです。 HTTP プロトコルを介して FLV 形式のオーディオおよびビデオ ストリームを送信し、HLS プロトコルと同様のセグメント化された送信メカニズムを実装しながら、高いリアルタイム性を示し、ユーザー エクスペリエンスは基本的に従来の RTMP と同じです。
どのプッシュ プロトコルが使用されるかに関係なく、開発者はプッシュ機能をより適切に実装するために、関連するプロトコルの原則とテクノロジを習得する必要があります。
2. ストリーミングの実装
Go 言語を使用してストリーミングを実装するプロセスでは、Nginx、OpenResty などのストリーミング メディア サーバー ソフトウェアに依存する必要があります。次に、Nginx NGINX-RTMP-Module を使用して HLS プロトコル ストリーミングを実装する例を取り上げ、Go 言語でのストリーミングの実装を紹介します。
1) Nginx、nginx-rtmp-moduleのインストール
2) FFmpegのインストール
3) Go環境のインストール
次のように、rtmp サービス構成を Nginx 構成ファイルに追加します:
rtmp { server { listen 1935; chunk_size 4096; application live { live on; record off; hls on; hls_path /usr/local/nginx/html/hls; } } }
package main import ( "bytes" "log" "os/exec" ) func main() { cmd := exec.Command("ffmpeg", "-re", "-i", "input.mp4", "-c:v", "libx264", "-c:a", "aac", "-strict", "experimental", "-f", "flv", "rtmp://localhost/live/stream") var out bytes.Buffer cmd.Stdout = &out err := cmd.Run() if err != nil { log.Println(err) } }
上記のコードは、FFmpeg を使用して、ローカル ビデオ ファイル input.mp4 をアドレス rtmp://localhost/live/stream にプッシュします。
次のように、go run
コマンドを使用して Go プッシュ プログラムを実行します。プッシュが成功したら、ブラウザで http://localhost/hls/stream.m3u8 を開いてストリーミング効果を確認できます。
概要
上記の手順により、Go 言語を使用して HLS プロトコル プッシュを実装することができます。もちろん、Go 言語では RTMP や HTTP-FLV などのプロトコルも実装でき、開発者はプッシュ実装に適した技術的な方向性を選択できます。
以上がGo 言語でプッシュ ストリーミングを実装する手順と関連テクノロジーについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。