クライアントに mjpeg ストリームを表示させたい場合は、http 応答全体を送信する必要があります。ブラウザのような HTTP クライアントや VLC のようなメディア プレーヤーには、次のような mjpeg ストリームが必要です。
HTTP/1.1 200 OK
Content-Type: multipart/x-mixed-replace; boundary=myboundary
--myboundary
Content-Type: image/jpeg
Content-length: 12345
[image 1 encoded jpeg data]
--myboundary
Content-Type: image/jpeg
Content-length: 45678
[image 2 encoded jpeg data]
...
注: Ergousha が回答で述べたように、Content-length フィールドの後に空の行が必要です。
ところで、クライアントを直接 mjpeg ストリームにリダイレクトしてみませんか?
たとえば、 http://ipcam/mjpg/video.mjpg AXIS IP カメラを使用できます。
HTTP 経由で画像が必要な場合は、正しいヘッダーと MIME content-type image/jpeg を設定する必要があります。画像をデコードするには、バイトデータを取得する必要があり、jpeg エンコーディングを取得します。次に、jpeg をデコードして、特定の形式 (yuv420p のようなもの) の画像を取得する必要があります。IP カメラを確認しましたが、そのストリームは base64 でエンコードされていないと思います。
あなたのニーズを正確に、私はもっと助けようとします。
my2c
編集:
さて、私はあなたが次のようなことをすると思います:
client : connect to proxy,
get example.com/camera1.mjpg,
while not the end
recv
yourproxy : wait connection
connect to camera,
get 10.0.0.123/camera1.mjpg
while not the end
recv buffer
copy buffer
send buffer to client
つまり、正しいヘッダーをクライアントに送信する必要があります。Wireshark のようなツールを使用してパケットをスパイし、クライアントが HTTP GET を発行した後、正しい MJPEG ストリームをクライアントに送信するようにします (投稿の冒頭で説明したようなものです ...)。
m2c