我正在使用AVFoundation框架捕获视频,参考了苹果开发文档 http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_MediaCapture.html%23//apple_ref/doc/uid/TP40010188-CH5-SW2。
以下是我的做法:
1.创建了videoCaptureDevice
;
2.创建了AVCaptureDeviceInput
并将之前创建的videoCaptureDevice
设置给它;
3.创建了AVCaptureVideoDataOutput
并实现了代理;
4.创建了AVCaptureSession
——将输入设为AVCaptureDeviceInput
,将输出设为AVCaptureVideoDataOutput
。
5.在AVCaptureVideoDataOutput
的代理方法中:
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
我得到了CMSampleBuffer,并将其转换为UIImage,然后测试使用UIImageView打印UIImage。
[self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES];
一切都进行得很顺利,直到这一步......
我的问题是,我需要通过UDP套接字发送视频帧。尽管我尝试了不好的方法,即UIImage转换为NSData并通过UDP Pocket发送,但视频处理中出现了很大的延迟。主要问题在于UIImage转NSDate。
所以请给我解决方案:
1)有没有办法将CMSampleBuffer或CVImageBuffer转换为NSData?
2)是否有类似音频队列服务和视频队列来存储UIImage,并进行UIImage到NSDate的转换和发送?
如果我走错了算法,请指正我走向正确的方向。
提前感谢您