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

我已经尝试过类似的方法:

 #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服务器(这是服务器正坐在那里,等待客户端连接的地方,然后在客户端建立连接并发出请求时开始流式传输)?如果是这样,this item in the Live555 FAQ applies

However, Live555 is a weird (possibly misguided?) library,所以不幸的是比这复杂一点。 Live555使用带有事件循环的单个操作线程,因此您要做的就是将原始字节流推入缓冲区或队列中,然后在子 session 类中传输H.264,您将检查并查看是否队列中有可用数据,如果有,将其传递。如果不是,请在几毫秒内安排另一个检查。您还需要剥离所有NALU标识符,然后再将其传递给live555。

10-08 17:28