MJPEG Stream с iPhone на сервер - PullRequest
0 голосов
/ 01 июня 2011

Я пишу приложение для создания MJPEG-Stream с iPhone на сервер. Моя проблема в том, что JPEG-файлы, которые я вижу, - это странная коллекция цветных линий. Я могу опубликовать конкретный код, если требуется дополнительная информация.

Это шаги:

  1. Получить кадры через AVCaptureVideoDataOutput
  2. Конвертировать их в UIImage
  3. Получить NSData UIImageJPEGRepresentation() из него
  4. Создайте NSMutableData и оберните изображение с помощью «Content-Type: image / jpeg» и --BOUNDARY

Теперь я хочу отправить их в виде пакетов UDP на мой сервер. Я использую asyncudpsocket на iPhone и небольшой сервер Java Datagramm на ПК. Первая проблема - mtu. Asyncudpsocket говорит, что сообщение слишком длинное, если nsdata больше 9 КБ. Поэтому:

  1. Разделить изображение на куски по 9 КБ
  2. Отправьте их с помощью asyncudp сокета
  3. Принять TCP-сокет на порте 2020 на ПК
  4. Получение пакетов DatagrammPackets и потоковая передача их на подключенный сокет TCP
  5. Откройте Firefox с localhost: 2020 и посмотрите MJPEG

Я проверил каждую отдельную часть и могу сказать, что они в порядке. Я могу показывать изображения в формате UIImageView, я могу отправлять, получать и показывать байты из сокета, а также могу транслировать файлы JPEG через сокет сервера и просматривать их в Firefox.

Изображение помещается в один пакет данныхграммы, если они достаточно малы (иногда это так), и я вижу заголовок, байты и границу ... но почему мой поток MJPEG все еще показывает мне странное цветное изображение (вместо черного или белого изображения, которое должно иметь место)?

1 Ответ

0 голосов
/ 02 июня 2011

Я наконец-то закончил с этим приложением.

Моя проблема заключалась в том, что я сначала преобразовал DatagrammPacket.getBytes() в String и записал его, а не writeBytes().Теперь я пишу байты непосредственно с OutputStream.

...