OpenCV摄像头视频数据采集与RTSP和RTMP直播 (转)

最近比较闲,因此研究了一下通过OpenCV采集摄像头数据,并同时将视频流数据推送到RTSP和RTMP。

RTSP服务采用的事开源的LIVE555(需要自己修改和实现部分代码)。

RTMP服务采用的是开源的CRtmpServer。


具体的实现细节我就不说了,大概的步骤如下:

1. OpenCV采集摄像头的一帧数据(cvQueryFrame函数)

2. FFmpeg编码该帧为H264和FLV流数据

3. 推送H264到LIVE555(自己实现),同时通过推送FLV流到CRtmpServer(通过FFmpeg)


因为CRtmpServer和LIVE555都是开源的,网上有很多资料;并且FFmpeg的H264和FLV编码、H264和FLV流推送这两个功能之前已经在其他项目总已经实现过,而且OpenCV在网上也有很多关于摄像头数据采集的资料,因此实现过程并不复杂。


但是在接收RTSP和RTMP流,并播放时总感觉比较卡,特别是RTMP感觉非常明显。视频老是在缓冲。

最后发现是OpenCV的cvQueryFrame非常耗时间:

[cpp] view plaincopy

在CODE上查看代码片

派生到我的代码片

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjjxg.html