HTML5ビデオクライアントへのリアルタイムHTTPストリーミングへの最良のアプローチ
node.jsを使用してffmpegのリアルタイム出力をHTML5クライアントにストリーミングするための最良の方法を理解しようとするのは本当に大変です。この領域には多くの変数があり、この分野では多くの経験がないためです。さまざまな組み合わせを試すために何時間も費やした。 私のユースケースは: 1)IPビデオカメラRTSP H.264ストリームはFFMPEGによって取得され、ノードの次のFFMPEG設定を使用してmp4コンテナーに再多重化され、STDOUTに出力されます。これは最初のクライアント接続でのみ実行されるため、部分的なコンテンツ要求がFFMPEGを再度生成することはありません。 liveFFMPEG = child_process.spawn("ffmpeg", [ "-i", "rtsp://admin:12345@192.168.1.234:554" , "-vcodec", "copy", "-f", "mp4", "-reset_timestamps", "1", "-movflags", "frag_keyframe+empty_moov", "-" // output to stdout ], {detached: false}); 2)私はノードhttpサーバーを使用してSTDOUTをキャプチャし、クライアントの要求に応じてそれをクライアントにストリーミングします。クライアントが最初に接続するときに、上記のFFMPEGコマンドラインを生成してから、STDOUTストリームをHTTP応答にパイプします。 liveFFMPEG.stdout.pipe(resp); また、ストリームイベントを使用してFFMPEGデータをHTTP応答に書き込みましたが、違いはありません。 xliveFFMPEG.stdout.on("data",function(data) { resp.write(data); } 次のHTTPヘッダーを使用します(これは、事前に記録されたファイルをストリーミングするときにも使用され、機能します)。 var total = 999999999 // fake a large file var partialstart = 0 var partialend …