【发布时间】:2015-07-19 11:53:44
【问题描述】:
我使用 emgu cv 2.4.10 创建了一个 RTSP 流查看器,最终将与 IP 摄像机一起使用。由于我还没有相机/s,我正在测试使用 VLC(Windows GUI)从视频文件创建流。
:sout=#duplicate{dst=rtp{sdp=rtsp://:8554/stream},dst=display} :sout-all :sout-keep
我正在本地主机上进行所有测试。
这是我的捕获代码:
private void ProcessFrame(object sender, EventArgs arg) {
try {
frame = _capture.QueryFrame();
pictureBox1.Image = frame.ToBitmap();
}
catch (Exception ex) {
MessageBox.Show(ex.Message.ToString());
}
}
使用此事件处理程序调用此方法:
_capture = new Capture("rtsp://localhost:8554/stream");
Application.Idle += ProcessFrame;
_capture.Start();
捕获被破坏,随机出现的“拖尾”总是发生在帧的下部:
我在网上看到其他几个人最近在去年 12 月报告了这个问题,但没有找到解决方案或对我有用:
- http://workingwithcomputervision.blogspot.co.uk/2012/06/issues-with-opencv-and-rtsp.html
- EMGU QueryFrame returns "streaky" Image over RTSP
- http://www.emgu.com/forum/viewtopic.php?f=7&t=4882&p=10110&hilit=rtsp#p10069
为了缩小问题的范围,我从命令行运行了 ffplay 并且捕获是完美的。我已经运行了另一个 VLC 实例来捕获 RTSP 流并且它显示完美。所以这显然是 open cv/emgu cv 中的一个问题。
一时兴起,我将 VLC 更改为使用 HTTP 流式传输。
:sout=#duplicate{dst=http{mux=ffmpeg{mux=flv},dst=:8080/stream},dst=display} :sout-all :sout-keep
这在我的代码中显示良好,但帧速率明显较低,不适用于我的应用程序。我非常感谢任何解决此问题的提示。谢谢。
【问题讨论】:
标签: opencv rtsp emgucv capture corruption