OpenCV IP摄像机应用程序在访问单元中丢失了[h264 @ 0xxxxx]丢失的图片

tod*_*tod 9 c++ opencv ffmpeg h.264 ip-camera

我在cpp中有一个opencv应用程序.

它使用opencv中的简单结构捕获视频流并将其保存到视频文件中.

它与我的网络摄像头完美配合.

但是,它可能在大约十秒后崩溃,而我运行它来捕获来自IP Camara的流.

我的编译命令是:

g++ -O3 IP_Camera_linux.cpp -o IP_Camera `pkg-config --cflags --libs opencv`
Run Code Online (Sandbox Code Playgroud)

来自IP cam的我的流被访问如下:

const string Stream = "rtsp://admin:xxxx@192.168.0.101/";
Run Code Online (Sandbox Code Playgroud)

它运行完美,显示视频并保存,直到显示的视频冻结并且应用程序崩溃.虽然终端上的错误消息是:

[h264 @ 0x15e6f60] error while decoding MB 59 31, bytestream (-20)
[h264 @ 0x15e8200] error while decoding MB 61 27, bytestream (-3)
[h264 @ 0x109c880] missing picture in access unit
[h264 @ 0x109c000] no frame!
Run Code Online (Sandbox Code Playgroud)

根据我的理解,上述错误消息中的第二行可能有一些事情要做,但实际上并没有使应用程序崩溃.最后两行可能是原因还是原因?

有帮助吗?

tod*_*tod 4

经过大量的点击和尝试后得到了解决方案。只需更改一下流地址就可以了。

从:

const string Stream = "rtsp://admin:xxxx@192.168.0.101/";
Run Code Online (Sandbox Code Playgroud)

到:

const string Stream = "rtsp://admin:xxxx@192.168.0.101/ch1-s1?tcp";
Run Code Online (Sandbox Code Playgroud)

不知道,它做了什么改变?

但它工作完美!

甚至还有以下形式的普遍警告:

[h264 @ 0x15e6f60] error while decoding MB 59 31, bytestream (-20)
[h264 @ 0x15e8200] error while decoding MB 61 27, bytestream (-3) 
Run Code Online (Sandbox Code Playgroud)

消失了。

无论如何,如果有人能解释其背后的逻辑原因,我将不胜感激。

信用