【问题标题】:MJPEG Stream from iPhone to Server从 iPhone 到服务器的 MJPEG 流
【发布时间】:2011-06-01 16:34:57
【问题描述】:

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

这些是步骤:

  1. 通过AVCaptureVideoDataOutput获取帧
  2. 将它们转换为UIImage
  3. 从中获取NSDataUIImageJPEGRepresentation()
  4. 创建一个NSMutableData 并使用“Content-Type: image/jpeg”和--BOUNDARY 包装图像

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

  1. 将图像分割成 9kb 的块
  2. 使用 asyncudp 套接字发送它们
  3. 在 PC 上的 2020 端口上接受 TCP 套接字
  4. 接收 DatagrammPackets 并将它们流式传输到连接的 TCP Socket
  5. 使用 localhost:2020 打开 Firefox 并观看 MJPEG

我已经单独测试了每个部分,可以看出它们没问题。我可以在UIImageView 中显示图像,我可以发送、接收和显示来自套接字的字节,我可以通过 serversocket 流式传输 JPEG 并在 Firefox 中观看它们。

如果图像足够小(有时是这种情况),则图像可以放入一个数据包中, 我可以看到标题、字节和边界.. 但是为什么我的 MJPEG 流仍然向我显示一个奇怪的彩色图像(而不是黑白图像,应该是这种情况)?

【问题讨论】:

    标签: iphone sockets stream uiimage jpeg


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 2011-06-23
      相关资源
      最近更新 更多