我正在编写C ++计算机视觉应用程序,其要求的行为为采样 IP摄像机的视频,不播放其视频流。为了清楚起见,来自IP摄像机的
根据我对h264,IP视频流和使用libavcodec编写应用程序的了解,几年来,满足这些要求的最有效方法是两线程体系结构。一个线程的工作是不断消耗IP摄像机的帧,而第二个线程的工作是接受从第一个线程获取帧,并且仅当它们从摄像机请求图像时才将最新的视频帧提供给库客户端。满足库要求的关键是与库客户端应用程序分开运行的视频消耗线程。第一个线程需要旋转消耗帧,以维护相机通信的运行状况并维护库客户端的最新帧。
如果尝试通过一个线程尝试这些要求,并且两次视频采样之间的时间为5分钟(甚至5秒),则由于没有消耗该流,因此该视频流可能已从IP摄像机中消失,但是如果该流仍然有效的接收软件必须“流过去并丢弃”摄像机可能积压的任何帧。
基本上,这种“采样”行为不是IP摄像机通常的预期行为,也不是通常的视频流。缺少使用图片捕获界面的功能,为了支持此行为,软件需要使用“自旋线程”来消耗帧,因此,当库客户端请求时,可以使用最新生成的帧。没有支持视频采样接口的视频流的“模式”或“实时配置文件”。需要在软件中创建此程序,并带有一个“视频帧消耗线程”,该线程与主应用程序分开运行。这是正确的想法,还是我在某个地方错了?
我正在编写一个C ++计算机视觉应用程序,该应用程序具有采样IP摄像机视频而不播放其流的所需行为。为了明确起见,来自IP摄像机的流在时间上传递...