首页 文章

MJPEG从iPhone流向服务器

提问于
浏览
0

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

这些是步骤:

  • 通过 AVCaptureVideoDataOutput 获取帧

  • 将它们转换为 UIImage

  • 从中获取 NSData UIImageJPEGRepresentation()

  • 创建 NSMutableData 并使用"Content-Type: image/jpeg"和--BOUNDARY包装图像

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

  • 将图像拆分为9kb块

  • 使用asyncudp套接字发送它们

  • 在PC上接受端口2020上的TCP套接字

  • 接收DatagrammPackets并将它们流式传输到连接的TCP套接字

  • 使用localhost:2020打开Firefox并观看MJPEG

我've tested each part seperated and can tell that they'好的 . 我可以在 UIImageView 中显示图像,我可以从套接字发送,接收和显示字节,我可以通过serversocket流式传输JPEG并在Firefox中观看它们 .

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

1 回答

  • 0

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

    我的问题是我首先将 DatagrammPacket.getBytes() 转换为 String 而不是使用 writeBytes() 来编写它 . 现在我用 OutputStream 直接写字节 .

相关问题