我计划使用 vlc 库来解码基于 H.264 的 RTSP 流并从中提取每一帧(将 vlc 图片转换为 IplImage)。我对 vlc 代码进行了一些探索,并得出结论,有一个名为 libvlc_video_take_snapshot 的函数执行类似的操作。然而,在这种情况下捕获的帧保存在硬盘上,由于我的应用程序的实时性,我希望避免这种情况。什么是最好的方法来做到这一点?是否可以不修改 vlc 源代码(如果可能,我想避免重新编译)。我听说过 vmem 等,但无法真正弄清楚它的作用以及如何使用它。
图片_t 结构是库内部的,我们如何才能访问它。等待你的回复。
PS 早些时候我尝试使用 FFMPEG 执行此操作,但是 ffmpeg 库在 Windows 上解码基于 H.264 的 RTSP 流时存在很多问题,因此我不得不切换到 VLC。
问候, 索拉布·甘地
我正在将 Live555 流媒体用于记录和重新传输来自 IP 摄像机的 RTSP 流的应用程序。为此,我使用 openRTSP 进行录制,并使用 live555 代理服务器重新传输摄像机流。对于一些摄像机,我们面临一个奇怪的问题,其中摄像机记录成功发生,但是 live555 代理服务器无法为同一摄像机流生成新流(详细输出转储中没有失败的迹象,但是代理服务器生成的 rtsp url 无法被 rtsp 客户端解码)。由于我对 live555 代理服务器的详细信息一无所知,因此我一直无法解决这个问题。我尝试使用 VLC 流式传输相同的相机流,效果很好。这可能有什么问题。我特此附上详细输出以供参考。
E:\...\live\proxyServer>live555ProxyServer.exe -V rtsp://10.17.10.67/ch0_unicast_firststream
LIVE555 Proxy Server
(LIVE555 Streaming Media library version 2012.05.17)
Opening connection to 10.17.10.67, port 554...
RTSP stream, proxying the stream "rtsp://10.17.10.67/ch0_unicast_firststream"
Play this stream using the URL "rtsp://10.17.1.150/proxyStream"
(We use port 8000 for optional RTSP-over-HTTP tunneling.)
...remote connection opened
Sending request: DESCRIBE rtsp://10.17.10.67/ch0_unicast_firststream RTSP/1.0
CSeq: 2
User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2012.05.17)
Accept: application/sdp
Received …Run Code Online (Sandbox Code Playgroud) 任何人是否知道在OpenCV的支持的任何功能8U,以16U转换?我尝试过cvConvertImage,cvConvertScale但它们都只适用于8U图像格式.
我正在使用带有代码块的OpenCV 2.1(mingw下的gcc).在我的代码中,我正在尝试(出于某种理智的原因)直接访问IplImage数据结构中的imagedata.请参阅代码段以获取更多详细信息:
int main(void)
{
IplImage* test_image = cvLoadImage("test_image.bmp",CV_LOAD_IMAGE_GRAYSCALE);
int mysize = test_image->height * test_image->widthStep;
char* imagedata_ptr = NULL;
int i = 0;
imagedata_ptr = test_image->imageData;
char* temp_buff = (char *)malloc(sizeof(mysize));
memcpy(temp_buff,imagedata_ptr,mysize);
free(temp_buff);
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,它崩溃了.在调试模式下运行它会生成SIGTRAP是由于堆损坏.起初我怀疑这可能是编译器相关的问题,因此尝试在Visual Studio中运行相同的代码.但它仍然崩溃.这就是我认为它可能是OpenCV相关问题的原因.
注意:没有其他程序打开的实例,这是我正在运行的唯一代码,此处没有执行任何线程等.
等待你的评论.
问候,
Saurabh Gandhi