我需要您的帮助,因为我正试图通过gstreamer接收rtsp流,然后将其放入openCV中以处理视频。更糟糕的是,我将需要从openCV中获取它,但首先要考虑的是它。我对此很陌生,所以我对Gstreamer不太了解,所以我指望你们。一些简单的例子将是最好的,但我将使用已有的东西;)
提前致谢
最佳答案
您可以使用如下形式:
uridecodebin uri=rtsp:// name=uridec ! queue ! tee name=t ! queue ! <some encoder and muxer> ! filesink t. ! queue ! videoconvert ! "video/x-raw, format=BGR" ! appsink t. ! queue ! <restream>
在这种可能的解决方案中,您将在uridecodebin处进行接收和解码,这意味着要进行重新流式传输,您需要进行编码以及存储到文件的编码。如果这不是您想要的,则可以用rtspsrc替换uridecodebin,这将为您提供RTP流而不是解码的原始流。就像是:
rtspsrc ! rtpXdepay ! tee name=t ! ...
将X替换为您收到的格式(可以从您的应用程序动态完成)。现在,输出是一个编码流,您可以按照与上面的示例管道类似的方式使用它。
请注意,这些建议是假设您的rtsp输入是单个流(可能是视频),如果您想要视频和音频,则需要从uridecodebin或rtspsrc中添加2个分支。我还假设“rtspStream”是某种外部库/应用程序,您将使用它重新传输而不是使用gstreamer本身。无论如何,这应该给您一个想法。
关于c++ - Gstreamer rtsp流到appsink到openCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30028722/