在Windows上通过Live555服务一个实时的OpenCV H.264流



全新体验!正如标题所说,我正在尝试使用从网络摄像头捕获的H.264从OpenCV通过Live555提供流。

我试过这样做:

 #define LOCALADDRESS "rtsp://localhost:8081"   // Address media is served
 #define FOURCCCODEC CV_FOURCC('H','2','6','4') // H.264 codec
 #define FPS 25                                // Frame rate things run at
 m_writer = cvCreateVideoWriter(LOCALADDRESS, FOURCCCODEC, FPS, cvSize(VIDEOWIDTH, VIDEOHEIGHT));

作为读取RTSP流,操作类似:

CvCapture *capture = cvCreateFileCapture(LOCALADDRESS);

不起作用,所以我转向Live555。我如何提供H.264编码的CvCapture由Live555服务?似乎没有一种直接的方式来从一个字节流到另一个字节流,或者我可能错过了一些东西。

我知道真的没有直接的方法;当然,在少于几百行的代码中不会发生任何事情。

我假设你想使用按需RTSP服务器(这是服务器只是坐在那里,等待客户端连接,然后当客户端建立连接并发出请求时,它开始流)?如果是,Live555常见问题解答中的这一项适用。

然而,Live555是一个奇怪的(可能是被误导的?)库,所以不幸的是它比这更复杂。Live555使用带有事件循环的单线程操作,因此您要做的是将原始字节流推入缓冲区或队列,然后在用于流式传输H.264的子会话类中,您将检查并查看队列中是否有可用数据,如果有,则将其传递下去。如果没有,请在几毫秒内安排另一次检查。在将NALU标识符传递给live555之前,还需要去掉它们。

相关内容

  • 没有找到相关文章

最新更新