2011-06-01 89 views
0

我正在编写一个应用程序,使MJPEG流从iPhone到服务器。 我的问题是,我看到的JPEG是一个奇怪的彩色线集合。 如果需要更多信息,我可以发布特定的代码。从iPhone到服务器的MJPEG流

这些步骤如下:

  1. 通过AVCaptureVideoDataOutput
  2. 获取帧并将其转换为一个UIImage
  3. 从中
  4. 获取NSDataUIImageJPEGRepresentation()做一个NSMutableData,敷以“内容 - 图像类型:image/jpeg“和--BOUNDARY

现在我想将它们作为UDP数据包发送到我的服务器。我在iPhone上使用asyncudpsocket,在PC上使用小型java数据云服务器。第一个问题是mtu。 Asyncudpsocket说消息太长,如果nsdata大于9kb。 因此:

  1. 图象分成9KB块
  2. 给他们asyncudp插座
  3. 接受的TCP套接字对端口2020的PC上
  4. 收到DatagrammPackets并流式传输到连接的TCP套接字
  5. 打开Firefox与本地主机:2020年看

我测试过的每部分sepera的MJPEG特德,可以告诉他们没事。我可以在UIImageView中显示图像,我可以发送,接收和显示来自套接字的字节,并且可以将JPEG流式传输到服务器上,然后在Firefox中观看它们。

图像适合一个datagrammpacket,如果他们足够小(有时是这种情况), ,我可以看到头,字节和边界..但为什么我的MJPEG流仍然显示我一个奇怪的彩色图像(而不是黑色或白色图像,应该是这种情况)?

回答

0

我终于完成了这个应用程序。

我的问题是,我将DatagrammPacket.getBytes()首先转换为String并写入它,而不是writeBytes()。 现在我正在用OutputStream直接写入字节。