Я пишу приложение для создания MJPEG-Stream с iPhone на сервер.
Моя проблема в том, что JPEG-файлы, которые я вижу, - это странная коллекция цветных линий.
Я могу опубликовать конкретный код, если требуется дополнительная информация.
Это шаги:
- Получить кадры через
AVCaptureVideoDataOutput
- Конвертировать их в
UIImage
- Получить
NSData
UIImageJPEGRepresentation()
из него
- Создайте
NSMutableData
и оберните изображение с помощью «Content-Type: image / jpeg» и --BOUNDARY
Теперь я хочу отправить их в виде пакетов UDP на мой сервер. Я использую asyncudpsocket на iPhone и небольшой сервер Java Datagramm на ПК. Первая проблема - mtu. Asyncudpsocket говорит, что сообщение слишком длинное, если nsdata
больше 9 КБ.
Поэтому:
- Разделить изображение на куски по 9 КБ
- Отправьте их с помощью asyncudp сокета
- Принять TCP-сокет на порте 2020 на ПК
- Получение пакетов DatagrammPackets и потоковая передача их на подключенный сокет TCP
- Откройте Firefox с localhost: 2020 и посмотрите MJPEG
Я проверил каждую отдельную часть и могу сказать, что они в порядке. Я могу показывать изображения в формате UIImageView
, я могу отправлять, получать и показывать байты из сокета, а также могу транслировать файлы JPEG через сокет сервера и просматривать их в Firefox.
Изображение помещается в один пакет данныхграммы, если они достаточно малы (иногда это так),
и я вижу заголовок, байты и границу ... но почему мой поток MJPEG все еще показывает мне странное цветное изображение (вместо черного или белого изображения, которое должно иметь место)?