【问题标题】:How to display MJPEG stream transmitted via UDP in a Mac OS-X application如何在 Mac OS-X 应用程序中显示通过 UDP 传输的 MJPEG 流
【发布时间】:2019-03-24 13:32:07
【问题描述】:
我有一个摄像头,它通过 wifi 将 mjpeg 帧作为 UDP 数据包发送,我想在我的 max os-x 应用程序中显示它。我的应用程序是用 Objective-C 编写的,我正在尝试使用 AVFoundation 类来显示实时流。使用 http get & post 请求控制摄像头。
我希望将相机识别为 AVCaptureDevice,因为我可以轻松显示来自不同 AVCaptureDevice 的流。由于流是通过 wifi 传输的,因此它不会被识别为 AVCaptureDevice。
有没有一种方法可以创建我自己的 AVCaptureDevice 来控制这个摄像头并显示视频流?
【问题讨论】:
标签:
objective-c
macos
avfoundation
【解决方案1】:
在对摄像头发送的数据包进行大量研究后,我得出结论,它不使用任何标准协议(例如 RTP)进行通信。我最终做的是对数据包进行逆向工程,以了解有关其内容的更多信息。
我确认它确实通过 UDP 数据包发送 jpeg 图像。发送一个 jpeg 需要多个 UDP 数据包。我在 UDP 端口上监听数据包并将它们组合成一个图像帧。在我有了一个框架之后,我从中创建了一个 NSImage 并将其显示在一个 NSImageView 中。效果很好。
如果有人感兴趣,相机是奥林巴斯 TG-4。我正在编写组件来控制设置、快门等。