通过Windows上的Live555为实时OpenCV H.264流提供服务

时间:2011-07-05 22:15:25

标签: c++ 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。如何为Live555提供H.264编码的CvCapture?似乎没有一种直截了当的方式将字节流从一个字节流提供给另一个字节流,或者我可能遗漏了一些东西。

1 个答案:

答案 0 :(得分:3)

我确实没有一种直截了当的方式;当然,在任何少于几百行的代码中都不会发生任何事情。

我假设您想要使用按需RTSP服务器(这是服务器只是坐在那里,等待客户端连接,然后在客户端建立时开始流式传输连接并提出请求)?如果是,this item in the Live555 FAQ applies

However, Live555 is a weird (possibly misguided?) library,不幸的是,它比这复杂得多。 Live555使用单个操作线程和事件循环,因此你必须做的是将原始字节流推送到缓冲区或队列中,然后在你的subsession类中用于流式传输H.264,你就可以了检查并查看队列中是否有可用数据,如果有,请将其传递。如果没有,请在几毫秒内安排另一次检查。在将它们传递给live555之前,您还需要剥离任何NALU标识符。