在Adobe AIR中显示RTSP流



我正在进行一个项目,该项目涉及使用Adobe AIR显示IP摄像机的视频馈送。我知道Flash本机不支持RTSP协议,因此我正在评估解决此问题的所有可能途径:

  1. 使用Adobe Media Server将传入的RTSP流转换为RTMP,然后直接使用Flash API(NetConnectionNetStream)。

  2. 编写一个自定义类来获取、解码和显示adobeAIR中的流。[由于网络信息不足,我无法确认这是否可能]

  3. 放弃RTSP,转而获取JPEG/MJPEG图像序列,并相对容易地在AIR中显示它们,但实时性能令人怀疑。[由于IP相机的JPEG/MJPEG刷新间隔和AIR中的相同间隔]

  4. 使用DirectShow Video Source Filter for JPEG and M-JPEG IP Cameras来处理JPEG/MJPEG流,创建一个虚拟网络摄像头设备(过滤器会自动执行此操作),然后使用Camera类在AIR中显示视频源。

  5. 使用网络摄像头7-一款专为许多相机品牌/型号处理RTSP、JPEG/MJPEG和其他流协议的软件。它在创建虚拟摄像头的系统中安装了一个驱动程序,然后所有其他应用程序都可以用作普通的网络摄像头。不幸的是,这个软件有缺陷,经常变得不稳定(可能只是我的特定相机型号),甚至可能崩溃。

有没有更好、更简单的选择可能不需要任何第三方软件?

编辑:

万一其他人遇到同样的问题:根据RudolfsBundulis的建议,我决定编写一个NativeProcess(ANE),它使用FFMPEG来获取RTSP流数据,对其进行代码转换,并将其提供给Flash播放器。你可能想看看这些更具体的步骤:

http://www.purplesquirrels.com.au/2013/02/converting-video-with-ffmpeg-and-adobe-air/https://www.youtube.com/watch?v=6N7eN9wvAGQ

采用选项2中描述的路线-编写一个使用FFMpeg处理RTSP流的Adobe AIR本地扩展(ANE),对其进行解码,并将RGB数据传回AIR进行渲染。如果您需要跨平台功能,最困难的部分将是编译FFmpeg,然而,由于您提到的DirectShow只是Windows,那么我认为您已绑定到Windows。Zeranoe为Windows提供了预构建的FFmpeg库,Stackoverflow有很多关于使用FFmpeg解码流的主题,然后你只需要回调到AIR就可以了。

最新更新