【发布时间】:2011-06-01 16:34:57
【问题描述】:
我正在编写一个应用程序来制作从 iPhone 到服务器的 MJPEG-Stream。 我的问题是我看到的 JPEG 是一组奇怪的彩色线条。 如果需要更多信息,我可以发布具体代码。
这些是步骤:
- 通过
AVCaptureVideoDataOutput获取帧 - 将它们转换为
UIImage - 从中获取
NSDataUIImageJPEGRepresentation() - 创建一个
NSMutableData并使用“Content-Type: image/jpeg”和--BOUNDARY 包装图像
现在我想将它们作为 UDP 数据包发送到我的服务器。我在 iPhone 上使用 asyncudpsocket,在 PC 上使用小型 java datagrammserver。第一个问题是 mtu。如果nsdata 大于 9kb,Asyncudpsocket 会说消息太长。
因此:
- 将图像分割成 9kb 的块
- 使用 asyncudp 套接字发送它们
- 在 PC 上的 2020 端口上接受 TCP 套接字
- 接收 DatagrammPackets 并将它们流式传输到连接的 TCP Socket
- 使用 localhost:2020 打开 Firefox 并观看 MJPEG
我已经单独测试了每个部分,可以看出它们没问题。我可以在UIImageView 中显示图像,我可以发送、接收和显示来自套接字的字节,我可以通过 serversocket 流式传输 JPEG 并在 Firefox 中观看它们。
如果图像足够小(有时是这种情况),则图像可以放入一个数据包中, 我可以看到标题、字节和边界.. 但是为什么我的 MJPEG 流仍然向我显示一个奇怪的彩色图像(而不是黑白图像,应该是这种情况)?
【问题讨论】:
标签: iphone sockets stream uiimage jpeg