C++ 在Windows上通过Live555为live OpenCV H.264流提供服务

C++ 在Windows上通过Live555为live OpenCV H.264流提供服务,c++,opencv,h.264,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 //

这是全新的!正如标题所说,我正在尝试使用从网络摄像头捕获的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使用带有事件循环的单线程操作,因此您需要做的是将原始ByTestStream放入缓冲区或队列中,然后在流式H.264的子会话类中,检查并查看队列中是否有可用数据,如果有,将其传递。如果没有,请在几毫秒后安排另一次检查。在将NALU标识符传递给live555之前,您还需要去掉它们