私はシミュレーションアニメーションをレンダリングし、毎秒複数のPNG画像ファイルを出力し、これらのファイルをディスクに保存するOpen GLアプリケーションを用意しています。これらの画像ファイルをHTTPプロトコルでストリーミングされたビデオとしてストリーミングしたいので、Webブラウザからアニメーションビデオを見ることができます。私はすでにWebSocketからの接続を処理する堅牢なソケットサーバーを持っており、すべてのハンドシェイクとメッセージのエンコード/デコードの部分を処理できます。私のサーバープログラムとOpenGLアプリケーションプログラムはC++で書かれています。連続したPNG出力画像ファイルをWebブラウザ上のライブビデオストリーミングとして配信
念頭に置いての質問のカップル:
このOpenGLのアニメーションの出力をストリーミングし、自分のWebブラウザから、それを表示するための最良の方法は何ですか?ビデオ画像フレームは、OpenGLアプリケーションによってPNG画像ファイルとして動的に(連続的に)生成される。 Webブラウザは、OpenGLディスプレイ出力に対応するビデオを表示する必要があります(最小レイテンシ時間)。
これらのPNG画像ファイルを、C/C++を使用してプログラムで連続的に(ライブの)ビデオとしてエンコードするにはどうすればよいですか?Flash Media Live Encoderのようなストリーミングサーバーソフトウェアに手動で画像ファイルをプッシュしないでください。私はどのようなビデオフォーマットを作りますか?
Webソケットを使用してアニメーションデータを送受信する必要がありますか、それとも他の方法がありますか? (JQuery Ajaxの代わりに、私はこれを作っていますが、これを実装する正しい方法を教えてください)。このライブビデオストリーミングがさまざまなブラウザで機能するなら、素晴らしいことになるでしょう。
HTML5ビデオタグはライブビデオストリーミングをサポートしていますか、特定のURL /ディレクトリ(ライブストリーミングではありません)に存在する完全なビデオファイルに対してのみ動作しますか?
C/C++/Javaアプリケーションでイメージフレームを生成しているこのライブビデオストリーミングを行うための既存のコードサンプル(チュートリアル)があり、ビデオ出力としてこの出力を消費するWebブラウザがありますか? Googleで数時間を過ごした後、このトピックに関するチュートリアルをほとんど見つけることはできませんでした。
この回答は、指定された質問に対して効率的な解決法を提供するため、私はこの回答を受け入れたとマークしました。フレームをビデオエンコーダに直接入力することは、実際にはPNGファイルをディスクに出力するよりも効率的です。 ffmpegによるライブエンコーディングは簡単ではないようですが、ライブ入力ストリームを聴くためのffmpeg用のプログラムを作成しようとします。ライブ入力ストリームをリッスンし、これらの入力ストリームを自動的にエンコードするffmpegサーバープログラムを作成するための使用可能なC++の例はありますか?それとも、代わりに、画像のフレームをRTMPストリームとして直接Red5サーバーに送ることができますか? –
@all_by_graceおそらくffmpegにやや複雑なコマンドラインを書いていなくてもそれを行うことができます。あなたのGLプログラムでstdout(または他のパイプ)に "YUV4MPEG2"という形式のフレームを書き込むことができれば、このようなコマンドラインでビデオをエンコードしてRed5サーバーに送ることができます:ffmpeg -f yuv4mpegpipe -i pipe: vcodec libx264 -vpre normal -f flv rtmp:// localhost/live/testStreamこれは、フレームフォーマットに関するリンクです:http://kylecordes.com/2007/pipe-ffmpeg – vipw