Что ж, если вы хотите, чтобы ваш клиент видел поток 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]
...
ПРИМЕЧАНИЕ. Как сказал Эргуша в ответе, после поля Content-length у вас должна быть пустая строка.
Кстати, а почему бы не перенаправить клиента прямо в поток mjpeg?
Например, вы можете использовать http://ipcam/mjpg/video.mjpg IP-камеры AXIS.
Если вам просто нужно изображение через HTTP, вы должны установить правильный заголовок и тип содержимого MIME
изображение / JPEG. Чтобы декодировать изображение, вы должны получить байтовые данные и получить кодировку jpeg. Затем вам нужно будет декодировать JPEG, чтобы получить изображение в определенном формате (что-то вроде yuv420p, я думаю). Я проверил свою ip-камеру, и ее поток не закодирован в base64.
Уточняйте ваши потребности, я постараюсь помочь больше.
my2c
EDIT:
Ну, я полагаю, вы делаете что-то вроде:
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 (как тот, который я описал в начале моего сообщения ...) 1023 *
M2C