C++ OpenCV VideoWriter能否支持将帧写入RTSP?

C++ OpenCV VideoWriter能否支持将帧写入RTSP?,c++,opencv,ffmpeg,video-streaming,C++,Opencv,Ffmpeg,Video Streaming,我使用的是带IP摄像头的OpenCV,我可以使用RTSP协议成功读取视频流,如下所示: VideoCapture capture = new VideoCapture(); String url = "rtsp://admin:123456@192.168.10.3:554/Streaming/Channels/101?transportmode=unicast"; capture.open(url); 但是现在我想用同样的方法创建一个带有VideoWriter的writer,并将帧写入输出流

我使用的是带IP摄像头的OpenCV,我可以使用RTSP协议成功读取视频流,如下所示:

VideoCapture capture = new VideoCapture();
String url = "rtsp://admin:123456@192.168.10.3:554/Streaming/Channels/101?transportmode=unicast";
capture.open(url);
但是现在我想用同样的方法创建一个带有
VideoWriter
的writer,并将帧写入输出流

这可能吗?如果是的话,怎么办?如何为流创建文件名,以及如何在另一端获取流,从IP camera到OpenCV也是如此

open(String filename, int fourcc, double fps, Size frameSize, boolean isColor)

这在GStreamer中是可能的。Opencv捕获主要使用FFMPEG、GStreamer。两种方法都可以捕获流。对于WideowWriter,您也可以同时使用这两种方法。FFMPEG仅可用于生成视频文件。GSPULTER可用于通过视频流将C++结果流到C++ OpenCV程序之外。p> GStreamer适用于Visual Studio 2019,适用于opencv 4.2。在Linux上安装更容易

这很容易,但有很大的错误空间。Gstreamer管道工程。此处提供了安装的扩展说明

我使用3) -OpenCV源代码OpenCV-4.2.0 -OpenCV源代码OpenCV_contrib-4.2.0 -Cmake 3.17发布候选3,这很重要。 我使用了MSVC GStreamer的开发和运行时安装程序 Gstreamer 1.16.2运行时安装程序 Gstreamer 1.16.2开发安装程序 以下步骤是OpenCV从源代码构建和OpenCV安装的常见步骤。此外,需要在cmake配置期间添加这些资源。

现在在VisualStudio2019中构建由CMAKE生成的OpenCV项目。最后一件重要的事情是设置环境变量以查找GStreamer运行时。进入系统变量路径:添加

  • xxx\1.0\x86\u 64\bin
  • xxx\1.0\x86\u 64\lib
  • xxx\1.0\x86\U 64\lib\gstreamer-1.0
您需要将VideoWriter与gstreamer管道一起使用

VideoWriter writer( "appsrc ! videoconvert ! videoscale ! video/x-raw,width=320,height=240 ! theoraenc ! oggmux ! tcpserversink host=192.168.0.116 port=8080 recover-policy=keyframe sync-method=latest-keyframe unit-format=buffers units-max=1 buffers-max=0 sync=true ",
        0,
        5,
        Size(320, 240),
        true);

您的IP摄像头用作服务器,向客户端传送帧。如果您已经设置了另一台服务器(即ffserver),它接受来自客户端的帧,那么是;您可以使用
VideoWriter
将帧写入传出url。谢谢!你能告诉我,ffserver是如何设置和使用OpenCV的吗?难道你不想将OpenCV捕获流式传输到视频中吗?从你的问题来看,你已经拥有了你所需要的大部分块?@GPPK是的,但仍然无法将视频流出来,我可以接收流,但现在我需要将要发送到另一端的流馈送。我认为您需要在问题中更清楚地说明,在OpenCV中处理图像后,您希望通过新的RTSP流将图像数据发送回。谢谢!虽然我已经实现了该功能,但您的解释很好,并且放弃投票,让其他人知道答案是有帮助的。