Моя цель - потоковая передача изображений, снятых AVCpatureInput, с одного устройства iOS на другое через Bonjour.
Вот мой текущий метод:
1) Захват кадра с видеовхода
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
{
/*code to convert sampleBuffer into UIImage */
NSData * imageData = UIImageJPEGRepresentation(image,1.0);
[connection sendImage:image];
}
2) Передача по TCP-соединению (от http://mobileorchard.com/tutorial-networking-and-bonjour-on-iphone/)
// Send raw image over network
- (void)sendRawImagePacket:(UIImage *)image {
// Encode packet
NSData * imageData = UIImageJPEGRepresentation(image, 1.0);
NSData * rawPacket = [NSKeyedArchiver archivedDataWithRootObject:imageData];
// Write header: length of raw packet
int packetLength = [rawPacket length];
[outgoingDataBuffer appendBytes:&packetLength length:sizeof(int)];
[outgoingDataBuffer appendData:rawPacket];
// Try to write to stream
[self writeOutgoingBufferToStream];
}
3) Считайте данные и преобразуйте их обратно в изображение для отображения на UIImageView
* 1013 принимающего устройства.*
Однако, когда соединение становится прерывистым, UIImage выдает ошибку, что не может отрисовать JPEG.
Как мне передавать изображения через wifi?
Это нормально, если некоторые кадры пропускаются, мне нужен способ сказать UIImage, чтобы пропустить этот "пакет" неверных данных.
Спасибо!